summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/metapost/featpost/example/standard/inductionbob.mp
blob: 19b47c44105bd5593ecc6f56d15031b140edb31b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
% inductionbob.mp
% L. Nobre G.
% 2003

%input featpost3Dplus2D;

verbatimtex
\documentclass{article} 
\usepackage{beton,concmath,ccfonts} 
\begin{document} 
etex

numeric altura;
altura = 0.35;

f := (4,6,1);
Spread := 200;
LightSource := f+blue;
ShadowOn := false;

def spirala( expr TheVal ) = 
  begingroup
    numeric par[], cred, cgre, cblu, param[];
    par1 = 4.5;
    par2 = 0.3;
    par3 = 0.2*par1;
    param1 = par1*360*TheVal;
    cred = -par2*sind( param1 );
    cgre = ( TheVal - 1.0 )*par3;
    cblu = par2*cosd( param1 );
    ( (cred,cgre,cblu+altura) )
  endgroup 
enddef;

def spiralb( expr TheVal ) = 
  begingroup
    numeric par[], cred, cgre, cblu, param[];
    par1 = 4.0;
    par2 = 0.3;
    par3 = 0.2*par1;
    param1 = par1*360*TheVal;
    cred = par2*sind( param1 );
    cgre = TheVal*par3;
    cblu = -par2*cosd( param1 );
    ( (cred,cgre,cblu+altura) )
  endgroup 
enddef;

def innerloop( expr TheVal ) = 
  begingroup
    numeric par[], cred, cgre, cblu, param[];
    par1 = 8;
    par2 = 0.2;
    param1 = par1+(360-2*par1)*TheVal;
    cred = par2*cosd( param1 );
    cgre = 0;
    cblu = par2*sind( param1 );
    ( (cred,cgre,cblu+altura) )
  endgroup 
enddef;

beginfig(1);
  numeric xouterdev, xinnerdev, scalecir, scalelab;
  color startp, begp, endp, finisp, ap, bp, cp, dp, ep, fp, gp;
  pair startz, begz, endz, finisz, az, bz, cz, dz, ez, fz, gz;
  path innerpath, outerpath, primarcir, secondcir;
  pen mypen;
  scalecir = 3cm;
  scalelab = 4;
  xouterdev = 1.4;
  xinnerdev = 1.0;
  mypen = pencircle scaled 4pt;
  startp = spirala( 0 );
  finisp = spiralb( 1 );
  begp = innerloop( 0 );
  endp = innerloop( 1 );
  ap = ( xouterdev, Y(startp), Z(startp) );
  bp = ( xouterdev, Y(startp), Z(finisp) );
  dp = ( xouterdev, Y(finisp), Z(finisp) );
  cp = 0.5[bp,dp]; 
  ep = ( xinnerdev, Y(begp), Z(begp) ); 
  fp = ( xinnerdev, Y(endp), Z(endp) );
  gp = 0.5[ep,fp];
  startz = rp( startp );
  finisz = rp( finisp );
  begz = rp( begp );
  endz = rp( endp );
  az = rp( ap );
  bz = rp( bp );
  cz = rp( cp );
  dz = rp( dp );
  ez = rp( ep );
  fz = rp( fp );
  gz = rp( gp );
  emptyline( false, 1, black, 0.7background, 700, 0.8, 2, spirala );
  outerpath = startz--az--bz--dz--finisz;
  primarcir = fullcircle scaled scalecir shifted cz;
  emptyline( false, 0.8, black, 0.4*(red+background), 150, 0.8, 2, innerloop );
  innerpath = begz--ez--fz--endz;
  secondcir = fullcircle scaled scalecir shifted gz;
  draw innerpath withpen mypen;
  unfill secondcir;
  draw secondcir withpen mypen;
  label( btex $V_S$ etex scaled scalelab, gz);
  emptyline( true, 1, black, 0.7background, 700, 0.8, 2, spiralb );
  draw outerpath withpen mypen;
  unfill primarcir;
  draw primarcir withpen mypen;
  label( btex $V_P$ etex scaled scalelab, cz );
endfig;

verbatimtex 
\end{document} 
etex

end;