home *** CD-ROM | disk | FTP | other *** search
MacBinary | 1991-10-17 | 7.4 KB | [TEXT/????] |
open in:
MacOS 8.1
|
Win98
|
DOS
browse contents |
view JSON data
|
view as text
This file was processed as: MacBinary
(archive/macBinary).
id metadata |
---|
key | value |
---|
macFileType | [TEXT] |
macFileCreator | [????] |
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 06 61 72 63 73 2e 63 | 00 00 00 00 00 00 00 00 |..arcs.c|........|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 3f 3f 3f | 3f 00 00 00 00 00 00 00 |.TEXT???|?.......|
|00000050| 00 00 00 00 00 1a f3 00 | 00 01 e2 a5 23 70 ba a5 |........|....#p..|
|00000060| 23 70 ba 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |#p......|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 30 a3 00 00 |........|....0...|
|00000080| 23 69 6e 63 6c 75 64 65 | 20 22 76 6f 67 6c 2e 68 |#include| "vogl.h|
|00000090| 22 0d 0d 23 69 66 64 65 | 66 09 54 43 0d 0d 65 78 |"..#ifde|f.TC..ex|
|000000a0| 74 65 72 6e 09 64 6f 75 | 62 6c 65 09 63 6f 73 28 |tern.dou|ble.cos(|
|000000b0| 29 3b 0d 65 78 74 65 72 | 6e 09 64 6f 75 62 6c 65 |);.exter|n.double|
|000000c0| 09 73 69 6e 28 29 3b 0d | 0d 23 65 6c 73 65 20 0d |.sin();.|.#else .|
|000000d0| 0d 23 69 6e 63 6c 75 64 | 65 20 3c 6d 61 74 68 2e |.#includ|e <math.|
|000000e0| 68 3e 0d 0d 23 65 6e 64 | 69 66 0d 0d 73 74 61 74 |h>..#end|if..stat|
|000000f0| 69 63 20 69 6e 74 09 6e | 73 65 67 73 20 3d 20 33 |ic int.n|segs = 3|
|00000100| 32 3b 0d 0d 2f 2a 0d 20 | 2a 20 61 72 63 70 72 65 |2;../*. |* arcpre|
|00000110| 63 69 73 69 6f 6e 0d 20 | 2a 0d 20 2a 09 73 65 74 |cision. |*. *.set|
|00000120| 73 20 74 68 65 20 6e 75 | 6d 62 65 72 20 6f 66 20 |s the nu|mber of |
|00000130| 73 65 67 6d 65 6e 74 73 | 20 69 6e 20 61 6e 20 61 |segments| in an a|
|00000140| 72 63 20 6f 72 20 63 69 | 72 63 6c 65 2e 0d 20 2a |rc or ci|rcle.. *|
|00000150| 09 2d 20 6f 62 73 6f 6c | 65 74 65 20 66 75 6e 63 |.- obsol|ete func|
|00000160| 74 69 6f 6e 2e 0d 20 2a | 2f 0d 76 6f 69 64 0d 61 |tion.. *|/.void.a|
|00000170| 72 63 70 72 65 63 69 73 | 69 6f 6e 28 6e 6f 73 65 |rcprecis|ion(nose|
|00000180| 67 29 0d 09 69 6e 74 09 | 6e 6f 73 65 67 3b 0d 7b |g)..int.|noseg;.{|
|00000190| 0d 09 6e 73 65 67 73 20 | 3d 20 6e 6f 73 65 67 3b |..nsegs |= noseg;|
|000001a0| 0d 7d 0d 0d 2f 2a 0d 20 | 2a 20 63 69 72 63 6c 65 |.}../*. |* circle|
|000001b0| 70 72 65 63 69 73 69 6f | 6e 0d 20 2a 0d 20 2a 09 |precisio|n. *. *.|
|000001c0| 73 65 74 73 20 74 68 65 | 20 6e 75 6d 62 65 72 20 |sets the| number |
|000001d0| 6f 66 20 73 65 67 6d 65 | 6e 74 73 20 69 6e 20 61 |of segme|nts in a|
|000001e0| 6e 20 61 72 63 20 6f 72 | 20 63 69 72 63 6c 65 2e |n arc or| circle.|
|000001f0| 0d 20 2a 2f 0d 76 6f 69 | 64 0d 63 69 72 63 6c 65 |. */.voi|d.circle|
|00000200| 70 72 65 63 69 73 69 6f | 6e 28 6e 6f 73 65 67 29 |precisio|n(noseg)|
|00000210| 0d 09 69 6e 74 09 6e 6f | 73 65 67 3b 0d 7b 0d 09 |..int.no|seg;.{..|
|00000220| 6e 73 65 67 73 20 3d 20 | 6e 6f 73 65 67 3b 0d 7d |nsegs = |noseg;.}|
|00000230| 0d 0d 2f 2a 0d 20 2a 20 | 61 72 63 0d 20 2a 0d 20 |../*. * |arc. *. |
|00000240| 2a 20 64 72 61 77 20 61 | 6e 20 61 72 63 20 61 74 |* draw a|n arc at|
|00000250| 20 61 20 67 69 76 65 6e | 20 6c 6f 63 61 74 69 6f | a given| locatio|
|00000260| 6e 2e 20 20 50 72 65 63 | 69 73 69 6f 6e 20 6f 66 |n. Prec|ision of|
|00000270| 20 61 72 63 20 28 23 20 | 6c 69 6e 65 20 73 65 67 | arc (# |line seg|
|00000280| 6d 65 6e 74 73 29 0d 20 | 2a 20 69 73 20 63 61 6c |ments). |* is cal|
|00000290| 63 75 6c 61 74 65 64 20 | 66 72 6f 6d 20 74 68 65 |culated |from the|
|000002a0| 20 76 61 6c 75 65 20 67 | 69 76 65 6e 20 74 6f 20 | value g|iven to |
|000002b0| 63 69 72 63 6c 65 70 72 | 65 63 69 73 69 6f 6e 2e |circlepr|ecision.|
|000002c0| 0d 20 2a 0d 20 2a 2f 0d | 76 6f 69 64 0d 61 72 63 |. *. */.|void.arc|
|000002d0| 28 78 2c 20 79 2c 20 72 | 61 64 69 75 73 2c 20 73 |(x, y, r|adius, s|
|000002e0| 61 6e 67 2c 20 65 61 6e | 67 29 0d 09 43 6f 6f 72 |ang, ean|g)..Coor|
|000002f0| 64 09 78 2c 20 79 2c 20 | 72 61 64 69 75 73 3b 0d |d.x, y, |radius;.|
|00000300| 09 41 6e 67 6c 65 09 73 | 61 6e 67 2c 20 65 61 6e |.Angle.s|ang, ean|
|00000310| 67 3b 0d 7b 0d 09 54 6f | 6b 65 6e 09 2a 74 3b 0d |g;.{..To|ken.*t;.|
|00000320| 09 64 6f 75 62 6c 65 09 | 63 78 2c 20 63 79 2c 20 |.double.|cx, cy, |
|00000330| 64 78 2c 20 64 79 3b 0d | 09 64 6f 75 62 6c 65 09 |dx, dy;.|.double.|
|00000340| 73 74 61 72 74 61 6e 67 | 2c 20 65 6e 64 61 6e 67 |startang|, endang|
|00000350| 2c 20 64 65 6c 74 61 6e | 67 2c 20 63 6f 73 69 6e |, deltan|g, cosin|
|00000360| 65 2c 20 73 69 6e 65 2c | 20 61 6e 67 6c 65 3b 0d |e, sine,| angle;.|
|00000370| 09 69 6e 74 09 69 2c 20 | 6e 75 6d 73 65 67 73 3b |.int.i, |numsegs;|
|00000380| 0d 0d 09 69 66 20 28 21 | 76 64 65 76 69 63 65 2e |...if (!|vdevice.|
|00000390| 69 6e 69 74 69 61 6c 69 | 73 65 64 29 0d 09 09 76 |initiali|sed)...v|
|000003a0| 65 72 72 6f 72 28 22 61 | 72 63 3a 20 76 6f 67 6c |error("a|rc: vogl|
|000003b0| 20 6e 6f 74 20 69 6e 69 | 74 69 61 6c 69 73 65 64 | not ini|tialised|
|000003c0| 22 29 3b 0d 0d 09 73 74 | 61 72 74 61 6e 67 20 3d |");...st|artang =|
|000003d0| 20 28 64 6f 75 62 6c 65 | 29 73 61 6e 67 20 2f 20 | (double|)sang / |
|000003e0| 31 30 2e 30 3b 0d 09 65 | 6e 64 61 6e 67 20 3d 20 |10.0;..e|ndang = |
|000003f0| 28 64 6f 75 62 6c 65 29 | 65 61 6e 67 20 2f 20 31 |(double)|eang / 1|
|00000400| 30 2e 30 3b 0d 0d 09 61 | 6e 67 6c 65 20 3d 20 73 |0.0;...a|ngle = s|
|00000410| 74 61 72 74 61 6e 67 20 | 2a 20 44 32 52 3b 0d 09 |tartang |* D2R;..|
|00000420| 6e 75 6d 73 65 67 73 20 | 3d 20 28 65 6e 64 61 6e |numsegs |= (endan|
|00000430| 67 20 2d 20 73 74 61 72 | 74 61 6e 67 29 20 2f 20 |g - star|tang) / |
|00000440| 33 36 30 2e 30 20 2a 20 | 6e 73 65 67 73 20 2b 20 |360.0 * |nsegs + |
|00000450| 30 2e 35 3b 0d 09 64 65 | 6c 74 61 6e 67 20 3d 20 |0.5;..de|ltang = |
|00000460| 28 65 6e 64 61 6e 67 20 | 2d 20 73 74 61 72 74 61 |(endang |- starta|
|00000470| 6e 67 29 20 2a 20 44 32 | 52 20 2f 20 6e 75 6d 73 |ng) * D2|R / nums|
|00000480| 65 67 73 3b 0d 09 63 6f | 73 69 6e 65 20 3d 20 63 |egs;..co|sine = c|
|00000490| 6f 73 28 28 64 6f 75 62 | 6c 65 29 64 65 6c 74 61 |os((doub|le)delta|
|000004a0| 6e 67 29 3b 0d 09 73 69 | 6e 65 20 3d 20 73 69 6e |ng);..si|ne = sin|
|000004b0| 28 28 64 6f 75 62 6c 65 | 29 64 65 6c 74 61 6e 67 |((double|)deltang|
|000004c0| 29 3b 0d 0d 09 69 66 20 | 28 76 64 65 76 69 63 65 |);...if |(vdevice|
|000004d0| 2e 69 6e 6f 62 6a 65 63 | 74 29 20 7b 0d 09 09 74 |.inobjec|t) {...t|
|000004e0| 20 3d 20 6e 65 77 74 6f | 6b 65 6e 73 28 38 29 3b | = newto|kens(8);|
|000004f0| 0d 09 09 74 5b 30 5d 2e | 69 20 3d 20 41 52 43 3b |...t[0].|i = ARC;|
|00000500| 0d 09 09 74 5b 31 5d 2e | 66 20 3d 20 78 3b 0d 09 |...t[1].|f = x;..|
|00000510| 09 74 5b 32 5d 2e 66 20 | 3d 20 79 3b 0d 09 09 74 |.t[2].f |= y;...t|
|00000520| 5b 33 5d 2e 66 20 3d 20 | 72 61 64 69 75 73 20 2a |[3].f = |radius *|
|00000530| 20 63 6f 73 28 28 64 6f | 75 62 6c 65 29 61 6e 67 | cos((do|uble)ang|
|00000540| 6c 65 29 3b 0d 09 09 74 | 5b 34 5d 2e 66 20 3d 20 |le);...t|[4].f = |
|00000550| 72 61 64 69 75 73 20 2a | 20 73 69 6e 28 28 64 6f |radius *| sin((do|
|00000560| 75 62 6c 65 29 61 6e 67 | 6c 65 29 3b 0d 09 09 74 |uble)ang|le);...t|
|00000570| 5b 35 5d 2e 66 20 3d 20 | 63 6f 73 69 6e 65 3b 0d |[5].f = |cosine;.|
|00000580| 09 09 74 5b 36 5d 2e 66 | 20 3d 20 73 69 6e 65 3b |..t[6].f| = sine;|
|00000590| 0d 09 09 74 5b 37 5d 2e | 69 20 3d 20 6e 75 6d 73 |...t[7].|i = nums|
|000005a0| 65 67 73 3b 0d 09 09 72 | 65 74 75 72 6e 3b 0d 09 |egs;...r|eturn;..|
|000005b0| 7d 0d 0d 09 2f 2a 20 63 | 61 6c 63 75 6c 61 74 65 |}.../* c|alculate|
|000005c0| 73 20 69 6e 69 74 69 61 | 6c 20 70 6f 69 6e 74 20 |s initia|l point |
|000005d0| 6f 6e 20 61 72 63 20 2a | 2f 0d 0d 09 63 78 20 3d |on arc *|/...cx =|
|000005e0| 20 78 20 2b 20 72 61 64 | 69 75 73 20 2a 20 63 6f | x + rad|ius * co|
|000005f0| 73 28 28 64 6f 75 62 6c | 65 29 61 6e 67 6c 65 29 |s((doubl|e)angle)|
|00000600| 3b 0d 09 63 79 20 3d 20 | 79 20 2b 20 72 61 64 69 |;..cy = |y + radi|
|00000610| 75 73 20 2a 20 73 69 6e | 28 28 64 6f 75 62 6c 65 |us * sin|((double|
|00000620| 29 61 6e 67 6c 65 29 3b | 0d 09 6d 6f 76 65 32 28 |)angle);|..move2(|
|00000630| 63 78 2c 20 63 79 29 3b | 0d 0d 09 66 6f 72 20 28 |cx, cy);|...for (|
|00000640| 69 20 3d 20 30 3b 20 69 | 20 3c 20 6e 75 6d 73 65 |i = 0; i| < numse|
|00000650| 67 73 3b 20 69 2b 2b 29 | 20 20 7b 0d 09 09 64 78 |gs; i++)| {...dx|
|00000660| 20 3d 20 63 78 20 2d 20 | 78 3b 20 0d 09 09 64 79 | = cx - |x; ...dy|
|00000670| 20 3d 20 63 79 20 2d 20 | 79 3b 0d 09 09 63 78 20 | = cy - |y;...cx |
|00000680| 3d 20 78 20 2b 20 64 78 | 20 2a 20 63 6f 73 69 6e |= x + dx| * cosin|
|00000690| 65 20 2d 20 64 79 20 2a | 20 73 69 6e 65 3b 0d 09 |e - dy *| sine;..|
|000006a0| 09 63 79 20 3d 20 79 20 | 2b 20 64 78 20 2a 20 73 |.cy = y |+ dx * s|
|000006b0| 69 6e 65 20 2b 20 64 79 | 20 2a 20 63 6f 73 69 6e |ine + dy| * cosin|
|000006c0| 65 3b 0d 09 09 64 72 61 | 77 32 28 63 78 2c 20 63 |e;...dra|w2(cx, c|
|000006d0| 79 29 3b 0d 09 7d 0d 7d | 0d 0d 2f 2a 0d 20 2a 20 |y);..}.}|../*. * |
|000006e0| 61 72 63 73 0d 20 2a 0d | 20 2a 20 64 72 61 77 20 |arcs. *.| * draw |
|000006f0| 61 6e 20 61 72 63 20 61 | 74 20 61 20 67 69 76 65 |an arc a|t a give|
|00000700| 6e 20 6c 6f 63 61 74 69 | 6f 6e 2e 20 20 28 45 78 |n locati|on. (Ex|
|00000710| 70 72 65 73 73 65 64 20 | 61 73 20 73 68 6f 72 74 |pressed |as short|
|00000720| 20 69 6e 74 65 67 65 72 | 73 29 20 0d 20 2a 20 50 | integer|s) . * P|
|00000730| 72 65 63 69 73 69 6f 6e | 20 6f 66 20 61 72 63 20 |recision| of arc |
|00000740| 28 23 20 6c 69 6e 65 20 | 73 65 67 6d 65 6e 74 73 |(# line |segments|
|00000750| 29 20 69 73 20 63 61 6c | 63 75 6c 61 74 65 64 20 |) is cal|culated |
|00000760| 66 72 6f 6d 20 74 68 65 | 20 76 61 6c 75 65 0d 20 |from the| value. |
|00000770| 2a 20 67 69 76 65 6e 20 | 74 6f 20 63 69 72 63 6c |* given |to circl|
|00000780| 65 70 72 65 63 69 73 69 | 6f 6e 2e 0d 20 2a 0d 20 |eprecisi|on.. *. |
|00000790| 2a 2f 0d 76 6f 69 64 0d | 61 72 63 73 28 78 2c 20 |*/.void.|arcs(x, |
|000007a0| 79 2c 20 72 61 64 69 75 | 73 2c 20 73 61 6e 67 2c |y, radiu|s, sang,|
|000007b0| 20 65 61 6e 67 29 0d 09 | 53 63 6f 6f 72 64 09 78 | eang)..|Scoord.x|
|000007c0| 2c 20 79 2c 20 72 61 64 | 69 75 73 3b 0d 09 41 6e |, y, rad|ius;..An|
|000007d0| 67 6c 65 09 73 61 6e 67 | 2c 20 65 61 6e 67 3b 0d |gle.sang|, eang;.|
|000007e0| 7b 0d 09 61 72 63 28 28 | 43 6f 6f 72 64 29 78 2c |{..arc((|Coord)x,|
|000007f0| 20 28 43 6f 6f 72 64 29 | 79 2c 20 28 43 6f 6f 72 | (Coord)|y, (Coor|
|00000800| 64 29 72 61 64 69 75 73 | 2c 20 73 61 6e 67 2c 20 |d)radius|, sang, |
|00000810| 65 61 6e 67 29 3b 0d 7d | 0d 0d 2f 2a 0d 20 2a 20 |eang);.}|../*. * |
|00000820| 61 72 63 69 0d 20 2a 0d | 20 2a 20 64 72 61 77 20 |arci. *.| * draw |
|00000830| 61 6e 20 61 72 63 20 61 | 74 20 61 20 67 69 76 65 |an arc a|t a give|
|00000840| 6e 20 6c 6f 63 61 74 69 | 6f 6e 2e 20 20 28 45 78 |n locati|on. (Ex|
|00000850| 70 72 65 73 73 65 64 20 | 61 73 20 69 6e 74 65 67 |pressed |as integ|
|00000860| 65 72 73 29 20 0d 20 2a | 20 50 72 65 63 69 73 69 |ers) . *| Precisi|
|00000870| 6f 6e 20 6f 66 20 61 72 | 63 20 28 23 20 6c 69 6e |on of ar|c (# lin|
|00000880| 65 20 73 65 67 6d 65 6e | 74 73 29 20 69 73 20 63 |e segmen|ts) is c|
|00000890| 61 6c 63 75 6c 61 74 65 | 64 20 66 72 6f 6d 20 74 |alculate|d from t|
|000008a0| 68 65 20 76 61 6c 75 65 | 0d 20 2a 20 67 69 76 65 |he value|. * give|
|000008b0| 6e 20 74 6f 20 63 69 72 | 63 6c 65 70 72 65 63 69 |n to cir|clepreci|
|000008c0| 73 69 6f 6e 2e 0d 20 2a | 0d 20 2a 2f 0d 76 6f 69 |sion.. *|. */.voi|
|000008d0| 64 0d 61 72 63 69 28 78 | 2c 20 79 2c 20 72 61 64 |d.arci(x|, y, rad|
|000008e0| 69 75 73 2c 20 73 61 6e | 67 2c 20 65 61 6e 67 29 |ius, san|g, eang)|
|000008f0| 0d 09 49 63 6f 6f 72 64 | 09 78 2c 20 79 2c 20 72 |..Icoord|.x, y, r|
|00000900| 61 64 69 75 73 3b 0d 09 | 41 6e 67 6c 65 09 73 61 |adius;..|Angle.sa|
|00000910| 6e 67 2c 20 65 61 6e 67 | 3b 0d 7b 0d 09 61 72 63 |ng, eang|;.{..arc|
|00000920| 28 28 43 6f 6f 72 64 29 | 78 2c 20 28 43 6f 6f 72 |((Coord)|x, (Coor|
|00000930| 64 29 79 2c 20 28 43 6f | 6f 72 64 29 72 61 64 69 |d)y, (Co|ord)radi|
|00000940| 75 73 2c 20 73 61 6e 67 | 2c 20 65 61 6e 67 29 3b |us, sang|, eang);|
|00000950| 0d 7d 0d 0d 2f 2a 0d 20 | 2a 20 61 72 63 66 0d 20 |.}../*. |* arcf. |
|00000960| 2a 0d 20 2a 09 64 72 61 | 77 20 61 20 66 69 6c 6c |*. *.dra|w a fill|
|00000970| 65 64 20 73 65 63 74 6f | 72 20 69 6e 20 61 20 67 |ed secto|r in a g|
|00000980| 69 76 65 6e 20 6c 6f 63 | 61 74 69 6f 6e 2e 20 54 |iven loc|ation. T|
|00000990| 68 65 20 6e 75 6d 62 65 | 72 20 6f 66 20 6c 69 6e |he numbe|r of lin|
|000009a0| 65 0d 20 2a 20 73 65 67 | 6d 65 6e 74 73 20 69 6e |e. * seg|ments in|
|000009b0| 20 74 68 65 20 61 72 63 | 20 6f 66 20 74 68 65 20 | the arc| of the |
|000009c0| 73 65 67 6d 65 6e 74 20 | 69 73 20 74 68 65 20 73 |segment |is the s|
|000009d0| 61 6d 65 20 61 73 20 69 | 6e 20 61 72 63 2e 0d 20 |ame as i|n arc.. |
|000009e0| 2a 2f 0d 76 6f 69 64 0d | 61 72 63 66 28 78 2c 20 |*/.void.|arcf(x, |
|000009f0| 79 2c 20 72 61 64 69 75 | 73 2c 20 73 61 6e 67 2c |y, radiu|s, sang,|
|00000a00| 20 65 61 6e 67 29 0d 09 | 43 6f 6f 72 64 09 78 2c | eang)..|Coord.x,|
|00000a10| 20 79 2c 20 72 61 64 69 | 75 73 3b 0d 09 41 6e 67 | y, radi|us;..Ang|
|00000a20| 6c 65 09 73 61 6e 67 2c | 20 65 61 6e 67 3b 0d 7b |le.sang,| eang;.{|
|00000a30| 0d 09 54 6f 6b 65 6e 09 | 2a 74 3b 0d 09 64 6f 75 |..Token.|*t;..dou|
|00000a40| 62 6c 65 09 63 78 2c 20 | 63 79 2c 20 64 78 2c 20 |ble.cx, |cy, dx, |
|00000a50| 64 79 3b 0d 09 64 6f 75 | 62 6c 65 09 64 65 6c 74 |dy;..dou|ble.delt|
|00000a60| 61 6e 67 2c 20 63 6f 73 | 69 6e 65 2c 20 73 69 6e |ang, cos|ine, sin|
|00000a70| 65 2c 20 61 6e 67 6c 65 | 3b 0d 09 69 6e 74 09 69 |e, angle|;..int.i|
|00000a80| 2c 20 6e 75 6d 73 65 67 | 73 3b 0d 09 64 6f 75 62 |, numseg|s;..doub|
|00000a90| 6c 65 09 73 74 61 72 74 | 61 6e 67 2c 20 65 6e 64 |le.start|ang, end|
|00000aa0| 61 6e 67 3b 0d 0d 09 69 | 66 20 28 21 76 64 65 76 |ang;...i|f (!vdev|
|00000ab0| 69 63 65 2e 69 6e 69 74 | 69 61 6c 69 73 65 64 29 |ice.init|ialised)|
|00000ac0| 0d 09 09 76 65 72 72 6f | 72 28 22 61 72 63 66 3a |...verro|r("arcf:|
|00000ad0| 20 76 6f 67 6c 20 6e 6f | 74 20 69 6e 69 74 69 61 | vogl no|t initia|
|00000ae0| 6c 69 73 65 64 22 29 3b | 0d 0d 09 73 74 61 72 74 |lised");|...start|
|00000af0| 61 6e 67 20 3d 20 73 61 | 6e 67 20 2f 20 31 30 2e |ang = sa|ng / 10.|
|00000b00| 30 3b 0d 09 65 6e 64 61 | 6e 67 20 3d 20 65 61 6e |0;..enda|ng = ean|
|00000b10| 67 20 2f 20 31 30 2e 30 | 3b 0d 0d 09 61 6e 67 6c |g / 10.0|;...angl|
|00000b20| 65 20 3d 20 73 74 61 72 | 74 61 6e 67 20 2a 20 44 |e = star|tang * D|
|00000b30| 32 52 3b 0d 09 6e 75 6d | 73 65 67 73 20 3d 20 28 |2R;..num|segs = (|
|00000b40| 65 6e 64 61 6e 67 20 2d | 20 73 74 61 72 74 61 6e |endang -| startan|
|00000b50| 67 29 20 2f 20 33 36 30 | 2e 30 20 2a 20 6e 73 65 |g) / 360|.0 * nse|
|00000b60| 67 73 20 2b 20 30 2e 35 | 3b 0d 09 64 65 6c 74 61 |gs + 0.5|;..delta|
|00000b70| 6e 67 20 3d 20 28 65 6e | 64 61 6e 67 20 2d 20 73 |ng = (en|dang - s|
|00000b80| 74 61 72 74 61 6e 67 29 | 20 2a 20 44 32 52 20 2f |tartang)| * D2R /|
|00000b90| 20 6e 75 6d 73 65 67 73 | 3b 0d 09 63 6f 73 69 6e | numsegs|;..cosin|
|00000ba0| 65 20 3d 20 63 6f 73 28 | 28 64 6f 75 62 6c 65 29 |e = cos(|(double)|
|00000bb0| 64 65 6c 74 61 6e 67 29 | 3b 0d 09 73 69 6e 65 20 |deltang)|;..sine |
|00000bc0| 3d 20 73 69 6e 28 28 64 | 6f 75 62 6c 65 29 64 65 |= sin((d|ouble)de|
|00000bd0| 6c 74 61 6e 67 29 3b 0d | 0d 09 69 66 20 28 76 64 |ltang);.|..if (vd|
|00000be0| 65 76 69 63 65 2e 69 6e | 6f 62 6a 65 63 74 29 20 |evice.in|object) |
|00000bf0| 7b 0d 09 09 74 20 3d 20 | 6e 65 77 74 6f 6b 65 6e |{...t = |newtoken|
|00000c00| 73 28 38 29 3b 0d 09 09 | 74 5b 30 5d 2e 69 20 3d |s(8);...|t[0].i =|
|00000c10| 20 41 52 43 46 3b 0d 09 | 09 74 5b 31 5d 2e 66 20 | ARCF;..|.t[1].f |
|00000c20| 3d 20 78 3b 0d 09 09 74 | 5b 32 5d 2e 66 20 3d 20 |= x;...t|[2].f = |
|00000c30| 79 3b 0d 09 09 74 5b 33 | 5d 2e 66 20 3d 20 72 61 |y;...t[3|].f = ra|
|00000c40| 64 69 75 73 20 2a 20 63 | 6f 73 28 28 64 6f 75 62 |dius * c|os((doub|
|00000c50| 6c 65 29 61 6e 67 6c 65 | 29 3b 0d 09 09 74 5b 34 |le)angle|);...t[4|
|00000c60| 5d 2e 66 20 3d 20 72 61 | 64 69 75 73 20 2a 20 73 |].f = ra|dius * s|
|00000c70| 69 6e 28 28 64 6f 75 62 | 6c 65 29 61 6e 67 6c 65 |in((doub|le)angle|
|00000c80| 29 3b 0d 09 09 74 5b 35 | 5d 2e 66 20 3d 20 63 6f |);...t[5|].f = co|
|00000c90| 73 69 6e 65 3b 0d 09 09 | 74 5b 36 5d 2e 66 20 3d |sine;...|t[6].f =|
|00000ca0| 20 73 69 6e 65 3b 0d 09 | 09 74 5b 37 5d 2e 69 20 | sine;..|.t[7].i |
|00000cb0| 3d 20 6e 75 6d 73 65 67 | 73 3b 0d 09 09 72 65 74 |= numseg|s;...ret|
|00000cc0| 75 72 6e 3b 0d 09 7d 0d | 0d 09 70 6d 76 32 28 78 |urn;..}.|..pmv2(x|
|00000cd0| 2c 20 79 29 3b 0d 09 09 | 09 2f 2a 20 63 61 6c 63 |, y);...|./* calc|
|00000ce0| 75 6c 61 74 65 73 20 69 | 6e 69 74 69 61 6c 20 70 |ulates i|nitial p|
|00000cf0| 6f 69 6e 74 20 6f 6e 20 | 61 72 63 20 2a 2f 0d 0d |oint on |arc */..|
|00000d00| 09 63 78 20 3d 20 78 20 | 2b 20 72 61 64 69 75 73 |.cx = x |+ radius|
|00000d10| 20 2a 20 63 6f 73 28 28 | 64 6f 75 62 6c 65 29 61 | * cos((|double)a|
|00000d20| 6e 67 6c 65 29 3b 0d 09 | 63 79 20 3d 20 79 20 2b |ngle);..|cy = y +|
|00000d30| 20 72 61 64 69 75 73 20 | 2a 20 73 69 6e 28 28 64 | radius |* sin((d|
|00000d40| 6f 75 62 6c 65 29 61 6e | 67 6c 65 29 3b 0d 0d 09 |ouble)an|gle);...|
|00000d50| 70 64 72 32 28 63 78 2c | 20 63 79 29 3b 0d 0d 09 |pdr2(cx,| cy);...|
|00000d60| 66 6f 72 20 28 69 20 3d | 20 30 3b 20 69 20 3c 20 |for (i =| 0; i < |
|00000d70| 6e 75 6d 73 65 67 73 3b | 20 69 2b 2b 29 20 20 7b |numsegs;| i++) {|
|00000d80| 0d 09 09 64 78 20 3d 20 | 63 78 20 2d 20 78 3b 20 |...dx = |cx - x; |
|00000d90| 0d 09 09 64 79 20 3d 20 | 63 79 20 2d 20 79 3b 0d |...dy = |cy - y;.|
|00000da0| 09 09 63 78 20 3d 20 78 | 20 2b 20 64 78 20 2a 20 |..cx = x| + dx * |
|00000db0| 63 6f 73 69 6e 65 20 2d | 20 64 79 20 2a 20 73 69 |cosine -| dy * si|
|00000dc0| 6e 65 3b 0d 09 09 63 79 | 20 3d 20 79 20 2b 20 64 |ne;...cy| = y + d|
|00000dd0| 78 20 2a 20 73 69 6e 65 | 20 2b 20 64 79 20 2a 20 |x * sine| + dy * |
|00000de0| 63 6f 73 69 6e 65 3b 0d | 09 09 70 64 72 32 28 63 |cosine;.|..pdr2(c|
|00000df0| 78 2c 20 63 79 29 3b 0d | 09 7d 0d 0d 09 70 63 6c |x, cy);.|.}...pcl|
|00000e00| 6f 73 28 29 3b 0d 7d 0d | 0d 2f 2a 0d 20 2a 20 61 |os();.}.|./*. * a|
|00000e10| 72 63 66 73 0d 20 2a 0d | 20 2a 20 64 72 61 77 20 |rcfs. *.| * draw |
|00000e20| 61 20 66 69 6c 6c 65 64 | 20 73 65 63 74 6f 72 20 |a filled| sector |
|00000e30| 61 74 20 61 20 67 69 76 | 65 6e 20 6c 6f 63 61 74 |at a giv|en locat|
|00000e40| 69 6f 6e 2e 20 20 28 45 | 78 70 72 65 73 73 65 64 |ion. (E|xpressed|
|00000e50| 20 61 73 20 73 68 6f 72 | 74 20 69 6e 74 65 67 65 | as shor|t intege|
|00000e60| 72 73 29 20 0d 20 2a 20 | 50 72 65 63 69 73 69 6f |rs) . * |Precisio|
|00000e70| 6e 20 6f 66 20 61 72 63 | 20 28 23 20 6c 69 6e 65 |n of arc| (# line|
|00000e80| 20 73 65 67 6d 65 6e 74 | 73 29 20 69 73 20 63 61 | segment|s) is ca|
|00000e90| 6c 63 75 6c 61 74 65 64 | 20 66 72 6f 6d 20 74 68 |lculated| from th|
|00000ea0| 65 20 76 61 6c 75 65 0d | 20 2a 20 67 69 76 65 6e |e value.| * given|
|00000eb0| 20 74 6f 20 63 69 72 63 | 6c 65 70 72 65 63 69 73 | to circ|leprecis|
|00000ec0| 69 6f 6e 2e 0d 20 2a 0d | 20 2a 2f 0d 76 6f 69 64 |ion.. *.| */.void|
|00000ed0| 0d 61 72 63 66 73 28 78 | 2c 20 79 2c 20 72 61 64 |.arcfs(x|, y, rad|
|00000ee0| 69 75 73 2c 20 73 61 6e | 67 2c 20 65 61 6e 67 29 |ius, san|g, eang)|
|00000ef0| 0d 09 53 63 6f 6f 72 64 | 09 78 2c 20 79 2c 20 72 |..Scoord|.x, y, r|
|00000f00| 61 64 69 75 73 3b 0d 09 | 41 6e 67 6c 65 09 73 61 |adius;..|Angle.sa|
|00000f10| 6e 67 2c 20 65 61 6e 67 | 3b 0d 7b 0d 09 61 72 63 |ng, eang|;.{..arc|
|00000f20| 66 28 28 43 6f 6f 72 64 | 29 78 2c 20 28 43 6f 6f |f((Coord|)x, (Coo|
|00000f30| 72 64 29 79 2c 20 28 43 | 6f 6f 72 64 29 72 61 64 |rd)y, (C|oord)rad|
|00000f40| 69 75 73 2c 20 73 61 6e | 67 2c 20 65 61 6e 67 29 |ius, san|g, eang)|
|00000f50| 3b 0d 7d 0d 0d 2f 2a 0d | 20 2a 20 61 72 63 66 69 |;.}../*.| * arcfi|
|00000f60| 0d 20 2a 0d 20 2a 20 64 | 72 61 77 20 61 20 66 69 |. *. * d|raw a fi|
|00000f70| 6c 6c 65 64 20 73 65 63 | 74 6f 72 20 61 74 20 61 |lled sec|tor at a|
|00000f80| 20 67 69 76 65 6e 20 6c | 6f 63 61 74 69 6f 6e 2e | given l|ocation.|
|00000f90| 20 20 28 45 78 70 72 65 | 73 73 65 64 20 61 73 20 | (Expre|ssed as |
|00000fa0| 69 6e 74 65 67 65 72 73 | 29 20 0d 20 2a 20 50 72 |integers|) . * Pr|
|00000fb0| 65 63 69 73 69 6f 6e 20 | 6f 66 20 61 72 63 20 28 |ecision |of arc (|
|00000fc0| 23 20 6c 69 6e 65 20 73 | 65 67 6d 65 6e 74 73 29 |# line s|egments)|
|00000fd0| 20 69 73 20 63 61 6c 63 | 75 6c 61 74 65 64 20 66 | is calc|ulated f|
|00000fe0| 72 6f 6d 20 74 68 65 20 | 76 61 6c 75 65 0d 20 2a |rom the |value. *|
|00000ff0| 20 67 69 76 65 6e 20 74 | 6f 20 63 69 72 63 6c 65 | given t|o circle|
|00001000| 70 72 65 63 69 73 69 6f | 6e 2e 0d 20 2a 0d 20 2a |precisio|n.. *. *|
|00001010| 2f 0d 76 6f 69 64 0d 61 | 72 63 66 69 28 78 2c 20 |/.void.a|rcfi(x, |
|00001020| 79 2c 20 72 61 64 69 75 | 73 2c 20 73 61 6e 67 2c |y, radiu|s, sang,|
|00001030| 20 65 61 6e 67 29 0d 09 | 49 63 6f 6f 72 64 09 78 | eang)..|Icoord.x|
|00001040| 2c 20 79 2c 20 72 61 64 | 69 75 73 3b 0d 09 41 6e |, y, rad|ius;..An|
|00001050| 67 6c 65 09 73 61 6e 67 | 2c 20 65 61 6e 67 3b 0d |gle.sang|, eang;.|
|00001060| 7b 0d 09 61 72 63 66 28 | 28 43 6f 6f 72 64 29 78 |{..arcf(|(Coord)x|
|00001070| 2c 20 28 43 6f 6f 72 64 | 29 79 2c 20 28 43 6f 6f |, (Coord|)y, (Coo|
|00001080| 72 64 29 72 61 64 69 75 | 73 2c 20 73 61 6e 67 2c |rd)radiu|s, sang,|
|00001090| 20 65 61 6e 67 29 3b 0d | 7d 0d 0d 0d 2f 2a 0d 20 | eang);.|}.../*. |
|000010a0| 2a 20 63 69 72 63 0d 20 | 2a 0d 20 2a 20 44 72 61 |* circ. |*. * Dra|
|000010b0| 77 20 61 20 63 69 72 63 | 6c 65 20 6f 66 20 67 69 |w a circ|le of gi|
|000010c0| 76 65 6e 20 72 61 64 69 | 75 73 20 61 74 20 67 69 |ven radi|us at gi|
|000010d0| 76 65 6e 20 77 6f 72 6c | 64 20 63 6f 6f 72 64 69 |ven worl|d coordi|
|000010e0| 6e 61 74 65 73 2e 20 54 | 68 65 20 6e 75 6d 62 65 |nates. T|he numbe|
|000010f0| 72 20 6f 66 0d 20 2a 20 | 73 65 67 6d 65 6e 74 73 |r of. * |segments|
|00001100| 20 69 6e 20 74 68 65 20 | 63 69 72 63 6c 65 20 69 | in the |circle i|
|00001110| 73 20 74 68 65 20 73 61 | 6d 65 20 61 73 20 74 68 |s the sa|me as th|
|00001120| 61 74 20 6f 66 20 61 6e | 20 61 72 63 2e 0d 20 2a |at of an| arc.. *|
|00001130| 0d 20 2a 2f 0d 76 6f 69 | 64 0d 63 69 72 63 28 78 |. */.voi|d.circ(x|
|00001140| 2c 20 79 2c 20 72 61 64 | 69 75 73 29 0d 09 43 6f |, y, rad|ius)..Co|
|00001150| 6f 72 64 09 78 2c 20 79 | 2c 20 72 61 64 69 75 73 |ord.x, y|, radius|
|00001160| 3b 0d 7b 0d 09 54 6f 6b | 65 6e 09 2a 74 3b 0d 09 |;.{..Tok|en.*t;..|
|00001170| 64 6f 75 62 6c 65 09 63 | 78 2c 20 63 79 2c 20 64 |double.c|x, cy, d|
|00001180| 78 2c 20 64 79 3b 0d 09 | 64 6f 75 62 6c 65 09 61 |x, dy;..|double.a|
|00001190| 6e 67 6c 65 2c 20 63 6f | 73 69 6e 65 2c 20 73 69 |ngle, co|sine, si|
|000011a0| 6e 65 3b 0d 09 69 6e 74 | 09 69 3b 0d 0d 09 69 66 |ne;..int|.i;...if|
|000011b0| 20 28 21 76 64 65 76 69 | 63 65 2e 69 6e 69 74 69 | (!vdevi|ce.initi|
|000011c0| 61 6c 69 73 65 64 29 0d | 09 09 76 65 72 72 6f 72 |alised).|..verror|
|000011d0| 28 22 63 69 72 63 3a 20 | 76 6f 67 6c 20 6e 6f 74 |("circ: |vogl not|
|000011e0| 20 69 6e 69 74 69 61 6c | 69 73 65 64 22 29 3b 0d | initial|ised");.|
|000011f0| 0d 09 61 6e 67 6c 65 20 | 3d 20 32 2e 30 20 2a 20 |..angle |= 2.0 * |
|00001200| 50 49 20 2f 20 6e 73 65 | 67 73 3b 0d 09 63 6f 73 |PI / nse|gs;..cos|
|00001210| 69 6e 65 20 3d 20 63 6f | 73 28 28 64 6f 75 62 6c |ine = co|s((doubl|
|00001220| 65 29 61 6e 67 6c 65 29 | 3b 0d 09 73 69 6e 65 20 |e)angle)|;..sine |
|00001230| 3d 20 73 69 6e 28 28 64 | 6f 75 62 6c 65 29 61 6e |= sin((d|ouble)an|
|00001240| 67 6c 65 29 3b 0d 0d 09 | 69 66 20 28 76 64 65 76 |gle);...|if (vdev|
|00001250| 69 63 65 2e 69 6e 6f 62 | 6a 65 63 74 29 20 7b 0d |ice.inob|ject) {.|
|00001260| 09 09 74 20 3d 20 6e 65 | 77 74 6f 6b 65 6e 73 28 |..t = ne|wtokens(|
|00001270| 37 29 3b 0d 09 09 74 5b | 30 5d 2e 69 20 3d 20 43 |7);...t[|0].i = C|
|00001280| 49 52 43 4c 45 3b 0d 09 | 09 74 5b 31 5d 2e 66 20 |IRCLE;..|.t[1].f |
|00001290| 3d 20 78 3b 0d 09 09 74 | 5b 32 5d 2e 66 20 3d 20 |= x;...t|[2].f = |
|000012a0| 79 3b 0d 09 09 74 5b 33 | 5d 2e 66 20 3d 20 72 61 |y;...t[3|].f = ra|
|000012b0| 64 69 75 73 3b 0d 09 09 | 74 5b 34 5d 2e 66 20 3d |dius;...|t[4].f =|
|000012c0| 20 63 6f 73 69 6e 65 3b | 0d 09 09 74 5b 35 5d 2e | cosine;|...t[5].|
|000012d0| 66 20 3d 20 73 69 6e 65 | 3b 0d 09 09 74 5b 36 5d |f = sine|;...t[6]|
|000012e0| 2e 69 20 3d 20 6e 73 65 | 67 73 3b 0d 09 09 72 65 |.i = nse|gs;...re|
|000012f0| 74 75 72 6e 3b 0d 09 7d | 0d 0d 09 63 78 20 3d 20 |turn;..}|...cx = |
|00001300| 78 20 2b 20 72 61 64 69 | 75 73 3b 0d 09 63 79 20 |x + radi|us;..cy |
|00001310| 3d 20 79 3b 0d 0d 09 6d | 6f 76 65 32 28 63 78 2c |= y;...m|ove2(cx,|
|00001320| 20 63 79 29 3b 0d 09 66 | 6f 72 20 28 69 20 3d 20 | cy);..f|or (i = |
|00001330| 30 3b 20 69 20 3c 20 6e | 73 65 67 73 20 2d 20 31 |0; i < n|segs - 1|
|00001340| 3b 20 69 2b 2b 29 20 7b | 0d 09 09 64 78 20 3d 20 |; i++) {|...dx = |
|00001350| 63 78 20 2d 20 78 3b 20 | 0d 09 09 64 79 20 3d 20 |cx - x; |...dy = |
|00001360| 63 79 20 2d 20 79 3b 0d | 09 09 63 78 20 3d 20 78 |cy - y;.|..cx = x|
|00001370| 20 2b 20 64 78 20 2a 20 | 63 6f 73 69 6e 65 20 2d | + dx * |cosine -|
|00001380| 20 64 79 20 2a 20 73 69 | 6e 65 3b 0d 09 09 63 79 | dy * si|ne;...cy|
|00001390| 20 3d 20 79 20 2b 20 64 | 78 20 2a 20 73 69 6e 65 | = y + d|x * sine|
|000013a0| 20 2b 20 64 79 20 2a 20 | 63 6f 73 69 6e 65 3b 0d | + dy * |cosine;.|
|000013b0| 09 09 64 72 61 77 32 28 | 63 78 2c 20 63 79 29 3b |..draw2(|cx, cy);|
|000013c0| 0d 09 7d 0d 0d 09 64 72 | 61 77 32 28 78 20 2b 20 |..}...dr|aw2(x + |
|000013d0| 72 61 64 69 75 73 2c 20 | 79 29 3b 0d 7d 0d 0d 2f |radius, |y);.}../|
|000013e0| 2a 0d 20 2a 20 63 69 72 | 63 73 0d 20 2a 0d 20 2a |*. * cir|cs. *. *|
|000013f0| 20 44 72 61 77 20 61 20 | 63 69 72 63 6c 65 20 6f | Draw a |circle o|
|00001400| 66 20 67 69 76 65 6e 20 | 72 61 64 69 75 73 20 61 |f given |radius a|
|00001410| 74 20 67 69 76 65 6e 20 | 77 6f 72 6c 64 20 63 6f |t given |world co|
|00001420| 6f 72 64 69 6e 61 74 65 | 73 20 65 78 70 72 65 73 |ordinate|s expres|
|00001430| 73 65 64 20 61 73 0d 20 | 2a 20 73 68 6f 72 74 20 |sed as. |* short |
|00001440| 69 6e 74 65 67 65 72 73 | 2e 20 54 68 65 20 6e 75 |integers|. The nu|
|00001450| 6d 62 65 72 20 6f 66 20 | 73 65 67 6d 65 6e 74 73 |mber of |segments|
|00001460| 20 69 6e 20 74 68 65 20 | 63 69 72 63 6c 65 20 69 | in the |circle i|
|00001470| 73 20 74 68 65 20 73 61 | 6d 65 20 61 73 20 74 68 |s the sa|me as th|
|00001480| 61 74 0d 20 2a 20 6f 66 | 20 61 6e 20 61 72 63 2e |at. * of| an arc.|
|00001490| 0d 20 2a 0d 20 2a 2f 0d | 76 6f 69 64 0d 63 69 72 |. *. */.|void.cir|
|000014a0| 63 73 28 78 2c 20 79 2c | 20 72 61 64 69 75 73 29 |cs(x, y,| radius)|
|000014b0| 0d 09 53 63 6f 6f 72 64 | 09 78 2c 20 79 2c 20 72 |..Scoord|.x, y, r|
|000014c0| 61 64 69 75 73 3b 0d 7b | 0d 09 63 69 72 63 28 28 |adius;.{|..circ((|
|000014d0| 43 6f 6f 72 64 29 78 2c | 20 28 43 6f 6f 72 64 29 |Coord)x,| (Coord)|
|000014e0| 79 2c 20 28 43 6f 6f 72 | 64 29 72 61 64 69 75 73 |y, (Coor|d)radius|
|000014f0| 29 3b 0d 7d 0d 0d 0d 2f | 2a 0d 20 2a 20 63 69 72 |);.}.../|*. * cir|
|00001500| 63 69 0d 20 2a 0d 20 2a | 20 44 72 61 77 20 61 20 |ci. *. *| Draw a |
|00001510| 63 69 72 63 6c 65 20 6f | 66 20 67 69 76 65 6e 20 |circle o|f given |
|00001520| 72 61 64 69 75 73 20 61 | 74 20 67 69 76 65 6e 20 |radius a|t given |
|00001530| 77 6f 72 6c 64 20 63 6f | 6f 72 64 69 6e 61 74 65 |world co|ordinate|
|00001540| 73 20 65 78 70 72 65 73 | 73 65 64 20 61 73 0d 20 |s expres|sed as. |
|00001550| 2a 20 69 6e 74 65 67 65 | 72 73 2e 20 54 68 65 20 |* intege|rs. The |
|00001560| 6e 75 6d 62 65 72 20 6f | 66 20 73 65 67 6d 65 6e |number o|f segmen|
|00001570| 74 73 20 69 6e 20 74 68 | 65 20 63 69 72 63 6c 65 |ts in th|e circle|
|00001580| 20 69 73 20 74 68 65 20 | 73 61 6d 65 20 61 73 20 | is the |same as |
|00001590| 74 68 61 74 0d 20 2a 20 | 6f 66 20 61 6e 20 61 72 |that. * |of an ar|
|000015a0| 63 2e 0d 20 2a 0d 20 2a | 2f 0d 76 6f 69 64 0d 63 |c.. *. *|/.void.c|
|000015b0| 69 72 63 69 28 78 2c 20 | 79 2c 20 72 61 64 69 75 |irci(x, |y, radiu|
|000015c0| 73 29 0d 09 49 63 6f 6f | 72 64 09 78 2c 20 79 2c |s)..Icoo|rd.x, y,|
|000015d0| 20 72 61 64 69 75 73 3b | 0d 7b 0d 09 63 69 72 63 | radius;|.{..circ|
|000015e0| 28 28 43 6f 6f 72 64 29 | 78 2c 20 28 43 6f 6f 72 |((Coord)|x, (Coor|
|000015f0| 64 29 79 2c 20 28 43 6f | 6f 72 64 29 72 61 64 69 |d)y, (Co|ord)radi|
|00001600| 75 73 29 3b 0d 7d 0d 0d | 2f 2a 0d 20 2a 20 63 69 |us);.}..|/*. * ci|
|00001610| 72 63 66 0d 20 2a 0d 20 | 2a 20 44 72 61 77 20 61 |rcf. *. |* Draw a|
|00001620| 20 66 69 6c 6c 65 64 20 | 63 69 72 63 6c 65 20 6f | filled |circle o|
|00001630| 66 20 67 69 76 65 6e 20 | 72 61 64 69 75 73 20 61 |f given |radius a|
|00001640| 74 20 67 69 76 65 6e 20 | 77 6f 72 6c 64 20 63 6f |t given |world co|
|00001650| 6f 72 64 69 6e 61 74 65 | 73 2e 0d 20 2a 20 54 68 |ordinate|s.. * Th|
|00001660| 65 20 6e 75 6d 62 65 72 | 20 6f 66 20 73 65 67 6d |e number| of segm|
|00001670| 65 6e 74 73 20 69 6e 20 | 74 68 65 20 63 69 72 63 |ents in |the circ|
|00001680| 6c 65 20 69 73 20 74 68 | 65 20 73 61 6d 65 20 61 |le is th|e same a|
|00001690| 73 20 74 68 61 74 20 6f | 66 20 61 6e 20 61 72 63 |s that o|f an arc|
|000016a0| 2e 0d 20 2a 0d 20 2a 2f | 0d 76 6f 69 64 0d 63 69 |.. *. */|.void.ci|
|000016b0| 72 63 66 28 78 2c 20 79 | 2c 20 72 61 64 69 75 73 |rcf(x, y|, radius|
|000016c0| 29 0d 09 43 6f 6f 72 64 | 09 78 2c 20 79 2c 20 72 |)..Coord|.x, y, r|
|000016d0| 61 64 69 75 73 3b 0d 7b | 0d 09 54 6f 6b 65 6e 09 |adius;.{|..Token.|
|000016e0| 2a 74 3b 0d 09 64 6f 75 | 62 6c 65 09 63 78 2c 20 |*t;..dou|ble.cx, |
|000016f0| 63 79 2c 20 64 78 2c 20 | 64 79 3b 0d 09 64 6f 75 |cy, dx, |dy;..dou|
|00001700| 62 6c 65 09 61 6e 67 6c | 65 2c 20 63 6f 73 69 6e |ble.angl|e, cosin|
|00001710| 65 2c 20 73 69 6e 65 3b | 0d 09 69 6e 74 09 69 3b |e, sine;|..int.i;|
|00001720| 0d 0d 09 69 66 20 28 21 | 76 64 65 76 69 63 65 2e |...if (!|vdevice.|
|00001730| 69 6e 69 74 69 61 6c 69 | 73 65 64 29 0d 09 09 76 |initiali|sed)...v|
|00001740| 65 72 72 6f 72 28 22 63 | 69 72 63 66 3a 20 76 6f |error("c|ircf: vo|
|00001750| 67 6c 20 6e 6f 74 20 69 | 6e 69 74 69 61 6c 69 73 |gl not i|nitialis|
|00001760| 65 64 22 29 3b 0d 0d 09 | 61 6e 67 6c 65 20 3d 20 |ed");...|angle = |
|00001770| 32 2e 30 20 2a 20 50 49 | 20 2f 20 6e 73 65 67 73 |2.0 * PI| / nsegs|
|00001780| 3b 0d 09 63 6f 73 69 6e | 65 20 3d 20 63 6f 73 28 |;..cosin|e = cos(|
|00001790| 28 64 6f 75 62 6c 65 29 | 61 6e 67 6c 65 29 3b 0d |(double)|angle);.|
|000017a0| 09 73 69 6e 65 20 3d 20 | 73 69 6e 28 28 64 6f 75 |.sine = |sin((dou|
|000017b0| 62 6c 65 29 61 6e 67 6c | 65 29 3b 0d 0d 09 69 66 |ble)angl|e);...if|
|000017c0| 20 28 76 64 65 76 69 63 | 65 2e 69 6e 6f 62 6a 65 | (vdevic|e.inobje|
|000017d0| 63 74 29 20 7b 0d 09 09 | 74 20 3d 20 6e 65 77 74 |ct) {...|t = newt|
|000017e0| 6f 6b 65 6e 73 28 37 29 | 3b 0d 09 09 74 5b 30 5d |okens(7)|;...t[0]|
|000017f0| 2e 69 20 3d 20 43 49 52 | 43 46 3b 0d 09 09 74 5b |.i = CIR|CF;...t[|
|00001800| 31 5d 2e 66 20 3d 20 78 | 3b 0d 09 09 74 5b 32 5d |1].f = x|;...t[2]|
|00001810| 2e 66 20 3d 20 79 3b 0d | 09 09 74 5b 33 5d 2e 66 |.f = y;.|..t[3].f|
|00001820| 20 3d 20 72 61 64 69 75 | 73 3b 0d 09 09 74 5b 34 | = radiu|s;...t[4|
|00001830| 5d 2e 66 20 3d 20 63 6f | 73 69 6e 65 3b 0d 09 09 |].f = co|sine;...|
|00001840| 74 5b 35 5d 2e 66 20 3d | 20 73 69 6e 65 3b 0d 09 |t[5].f =| sine;..|
|00001850| 09 74 5b 36 5d 2e 69 20 | 3d 20 6e 73 65 67 73 3b |.t[6].i |= nsegs;|
|00001860| 0d 09 09 72 65 74 75 72 | 6e 3b 0d 09 7d 0d 0d 09 |...retur|n;..}...|
|00001870| 63 78 20 3d 20 78 20 2b | 20 72 61 64 69 75 73 3b |cx = x +| radius;|
|00001880| 0d 09 63 79 20 3d 20 79 | 3b 0d 0d 09 70 6d 76 32 |..cy = y|;...pmv2|
|00001890| 28 63 78 2c 20 63 79 29 | 3b 0d 09 66 6f 72 20 28 |(cx, cy)|;..for (|
|000018a0| 69 20 3d 20 30 3b 20 69 | 20 3c 20 6e 73 65 67 73 |i = 0; i| < nsegs|
|000018b0| 20 2d 20 31 3b 20 69 2b | 2b 29 20 7b 0d 09 09 64 | - 1; i+|+) {...d|
|000018c0| 78 20 3d 20 63 78 20 2d | 20 78 3b 20 0d 09 09 64 |x = cx -| x; ...d|
|000018d0| 79 20 3d 20 63 79 20 2d | 20 79 3b 0d 09 09 63 78 |y = cy -| y;...cx|
|000018e0| 20 3d 20 78 20 2b 20 64 | 78 20 2a 20 63 6f 73 69 | = x + d|x * cosi|
|000018f0| 6e 65 20 2d 20 64 79 20 | 2a 20 73 69 6e 65 3b 0d |ne - dy |* sine;.|
|00001900| 09 09 63 79 20 3d 20 79 | 20 2b 20 64 78 20 2a 20 |..cy = y| + dx * |
|00001910| 73 69 6e 65 20 2b 20 64 | 79 20 2a 20 63 6f 73 69 |sine + d|y * cosi|
|00001920| 6e 65 3b 0d 09 09 70 64 | 72 32 28 63 78 2c 20 63 |ne;...pd|r2(cx, c|
|00001930| 79 29 3b 0d 09 7d 0d 0d | 09 70 63 6c 6f 73 28 29 |y);..}..|.pclos()|
|00001940| 3b 0d 7d 0d 0d 2f 2a 0d | 20 2a 20 63 69 72 63 66 |;.}../*.| * circf|
|00001950| 73 0d 20 2a 0d 20 2a 20 | 44 72 61 77 20 61 20 63 |s. *. * |Draw a c|
|00001960| 69 72 63 6c 65 20 6f 66 | 20 67 69 76 65 6e 20 72 |ircle of| given r|
|00001970| 61 64 69 75 73 20 61 74 | 20 67 69 76 65 6e 20 77 |adius at| given w|
|00001980| 6f 72 6c 64 20 63 6f 6f | 72 64 69 6e 61 74 65 73 |orld coo|rdinates|
|00001990| 20 65 78 70 72 65 73 73 | 65 64 20 61 73 0d 20 2a | express|ed as. *|
|000019a0| 20 73 68 6f 72 74 20 69 | 6e 74 65 67 65 72 73 2e | short i|ntegers.|
|000019b0| 20 54 68 65 20 6e 75 6d | 62 65 72 20 6f 66 20 73 | The num|ber of s|
|000019c0| 65 67 6d 65 6e 74 73 20 | 69 6e 20 74 68 65 20 63 |egments |in the c|
|000019d0| 69 72 63 6c 65 20 69 73 | 20 74 68 65 20 73 61 6d |ircle is| the sam|
|000019e0| 65 20 61 73 20 74 68 61 | 74 0d 20 2a 20 6f 66 20 |e as tha|t. * of |
|000019f0| 61 6e 20 61 72 63 2e 0d | 20 2a 0d 20 2a 2f 0d 76 |an arc..| *. */.v|
|00001a00| 6f 69 64 0d 63 69 72 63 | 66 73 28 78 2c 20 79 2c |oid.circ|fs(x, y,|
|00001a10| 20 72 61 64 69 75 73 29 | 0d 09 53 63 6f 6f 72 64 | radius)|..Scoord|
|00001a20| 09 78 2c 20 79 2c 20 72 | 61 64 69 75 73 3b 0d 7b |.x, y, r|adius;.{|
|00001a30| 0d 09 63 69 72 63 66 28 | 28 43 6f 6f 72 64 29 78 |..circf(|(Coord)x|
|00001a40| 2c 20 28 43 6f 6f 72 64 | 29 79 2c 20 28 43 6f 6f |, (Coord|)y, (Coo|
|00001a50| 72 64 29 72 61 64 69 75 | 73 29 3b 0d 7d 0d 0d 2f |rd)radiu|s);.}../|
|00001a60| 2a 0d 20 2a 20 63 69 72 | 63 66 69 0d 20 2a 0d 20 |*. * cir|cfi. *. |
|00001a70| 2a 20 44 72 61 77 20 61 | 20 63 69 72 63 6c 65 20 |* Draw a| circle |
|00001a80| 6f 66 20 67 69 76 65 6e | 20 72 61 64 69 75 73 20 |of given| radius |
|00001a90| 61 74 20 67 69 76 65 6e | 20 77 6f 72 6c 64 20 63 |at given| world c|
|00001aa0| 6f 6f 72 64 69 6e 61 74 | 65 73 20 65 78 70 72 65 |oordinat|es expre|
|00001ab0| 73 73 65 64 20 61 73 0d | 20 2a 20 69 6e 74 65 67 |ssed as.| * integ|
|00001ac0| 65 72 73 2e 20 54 68 65 | 20 6e 75 6d 62 65 72 20 |ers. The| number |
|00001ad0| 6f 66 20 73 65 67 6d 65 | 6e 74 73 20 69 6e 20 74 |of segme|nts in t|
|00001ae0| 68 65 20 63 69 72 63 6c | 65 20 69 73 20 74 68 65 |he circl|e is the|
|00001af0| 20 73 61 6d 65 20 61 73 | 20 74 68 61 74 0d 20 2a | same as| that. *|
|00001b00| 20 6f 66 20 61 6e 20 61 | 72 63 2e 0d 20 2a 0d 20 | of an a|rc.. *. |
|00001b10| 2a 2f 0d 76 6f 69 64 0d | 63 69 72 63 66 69 28 78 |*/.void.|circfi(x|
|00001b20| 2c 20 79 2c 20 72 61 64 | 69 75 73 29 0d 09 49 63 |, y, rad|ius)..Ic|
|00001b30| 6f 6f 72 64 09 78 2c 20 | 79 2c 20 72 61 64 69 75 |oord.x, |y, radiu|
|00001b40| 73 3b 0d 7b 0d 09 63 69 | 72 63 66 28 28 43 6f 6f |s;.{..ci|rcf((Coo|
|00001b50| 72 64 29 78 2c 20 28 43 | 6f 6f 72 64 29 79 2c 20 |rd)x, (C|oord)y, |
|00001b60| 28 43 6f 6f 72 64 29 72 | 61 64 69 75 73 29 3b 0d |(Coord)r|adius);.|
|00001b70| 7d 0d 0d 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |}.......|........|
|00001b80| 00 00 01 00 00 00 01 9c | 00 00 00 9c 00 00 00 46 |........|.......F|
|00001b90| 61 74 20 67 69 76 65 6e | 20 77 6f 72 6c 64 20 63 |at given| world c|
|00001ba0| 6f 6f 72 64 69 6e 61 74 | 65 73 20 65 78 70 72 65 |oordinat|es expre|
|00001bb0| 06 61 72 63 73 2e 63 61 | 02 00 00 00 54 45 58 54 |.arcs.ca|....TEXT|
|00001bc0| 3f 3f 3f 3f 01 00 00 00 | 00 40 00 00 00 00 13 87 |????....|.@......|
|00001bd0| 00 00 54 45 58 54 3f 3f | 3f 3f 01 00 00 00 00 40 |..TEXT??|??.....@|
|00001be0| 00 00 00 84 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00001bf0| 00 00 a5 20 6a 94 00 00 | 1a f3 00 00 01 e2 20 2a |... j...|...... *|
|00001c00| 20 6f 66 20 61 6e 20 61 | 72 63 2e 0d 20 2a 0d 20 | of an a|rc.. *. |
|00001c10| 2a 2f 0d 76 6f 69 64 0d | 63 69 72 63 66 69 28 78 |*/.void.|circfi(x|
|00001c20| 2c 20 79 2c 20 72 61 64 | 69 75 73 29 0d 09 49 63 |, y, rad|ius)..Ic|
|00001c30| 6f 6f 72 64 09 78 2c 20 | 79 2c 20 72 61 64 69 75 |oord.x, |y, radiu|
|00001c40| 73 3b 0d 7b 0d 09 63 69 | 72 63 66 28 28 43 6f 6f |s;.{..ci|rcf((Coo|
|00001c50| 72 64 29 78 2c 20 28 43 | 6f 6f 72 64 29 79 2c 20 |rd)x, (C|oord)y, |
|00001c60| 28 43 6f 6f 72 64 29 72 | 61 64 69 75 73 29 3b 0d |(Coord)r|adius);.|
|00001c70| 7d 0d 0d e1 00 00 00 00 | 00 01 ff ff 00 01 07 f5 |}.......|........|
|00001c80| 00 00 00 0a 00 00 12 96 | 01 05 00 00 00 00 00 00 |........|........|
|00001c90| 00 8a 00 07 00 14 00 00 | 11 c7 00 f6 00 53 f3 c4 |........|.....S..|
|00001ca0| 00 00 05 61 6e 67 6c 65 | 00 16 00 00 11 c7 00 f6 |...angle|........|
|00001cb0| 00 53 f3 cc 00 00 07 63 | 6f 73 69 6e 65 20 00 14 |.S.....c|osine ..|
|00001cc0| 00 00 11 c7 00 f6 00 53 | f3 a0 00 00 05 73 69 6e |.......S|.....sin|
|00001cd0| 65 20 00 16 00 00 12 96 | 01 05 00 53 f3 a4 00 00 |e ......|...S....|
|00001ce0| 07 72 61 64 69 75 73 20 | 00 10 00 00 12 96 01 05 |.radius |........|
|00001cf0| 00 53 f3 58 00 00 01 78 | 00 12 00 00 12 96 01 05 |.S.X...x|........|
|00001d00| 00 53 f3 94 00 00 03 63 | 79 20 00 12 00 00 12 96 |.S.....c|y ......|
|00001d10| 01 05 00 53 f3 74 00 00 | 03 63 78 20 00 00 01 00 |...S.t..|.cx ....|
|00001d20| 00 00 01 9c 00 00 00 9c | 00 00 00 46 00 61 38 48 |........|...F.a8H|
|00001d30| 09 8e 00 00 00 1c 00 46 | 00 01 42 4b 50 54 00 00 |.......F|..BKPT..|
|00001d40| 00 12 44 54 56 55 00 00 | 00 1e 23 56 ff ff 00 00 |..DTVU..|..#V....|
|00001d50| 00 00 00 00 00 00 1c a0 | ff ff 00 00 00 0e 00 00 |........|........|
|00001d60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00001d70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
+--------+-------------------------+-------------------------+--------+--------+