--- /srv/reproducible-results/rbuild-debian/r-b-build.a0YaEvsr/b1/sketch_0.3.7-12_amd64.changes +++ /srv/reproducible-results/rbuild-debian/r-b-build.a0YaEvsr/b2/sketch_0.3.7-12_amd64.changes ├── Files │ @@ -1,4 +1,4 @@ │ │ - 9a7069961c0e2efa9bf0221cacd06b09 200996 debug optional sketch-dbgsym_0.3.7-12_amd64.deb │ - 60abd764d9fe667492388baf233eff18 1165856 doc optional sketch-doc_0.3.7-12_all.deb │ - 4e814cbd6c4080c7d4fcd73a267e44f6 63284 graphics optional sketch_0.3.7-12_amd64.deb │ + 4bcaf26b9dd64aad277fce7b14f5dccc 200996 debug optional sketch-dbgsym_0.3.7-12_amd64.deb │ + 3405bbaf11aaf2e5adbc1463c0e30190 1165924 doc optional sketch-doc_0.3.7-12_all.deb │ + 6a2d923b0b3c5c076b94758d96f8e1f5 63268 graphics optional sketch_0.3.7-12_amd64.deb ├── sketch-doc_0.3.7-12_all.deb │ ├── file list │ │ @@ -1,3 +1,3 @@ │ │ -rw-r--r-- 0 0 0 4 2020-11-07 02:36:18.000000 debian-binary │ │ --rw-r--r-- 0 0 0 4296 2020-11-07 02:36:18.000000 control.tar.xz │ │ --rw-r--r-- 0 0 0 1161368 2020-11-07 02:36:18.000000 data.tar.xz │ │ +-rw-r--r-- 0 0 0 4292 2020-11-07 02:36:18.000000 control.tar.xz │ │ +-rw-r--r-- 0 0 0 1161440 2020-11-07 02:36:18.000000 data.tar.xz │ ├── control.tar.xz │ │ ├── control.tar │ │ │ ├── ./md5sums │ │ │ │ ├── ./md5sums │ │ │ │ │┄ Files differ │ ├── data.tar.xz │ │ ├── data.tar │ │ │ ├── file list │ │ │ │ @@ -128,12 +128,12 @@ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2431 2020-11-07 02:36:18.000000 ./usr/share/doc/sketch-doc/sketch/ex220.png │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2846 2020-11-07 02:36:18.000000 ./usr/share/doc/sketch-doc/sketch/ex230.png │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3579 2020-11-07 02:36:18.000000 ./usr/share/doc/sketch-doc/sketch/ex240.png │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2116 2020-11-07 02:36:18.000000 ./usr/share/doc/sketch-doc/sketch/ex250.png │ │ │ │ -rw-r--r-- 0 root (0) root (0) 2032 2020-11-07 02:36:18.000000 ./usr/share/doc/sketch-doc/sketch/ex260.png │ │ │ │ -rw-r--r-- 0 root (0) root (0) 66246 2012-02-25 02:28:13.000000 ./usr/share/doc/sketch-doc/sketch/index.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 9205 2020-11-07 02:36:18.000000 ./usr/share/doc/sketch-doc/sketch/transparent.png │ │ │ │ --rw-r--r-- 0 root (0) root (0) 708407 2020-11-07 02:36:18.000000 ./usr/share/doc/sketch-doc/sketch.pdf.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 708455 2020-11-07 02:36:18.000000 ./usr/share/doc/sketch-doc/sketch.pdf.gz │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2020-11-07 02:36:18.000000 ./usr/share/doc-base/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 398 2020-11-07 02:36:18.000000 ./usr/share/doc-base/sketch-doc.sketch │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2020-11-07 02:36:18.000000 ./usr/share/info/ │ │ │ │ --rw-r--r-- 0 root (0) root (0) 40126 2020-11-07 02:36:18.000000 ./usr/share/info/sketch.info.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 40125 2020-11-07 02:36:18.000000 ./usr/share/info/sketch.info.gz │ │ │ ├── ./usr/share/doc/sketch-doc/sketch.pdf.gz │ │ │ │ ├── sketch.pdf │ │ │ │ │ ├── pdftotext {} - │ │ │ │ │ │ @@ -1,18 +1,17 @@ │ │ │ │ │ │ Sketch │ │ │ │ │ │ Simple 3D sketching │ │ │ │ │ │ -Version 0.3 (build 7), Sunday, October 04, 2026 │ │ │ │ │ │ +Version 0.3 (build 7), Tuesday, September 02, 2025 │ │ │ │ │ │ │ │ │ │ │ │ Gene Ressler │ │ │ │ │ │ │ │ │ │ │ │ Copyright c 2005 to 2012 Eugene K. Ressler. │ │ │ │ │ │ -This manual is for sketch, version 0.3 (build 7), Sunday, October 04, 2026, a program that │ │ │ │ │ │ -converts descriptions of simple three-dimensional scenes into line drawings. This version │ │ │ │ │ │ -generates PSTricks or PGF/TikZ code suitable for use with the TEX document processing │ │ │ │ │ │ -system. │ │ │ │ │ │ +This manual is for sketch, version 0.3 (build 7), Tuesday, September 02, 2025, a program that converts descriptions of simple three-dimensional scenes into line drawings. This │ │ │ │ │ │ +version generates PSTricks or PGF/TikZ code suitable for use with the TEX document │ │ │ │ │ │ +processing system. │ │ │ │ │ │ Sketch is free software. You can redistribute it and/or modify it under the terms of the │ │ │ │ │ │ GNU General Public License as published by the Free Software Foundation; either version │ │ │ │ │ │ 3, or (at your option) any later version. │ │ │ │ │ │ Sketch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; │ │ │ │ │ │ without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. │ │ │ │ │ │ You should have received a copy of the GNU General Public License along with sketch; │ │ │ │ │ │ see the file COPYING.txt. If not, see http://www.gnu.org/copyleft. │ │ │ ├── ./usr/share/info/sketch.info.gz │ │ │ │ ├── sketch.info │ │ │ │ │ @@ -5,9793 +5,9794 @@ │ │ │ │ │ 00000040: 682e 7465 7869 2e0a 0a43 6f70 7972 6967 h.texi...Copyrig │ │ │ │ │ 00000050: 6874 20c2 a920 3230 3035 2074 6f20 3230 ht .. 2005 to 20 │ │ │ │ │ 00000060: 3132 2045 7567 656e 6520 4b2e 2052 6573 12 Eugene K. Res │ │ │ │ │ 00000070: 736c 6572 2e0a 0a20 2020 5468 6973 206d sler... This m │ │ │ │ │ 00000080: 616e 7561 6c20 6973 2066 6f72 20e2 8098 anual is for ... │ │ │ │ │ 00000090: 736b 6574 6368 e280 992c 2076 6572 7369 sketch..., versi │ │ │ │ │ 000000a0: 6f6e 2030 2e33 2028 6275 696c 6420 3729 on 0.3 (build 7) │ │ │ │ │ -000000b0: 2c20 5375 6e64 6179 2c20 4f63 746f 6265 , Sunday, Octobe │ │ │ │ │ -000000c0: 720a 3034 2c20 3230 3236 2c20 6120 7072 r.04, 2026, a pr │ │ │ │ │ -000000d0: 6f67 7261 6d20 7468 6174 2063 6f6e 7665 ogram that conve │ │ │ │ │ -000000e0: 7274 7320 6465 7363 7269 7074 696f 6e73 rts descriptions │ │ │ │ │ -000000f0: 206f 6620 7369 6d70 6c65 0a74 6872 6565 of simple.three │ │ │ │ │ -00000100: 2d64 696d 656e 7369 6f6e 616c 2073 6365 -dimensional sce │ │ │ │ │ -00000110: 6e65 7320 696e 746f 206c 696e 6520 6472 nes into line dr │ │ │ │ │ -00000120: 6177 696e 6773 2e20 2054 6869 7320 7665 awings. This ve │ │ │ │ │ -00000130: 7273 696f 6e20 6765 6e65 7261 7465 730a rsion generates. │ │ │ │ │ -00000140: e280 9850 5354 7269 636b 73e2 8099 206f ...PSTricks... o │ │ │ │ │ -00000150: 7220 e280 9850 4746 2f54 696b 5ae2 8099 r ...PGF/TikZ... │ │ │ │ │ -00000160: 2063 6f64 6520 7375 6974 6162 6c65 2066 code suitable f │ │ │ │ │ -00000170: 6f72 2075 7365 2077 6974 6820 7468 6520 or use with the │ │ │ │ │ -00000180: 5465 5820 646f 6375 6d65 6e74 0a70 726f TeX document.pro │ │ │ │ │ -00000190: 6365 7373 696e 6720 7379 7374 656d 2e0a cessing system.. │ │ │ │ │ -000001a0: 0a20 2020 e280 9853 6b65 7463 68e2 8099 . ...Sketch... │ │ │ │ │ -000001b0: 2069 7320 6672 6565 2073 6f66 7477 6172 is free softwar │ │ │ │ │ -000001c0: 652e 2020 596f 7520 6361 6e20 7265 6469 e. You can redi │ │ │ │ │ -000001d0: 7374 7269 6275 7465 2069 7420 616e 642f stribute it and/ │ │ │ │ │ -000001e0: 6f72 206d 6f64 6966 7920 6974 0a75 6e64 or modify it.und │ │ │ │ │ -000001f0: 6572 2074 6865 2074 6572 6d73 206f 6620 er the terms of │ │ │ │ │ -00000200: 7468 6520 474e 5520 4765 6e65 7261 6c20 the GNU General │ │ │ │ │ -00000210: 5075 626c 6963 204c 6963 656e 7365 2061 Public License a │ │ │ │ │ -00000220: 7320 7075 626c 6973 6865 6420 6279 2074 s published by t │ │ │ │ │ -00000230: 6865 0a46 7265 6520 536f 6674 7761 7265 he.Free Software │ │ │ │ │ -00000240: 2046 6f75 6e64 6174 696f 6e3b 2065 6974 Foundation; eit │ │ │ │ │ -00000250: 6865 7220 7665 7273 696f 6e20 332c 206f her version 3, o │ │ │ │ │ -00000260: 7220 2861 7420 796f 7572 206f 7074 696f r (at your optio │ │ │ │ │ -00000270: 6e29 2061 6e79 0a6c 6174 6572 2076 6572 n) any.later ver │ │ │ │ │ -00000280: 7369 6f6e 2e0a 0a20 2020 536b 6574 6368 sion... Sketch │ │ │ │ │ -00000290: 2069 7320 6469 7374 7269 6275 7465 6420 is distributed │ │ │ │ │ -000002a0: 696e 2074 6865 2068 6f70 6520 7468 6174 in the hope that │ │ │ │ │ -000002b0: 2069 7420 7769 6c6c 2062 6520 7573 6566 it will be usef │ │ │ │ │ -000002c0: 756c 2c20 6275 7420 5749 5448 4f55 540a ul, but WITHOUT. │ │ │ │ │ -000002d0: 414e 5920 5741 5252 414e 5459 3b20 7769 ANY WARRANTY; wi │ │ │ │ │ -000002e0: 7468 6f75 7420 6576 656e 2074 6865 2069 thout even the i │ │ │ │ │ -000002f0: 6d70 6c69 6564 2077 6172 7261 6e74 7920 mplied warranty │ │ │ │ │ -00000300: 6f66 204d 4552 4348 414e 5441 4249 4c49 of MERCHANTABILI │ │ │ │ │ -00000310: 5459 206f 720a 4649 544e 4553 5320 464f TY or.FITNESS FO │ │ │ │ │ -00000320: 5220 4120 5041 5254 4943 554c 4152 2050 R A PARTICULAR P │ │ │ │ │ -00000330: 5552 504f 5345 2e20 5365 6520 7468 6520 URPOSE. See the │ │ │ │ │ -00000340: 474e 5520 4765 6e65 7261 6c20 5075 626c GNU General Publ │ │ │ │ │ -00000350: 6963 204c 6963 656e 7365 2066 6f72 0a6d ic License for.m │ │ │ │ │ -00000360: 6f72 6520 6465 7461 696c 732e 0a0a 2020 ore details... │ │ │ │ │ -00000370: 2059 6f75 2073 686f 756c 6420 6861 7665 You should have │ │ │ │ │ -00000380: 2072 6563 6569 7665 6420 6120 636f 7079 received a copy │ │ │ │ │ -00000390: 206f 6620 7468 6520 474e 5520 4765 6e65 of the GNU Gene │ │ │ │ │ -000003a0: 7261 6c20 5075 626c 6963 204c 6963 656e ral Public Licen │ │ │ │ │ -000003b0: 7365 0a61 6c6f 6e67 2077 6974 6820 e280 se.along with .. │ │ │ │ │ -000003c0: 9873 6b65 7463 68e2 8099 3b20 7365 6520 .sketch...; see │ │ │ │ │ -000003d0: 7468 6520 6669 6c65 2043 4f50 5949 4e47 the file COPYING │ │ │ │ │ -000003e0: 2e74 7874 2e20 2049 6620 6e6f 742c 2073 .txt. If not, s │ │ │ │ │ -000003f0: 6565 0a68 7474 703a 2f2f 7777 772e 676e ee.http://www.gn │ │ │ │ │ -00000400: 752e 6f72 672f 636f 7079 6c65 6674 2e0a u.org/copyleft.. │ │ │ │ │ -00000410: 0a49 4e46 4f2d 4449 522d 5345 4354 494f .INFO-DIR-SECTIO │ │ │ │ │ -00000420: 4e20 5465 580a 5354 4152 542d 494e 464f N TeX.START-INFO │ │ │ │ │ -00000430: 2d44 4952 2d45 4e54 5259 0a2a 2053 6b65 -DIR-ENTRY.* Ske │ │ │ │ │ -00000440: 7463 683a 2028 736b 6574 6368 292e 2020 tch: (sketch). │ │ │ │ │ -00000450: 2020 2020 2020 2020 2020 2053 696d 706c Simpl │ │ │ │ │ -00000460: 6520 3344 2073 6b65 7463 6869 6e67 2066 e 3D sketching f │ │ │ │ │ -00000470: 6f72 2054 6558 0a45 4e44 2d49 4e46 4f2d or TeX.END-INFO- │ │ │ │ │ -00000480: 4449 522d 454e 5452 590a 0a1f 0a46 696c DIR-ENTRY....Fil │ │ │ │ │ -00000490: 653a 2073 6b65 7463 682e 696e 666f 2c20 e: sketch.info, │ │ │ │ │ -000004a0: 204e 6f64 653a 2054 6f70 2c20 204e 6578 Node: Top, Nex │ │ │ │ │ -000004b0: 743a 2041 626f 7574 2073 6b65 7463 682c t: About sketch, │ │ │ │ │ -000004c0: 2020 5072 6576 3a20 2864 6972 292c 2020 Prev: (dir), │ │ │ │ │ -000004d0: 5570 3a20 2864 6972 290a 0a53 6b65 7463 Up: (dir)..Sketc │ │ │ │ │ -000004e0: 680a 2a2a 2a2a 2a2a 0a0a 436f 7079 7269 h.******..Copyri │ │ │ │ │ -000004f0: 6768 7420 c2a9 2032 3030 3520 746f 2032 ght .. 2005 to 2 │ │ │ │ │ -00000500: 3031 3220 4575 6765 6e65 204b 2e20 5265 012 Eugene K. Re │ │ │ │ │ -00000510: 7373 6c65 722e 0a0a 2020 2054 6869 7320 ssler... This │ │ │ │ │ -00000520: 6d61 6e75 616c 2069 7320 666f 7220 e280 manual is for .. │ │ │ │ │ -00000530: 9873 6b65 7463 68e2 8099 2c20 7665 7273 .sketch..., vers │ │ │ │ │ -00000540: 696f 6e20 302e 3320 2862 7569 6c64 2037 ion 0.3 (build 7 │ │ │ │ │ -00000550: 292c 2053 756e 6461 792c 204f 6374 6f62 ), Sunday, Octob │ │ │ │ │ -00000560: 6572 0a30 342c 2032 3032 362c 2061 2070 er.04, 2026, a p │ │ │ │ │ -00000570: 726f 6772 616d 2074 6861 7420 636f 6e76 rogram that conv │ │ │ │ │ -00000580: 6572 7473 2064 6573 6372 6970 7469 6f6e erts description │ │ │ │ │ -00000590: 7320 6f66 2073 696d 706c 650a 7468 7265 s of simple.thre │ │ │ │ │ -000005a0: 652d 6469 6d65 6e73 696f 6e61 6c20 7363 e-dimensional sc │ │ │ │ │ -000005b0: 656e 6573 2069 6e74 6f20 6c69 6e65 2064 enes into line d │ │ │ │ │ -000005c0: 7261 7769 6e67 732e 2020 5468 6973 2076 rawings. This v │ │ │ │ │ -000005d0: 6572 7369 6f6e 2067 656e 6572 6174 6573 ersion generates │ │ │ │ │ -000005e0: 0ae2 8098 5053 5472 6963 6b73 e280 9920 ....PSTricks... │ │ │ │ │ -000005f0: 6f72 20e2 8098 5047 462f 5469 6b5a e280 or ...PGF/TikZ.. │ │ │ │ │ -00000600: 9920 636f 6465 2073 7569 7461 626c 6520 . code suitable │ │ │ │ │ -00000610: 666f 7220 7573 6520 7769 7468 2074 6865 for use with the │ │ │ │ │ -00000620: 2054 6558 2064 6f63 756d 656e 740a 7072 TeX document.pr │ │ │ │ │ -00000630: 6f63 6573 7369 6e67 2073 7973 7465 6d2e ocessing system. │ │ │ │ │ -00000640: 0a0a 2020 20e2 8098 536b 6574 6368 e280 .. ...Sketch.. │ │ │ │ │ -00000650: 9920 6973 2066 7265 6520 736f 6674 7761 . is free softwa │ │ │ │ │ -00000660: 7265 2e20 2059 6f75 2063 616e 2072 6564 re. You can red │ │ │ │ │ -00000670: 6973 7472 6962 7574 6520 6974 2061 6e64 istribute it and │ │ │ │ │ -00000680: 2f6f 7220 6d6f 6469 6679 2069 740a 756e /or modify it.un │ │ │ │ │ -00000690: 6465 7220 7468 6520 7465 726d 7320 6f66 der the terms of │ │ │ │ │ -000006a0: 2074 6865 2047 4e55 2047 656e 6572 616c the GNU General │ │ │ │ │ -000006b0: 2050 7562 6c69 6320 4c69 6365 6e73 6520 Public License │ │ │ │ │ -000006c0: 6173 2070 7562 6c69 7368 6564 2062 7920 as published by │ │ │ │ │ -000006d0: 7468 650a 4672 6565 2053 6f66 7477 6172 the.Free Softwar │ │ │ │ │ -000006e0: 6520 466f 756e 6461 7469 6f6e 3b20 6569 e Foundation; ei │ │ │ │ │ -000006f0: 7468 6572 2076 6572 7369 6f6e 2033 2c20 ther version 3, │ │ │ │ │ -00000700: 6f72 2028 6174 2079 6f75 7220 6f70 7469 or (at your opti │ │ │ │ │ -00000710: 6f6e 2920 616e 790a 6c61 7465 7220 7665 on) any.later ve │ │ │ │ │ -00000720: 7273 696f 6e2e 0a0a 2020 2053 6b65 7463 rsion... Sketc │ │ │ │ │ -00000730: 6820 6973 2064 6973 7472 6962 7574 6564 h is distributed │ │ │ │ │ -00000740: 2069 6e20 7468 6520 686f 7065 2074 6861 in the hope tha │ │ │ │ │ -00000750: 7420 6974 2077 696c 6c20 6265 2075 7365 t it will be use │ │ │ │ │ -00000760: 6675 6c2c 2062 7574 2057 4954 484f 5554 ful, but WITHOUT │ │ │ │ │ -00000770: 0a41 4e59 2057 4152 5241 4e54 593b 2077 .ANY WARRANTY; w │ │ │ │ │ -00000780: 6974 686f 7574 2065 7665 6e20 7468 6520 ithout even the │ │ │ │ │ -00000790: 696d 706c 6965 6420 7761 7272 616e 7479 implied warranty │ │ │ │ │ -000007a0: 206f 6620 4d45 5243 4841 4e54 4142 494c of MERCHANTABIL │ │ │ │ │ -000007b0: 4954 5920 6f72 0a46 4954 4e45 5353 2046 ITY or.FITNESS F │ │ │ │ │ -000007c0: 4f52 2041 2050 4152 5449 4355 4c41 5220 OR A PARTICULAR │ │ │ │ │ -000007d0: 5055 5250 4f53 452e 2053 6565 2074 6865 PURPOSE. See the │ │ │ │ │ -000007e0: 2047 4e55 2047 656e 6572 616c 2050 7562 GNU General Pub │ │ │ │ │ -000007f0: 6c69 6320 4c69 6365 6e73 6520 666f 720a lic License for. │ │ │ │ │ -00000800: 6d6f 7265 2064 6574 6169 6c73 2e0a 0a20 more details... │ │ │ │ │ -00000810: 2020 596f 7520 7368 6f75 6c64 2068 6176 You should hav │ │ │ │ │ -00000820: 6520 7265 6365 6976 6564 2061 2063 6f70 e received a cop │ │ │ │ │ -00000830: 7920 6f66 2074 6865 2047 4e55 2047 656e y of the GNU Gen │ │ │ │ │ -00000840: 6572 616c 2050 7562 6c69 6320 4c69 6365 eral Public Lice │ │ │ │ │ -00000850: 6e73 650a 616c 6f6e 6720 7769 7468 20e2 nse.along with . │ │ │ │ │ -00000860: 8098 736b 6574 6368 e280 993b 2073 6565 ..sketch...; see │ │ │ │ │ -00000870: 2074 6865 2066 696c 6520 434f 5059 494e the file COPYIN │ │ │ │ │ -00000880: 472e 7478 742e 2020 4966 206e 6f74 2c20 G.txt. If not, │ │ │ │ │ -00000890: 7365 650a 6874 7470 3a2f 2f77 7777 2e67 see.http://www.g │ │ │ │ │ -000008a0: 6e75 2e6f 7267 2f63 6f70 796c 6566 742e nu.org/copyleft. │ │ │ │ │ -000008b0: 0a0a 2a20 4d65 6e75 3a0a 0a2a 2041 626f ..* Menu:..* Abo │ │ │ │ │ -000008c0: 7574 2073 6b65 7463 683a 3a20 2020 2020 ut sketch:: │ │ │ │ │ -000008d0: 2020 2020 2020 2020 2020 2057 6879 2073 Why s │ │ │ │ │ -000008e0: 6b65 7463 6820 6578 6973 7473 2061 6e64 ketch exists and │ │ │ │ │ -000008f0: 2077 6861 7420 6974 2064 6f65 732e 0a2a what it does..* │ │ │ │ │ -00000900: 2049 6e74 726f 6475 6374 696f 6e20 6279 Introduction by │ │ │ │ │ -00000910: 2065 7861 6d70 6c65 3a3a 2020 2020 204d example:: M │ │ │ │ │ -00000920: 6f73 7420 6665 6174 7572 6573 2073 686f ost features sho │ │ │ │ │ -00000930: 776e 2061 7320 776f 726b 696e 6720 636f wn as working co │ │ │ │ │ -00000940: 6465 2e0a 2a20 496e 7075 7420 6c61 6e67 de..* Input lang │ │ │ │ │ -00000950: 7561 6765 3a3a 2020 2020 2020 2020 2020 uage:: │ │ │ │ │ -00000960: 2020 2020 5379 6e74 6178 2061 6e64 2073 Syntax and s │ │ │ │ │ -00000970: 656d 616e 7469 6373 206f 6620 e280 9873 emantics of ...s │ │ │ │ │ -00000980: 6b65 7463 68e2 8099 2063 6f6d 6d61 6e64 ketch... command │ │ │ │ │ -00000990: 732e 0a2a 2042 7569 6c64 696e 6720 6120 s..* Building a │ │ │ │ │ -000009a0: 6472 6177 696e 673a 3a20 2020 2020 2020 drawing:: │ │ │ │ │ -000009b0: 2020 2048 6f77 2074 6f20 7573 6520 e280 How to use .. │ │ │ │ │ -000009c0: 9873 6b65 7463 68e2 8099 2070 726f 6475 .sketch... produ │ │ │ │ │ -000009d0: 6374 6976 656c 792e 0a2a 2043 6f6d 6d61 ctively..* Comma │ │ │ │ │ -000009e0: 6e64 206c 696e 653a 3a20 2020 2020 2020 nd line:: │ │ │ │ │ -000009f0: 2020 2020 2020 2020 204f 7074 696f 6e73 Options │ │ │ │ │ -00000a00: 2061 6e64 2074 6865 6972 2075 7361 6765 and their usage │ │ │ │ │ -00000a10: 2e0a 2a20 496e 7374 616c 6c69 6e67 2073 ..* Installing s │ │ │ │ │ -00000a20: 6b65 7463 683a 3a20 2020 2020 2020 2020 ketch:: │ │ │ │ │ -00000a30: 2020 4275 696c 6469 6e67 2061 6e64 2069 Building and i │ │ │ │ │ -00000a40: 6e73 7461 6c6c 696e 6720 6672 6f6d 2073 nstalling from s │ │ │ │ │ -00000a50: 6f75 7263 6573 2e0a 2a20 496e 6465 7820 ources..* Index │ │ │ │ │ -00000a60: 6f66 2073 796e 7461 783a 3a0a 2a20 496e of syntax::.* In │ │ │ │ │ -00000a70: 6465 783a 3a0a 0a20 2d2d 2054 6865 2044 dex::.. -- The D │ │ │ │ │ -00000a80: 6574 6169 6c65 6420 4e6f 6465 204c 6973 etailed Node Lis │ │ │ │ │ -00000a90: 7469 6e67 202d 2d0a 0a41 626f 7574 2073 ting --..About s │ │ │ │ │ -00000aa0: 6b65 7463 680a 0a2a 2052 6570 6f72 7469 ketch..* Reporti │ │ │ │ │ -00000ab0: 6e67 2062 7567 733a 3a20 2020 2020 2020 ng bugs:: │ │ │ │ │ -00000ac0: 2020 2020 2020 204c 6574 2075 7365 206b Let use k │ │ │ │ │ -00000ad0: 6e6f 7720 7768 6174 2773 2077 726f 6e67 now what's wrong │ │ │ │ │ -00000ae0: 210a 2a20 436f 6e74 7269 6275 7469 6f6e !.* Contribution │ │ │ │ │ -00000af0: 733a 3a20 2020 2020 2020 2020 2020 2020 s:: │ │ │ │ │ -00000b00: 2020 486f 7720 796f 7520 6361 6e20 6865 How you can he │ │ │ │ │ -00000b10: 6c70 2e2e 2e2e 0a0a 496e 7472 6f64 7563 lp......Introduc │ │ │ │ │ -00000b20: 7469 6f6e 2062 7920 6578 616d 706c 650a tion by example. │ │ │ │ │ -00000b30: 0a2a 2048 656c 6c6f 2077 6f72 6c64 3a3a .* Hello world:: │ │ │ │ │ -00000b40: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -00000b50: 2053 696d 706c 6573 7420 706f 7373 6962 Simplest possib │ │ │ │ │ -00000b60: 6c65 20e2 8098 736b 6574 6368 e280 9920 le ...sketch... │ │ │ │ │ -00000b70: 7072 6f67 7261 6d2e 0a2a 2044 7261 7769 program..* Drawi │ │ │ │ │ -00000b80: 6e67 206f 7074 696f 6e73 3a3a 2020 2020 ng options:: │ │ │ │ │ -00000b90: 2020 2020 2020 2020 2043 6f6e 7472 6f6c Control │ │ │ │ │ -00000ba0: 6c69 6e67 206f 626a 6563 7420 6170 7065 ling object appe │ │ │ │ │ -00000bb0: 6172 616e 6365 2e0a 2a20 4472 6177 696e arance..* Drawin │ │ │ │ │ -00000bc0: 6720 6120 736f 6c69 643a 3a20 2020 2020 g a solid:: │ │ │ │ │ -00000bd0: 2020 2020 2020 2020 4472 6177 696e 6720 Drawing │ │ │ │ │ -00000be0: 616e 206f 626a 6563 7420 7769 7468 2033 an object with 3 │ │ │ │ │ -00000bf0: 6420 6170 7065 6172 616e 6365 2e0a 2a20 d appearance..* │ │ │ │ │ -00000c00: 5370 6563 6961 6c20 6f62 6a65 6374 733a Special objects: │ │ │ │ │ -00000c10: 3a20 2020 2020 2020 2020 2020 2020 4c61 : La │ │ │ │ │ -00000c20: 7969 6e67 2054 6558 206f 7665 722c 2069 ying TeX over, i │ │ │ │ │ -00000c30: 6e2c 206f 7220 756e 6465 7220 6472 6177 n, or under draw │ │ │ │ │ -00000c40: 696e 6773 2e0a 2a20 4f62 6a65 6374 2074 ings..* Object t │ │ │ │ │ -00000c50: 7261 6e73 666f 726d 733a 3a20 2020 2020 ransforms:: │ │ │ │ │ -00000c60: 2020 2020 2020 526f 7461 7465 2c20 7472 Rotate, tr │ │ │ │ │ -00000c70: 616e 736c 6174 652c 2073 6361 6c65 2c20 anslate, scale, │ │ │ │ │ -00000c80: 616e 6420 6f74 6865 7273 2e0a 2a20 5265 and others..* Re │ │ │ │ │ -00000c90: 7065 6174 6564 206f 626a 6563 7473 3a3a peated objects:: │ │ │ │ │ -00000ca0: 2020 2020 2020 2020 2020 2020 4d61 6b69 Maki │ │ │ │ │ -00000cb0: 6e67 2074 7261 6e73 666f 726d 6564 2063 ng transformed c │ │ │ │ │ -00000cc0: 6f70 6965 732e 0a2a 2053 7765 7074 206f opies..* Swept o │ │ │ │ │ -00000cd0: 626a 6563 7473 3a3a 2020 2020 2020 2020 bjects:: │ │ │ │ │ -00000ce0: 2020 2020 2020 2053 7765 6570 696e 6720 Sweeping │ │ │ │ │ -00000cf0: 6f62 6a65 6374 7320 696e 2073 7061 6365 objects in space │ │ │ │ │ -00000d00: 2074 6f20 6d61 6b65 206e 6577 2073 6861 to make new sha │ │ │ │ │ -00000d10: 7065 732e 0a0a 5377 6570 7420 6f62 6a65 pes...Swept obje │ │ │ │ │ -00000d20: 6374 730a 0a2a 2050 6f69 6e74 2073 7765 cts..* Point swe │ │ │ │ │ -00000d30: 6570 733a 3a20 2020 2020 2020 2020 2020 eps:: │ │ │ │ │ -00000d40: 2020 2020 2053 7765 7074 2070 6f69 6e74 Swept point │ │ │ │ │ -00000d50: 7320 6d61 6b65 206c 696e 6573 2061 6e64 s make lines and │ │ │ │ │ -00000d60: 2070 6f6c 7967 6f6e 732e 0a2a 2050 6f6c polygons..* Pol │ │ │ │ │ -00000d70: 796c 696e 6520 7377 6565 7073 3a3a 2020 yline sweeps:: │ │ │ │ │ -00000d80: 2020 2020 2020 2020 2020 2053 7765 7074 Swept │ │ │ │ │ -00000d90: 206c 696e 6573 206d 616b 6520 7375 7266 lines make surf │ │ │ │ │ -00000da0: 6163 6573 2e0a 2a20 4e65 7374 6564 2073 aces..* Nested s │ │ │ │ │ -00000db0: 7765 6570 733a 3a20 2020 2020 2020 2020 weeps:: │ │ │ │ │ -00000dc0: 2020 2020 2020 5377 6570 7420 7377 6565 Swept swee │ │ │ │ │ -00000dd0: 7073 2061 7265 2075 7365 6675 6c21 0a2a ps are useful!.* │ │ │ │ │ -00000de0: 2050 6f6c 7967 6f6e 2073 7765 6570 733a Polygon sweeps: │ │ │ │ │ -00000df0: 3a20 2020 2020 2020 2020 2020 2020 2053 : S │ │ │ │ │ -00000e00: 7765 7074 2070 6f6c 7967 6f6e 7320 6d61 wept polygons ma │ │ │ │ │ -00000e10: 6b65 2073 6f6c 6964 732e 2e2e 0a2a 2050 ke solids....* P │ │ │ │ │ -00000e20: 6f6c 796c 696e 6520 7377 6565 7073 2077 olyline sweeps w │ │ │ │ │ -00000e30: 6974 6820 636c 6f73 7572 653a 3a20 2061 ith closure:: a │ │ │ │ │ -00000e40: 6e64 2073 6f20 646f 2063 6c6f 7365 6420 nd so do closed │ │ │ │ │ -00000e50: 706f 6c79 6c69 6e65 2073 7765 6570 732e polyline sweeps. │ │ │ │ │ -00000e60: 0a2a 2041 6666 696e 6520 6172 6974 686d .* Affine arithm │ │ │ │ │ -00000e70: 6574 6963 3a3a 2020 2020 2020 2020 2020 etic:: │ │ │ │ │ -00000e80: 2053 6b65 7463 6820 7573 6566 756c 206d Sketch useful m │ │ │ │ │ -00000e90: 6174 6820 6578 7072 6573 7369 6f6e 2e0a ath expression.. │ │ │ │ │ -00000ea0: 2a20 4d6f 7265 2074 6f20 6c65 6172 6e3a * More to learn: │ │ │ │ │ -00000eb0: 3a20 2020 2020 2020 2020 2020 2020 2020 : │ │ │ │ │ -00000ec0: 4368 6563 6b20 6f75 7420 7468 6520 4d6f Check out the Mo │ │ │ │ │ -00000ed0: 6269 7573 2073 7472 6970 210a 0a49 6e70 bius strip!..Inp │ │ │ │ │ -00000ee0: 7574 206c 616e 6775 6167 650a 0a2a 204c ut language..* L │ │ │ │ │ -00000ef0: 616e 6775 6167 6520 6261 7369 6373 3a3a anguage basics:: │ │ │ │ │ -00000f00: 2020 2020 2020 2020 2020 2020 2043 6173 Cas │ │ │ │ │ -00000f10: 652c 2073 7061 6365 2c20 636f 6d6d 656e e, space, commen │ │ │ │ │ -00000f20: 7473 2c20 696e 636c 7564 6520 6669 6c65 ts, include file │ │ │ │ │ -00000f30: 732e 0a2a 2044 7261 7761 626c 6573 3a3a s..* Drawables:: │ │ │ │ │ -00000f40: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -00000f50: 2020 2054 6869 6e67 7320 7468 6174 2063 Things that c │ │ │ │ │ -00000f60: 616e 2062 6520 6472 6177 6e2e 0a2a 2044 an be drawn..* D │ │ │ │ │ -00000f70: 6566 696e 6974 696f 6e73 3a3a 2020 2020 efinitions:: │ │ │ │ │ -00000f80: 2020 2020 2020 2020 2020 2020 2047 6976 Giv │ │ │ │ │ -00000f90: 696e 6720 7468 696e 6773 206e 616d 6573 ing things names │ │ │ │ │ -00000fa0: 2e0a 2a20 476c 6f62 616c 2065 6e76 6972 ..* Global envir │ │ │ │ │ -00000fb0: 6f6e 6d65 6e74 3a3a 2020 2020 2020 2020 onment:: │ │ │ │ │ -00000fc0: 2020 4166 6665 6374 2074 6865 2065 6e74 Affect the ent │ │ │ │ │ -00000fd0: 6972 6520 6472 6177 696e 672e 0a0a 4261 ire drawing...Ba │ │ │ │ │ -00000fe0: 7369 6373 0a0a 2a20 4964 656e 7469 6669 sics..* Identifi │ │ │ │ │ -00000ff0: 6572 733a 3a20 2020 2020 2020 2020 2020 ers:: │ │ │ │ │ -00001000: 2020 2020 2020 4e61 6d65 7320 666f 7220 Names for │ │ │ │ │ -00001010: 7468 696e 6773 2e0a 2a20 4b65 7920 616e things..* Key an │ │ │ │ │ -00001020: 6420 7265 7365 7276 6564 2077 6f72 6473 d reserved words │ │ │ │ │ -00001030: 3a3a 2020 2020 2020 4e61 6d65 7320 796f :: Names yo │ │ │ │ │ -00001040: 7520 7368 6f75 6c64 6e27 7420 7573 652e u shouldn't use. │ │ │ │ │ -00001050: 0a2a 204c 6974 6572 616c 733a 3a20 2020 .* Literals:: │ │ │ │ │ -00001060: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -00001070: 2043 6f6e 7374 616e 7473 2061 6e64 2063 Constants and c │ │ │ │ │ -00001080: 6f6e 7374 7275 6374 6f72 732e 0a2a 2041 onstructors..* A │ │ │ │ │ -00001090: 7269 7468 6d65 7469 633a 3a20 2020 2020 rithmetic:: │ │ │ │ │ -000010a0: 2020 2020 2020 2020 2020 2020 2052 756c Rul │ │ │ │ │ -000010b0: 6573 2066 6f72 2065 7870 7265 7373 696f es for expressio │ │ │ │ │ -000010c0: 6e73 2e0a 2a20 4f70 7469 6f6e 733a 3a20 ns..* Options:: │ │ │ │ │ -000010d0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -000010e0: 2020 2020 4d6f 6469 6679 696e 6720 6f62 Modifying ob │ │ │ │ │ -000010f0: 6a65 6374 2061 7070 6561 7261 6e63 652e ject appearance. │ │ │ │ │ -00001100: 0a0a 4c69 7465 7261 6c73 0a0a 2a20 5363 ..Literals..* Sc │ │ │ │ │ -00001110: 616c 6172 206c 6974 6572 616c 733a 3a20 alar literals:: │ │ │ │ │ -00001120: 2020 2020 2020 2020 2020 2020 4a75 7374 Just │ │ │ │ │ -00001130: 2074 6865 206e 756d 6265 7273 2e0a 2a20 the numbers..* │ │ │ │ │ -00001140: 506f 696e 7420 616e 6420 7665 6374 6f72 Point and vector │ │ │ │ │ -00001150: 206c 6974 6572 616c 733a 3a20 2020 3364 literals:: 3d │ │ │ │ │ -00001160: 2071 7561 6e74 6974 6965 732e 0a2a 2054 quantities..* T │ │ │ │ │ -00001170: 7261 6e73 666f 726d 206c 6974 6572 616c ransform literal │ │ │ │ │ -00001180: 733a 3a20 2020 2020 2020 2020 204d 6174 s:: Mat │ │ │ │ │ -00001190: 7269 7820 666f 726d 2e0a 0a41 7269 7468 rix form...Arith │ │ │ │ │ -000011a0: 6d65 7469 6320 6578 7072 6573 7369 6f6e metic expression │ │ │ │ │ -000011b0: 730a 0a2a 2054 776f 2d6f 7065 7261 6e64 s..* Two-operand │ │ │ │ │ -000011c0: 2028 6269 6e61 7279 2920 666f 726d 733a (binary) forms: │ │ │ │ │ -000011d0: 3a20 2041 206f 7020 420a 2a20 556e 6172 : A op B.* Unar │ │ │ │ │ -000011e0: 7920 666f 726d 733a 3a20 2020 2020 2020 y forms:: │ │ │ │ │ -000011f0: 2020 2020 2020 2020 2020 6f70 2041 2028 op A ( │ │ │ │ │ -00001200: 616e 6420 6f74 6865 7273 290a 0a4f 7074 and others)..Opt │ │ │ │ │ -00001210: 696f 6e73 0a0a 2a20 5053 5472 6963 6b73 ions..* PSTricks │ │ │ │ │ -00001220: 206f 7074 696f 6e73 3a3a 2020 2020 2020 options:: │ │ │ │ │ -00001230: 2020 2020 2020 4f70 7469 6f6e 7320 696e Options in │ │ │ │ │ -00001240: 6865 7269 7465 6420 6672 6f6d 20e2 8098 herited from ... │ │ │ │ │ -00001250: 5053 5472 6963 6b73 e280 992e 0a2a 2054 PSTricks.....* T │ │ │ │ │ -00001260: 696b 5a2f 5047 4620 6f70 7469 6f6e 733a ikZ/PGF options: │ │ │ │ │ -00001270: 3a20 2020 2020 2020 2020 2020 204f 7074 : Opt │ │ │ │ │ -00001280: 696f 6e73 2069 6e68 6572 6974 6564 2066 ions inherited f │ │ │ │ │ -00001290: 726f 6d20 e280 9854 696b 5a2f 5047 46e2 rom ...TikZ/PGF. │ │ │ │ │ -000012a0: 8099 2e0a 2a20 446f 7473 2069 6e20 5469 ....* Dots in Ti │ │ │ │ │ -000012b0: 6b5a 2f50 4746 3a3a 2020 2020 2020 2020 kZ/PGF:: │ │ │ │ │ -000012c0: 2020 2020 536b 6574 6368 2075 7365 7320 Sketch uses │ │ │ │ │ -000012d0: e280 9854 696b 5a2f 5047 46e2 8099 2063 ...TikZ/PGF... c │ │ │ │ │ -000012e0: 6972 636c 6573 2066 6f72 2064 6f74 732e ircles for dots. │ │ │ │ │ -000012f0: 0a2a 2054 696b 5a2f 5047 4620 7573 6572 .* TikZ/PGF user │ │ │ │ │ -00001300: 2d64 6566 696e 6564 2073 7479 6c65 733a -defined styles: │ │ │ │ │ -00001310: 3a20 2053 7570 706f 7274 2066 6f72 20e2 : Support for . │ │ │ │ │ -00001320: 8098 5469 6b5a 2f50 4746 e280 9920 6e61 ..TikZ/PGF... na │ │ │ │ │ -00001330: 6d65 642c 2075 7365 722d 6465 6669 6e65 med, user-define │ │ │ │ │ -00001340: 6420 7374 796c 6573 2e0a 2a20 5472 616e d styles..* Tran │ │ │ │ │ -00001350: 7370 6172 656e 6379 3a3a 2020 2020 2020 sparency:: │ │ │ │ │ -00001360: 2020 2020 2020 2020 2020 5365 652d 7468 See-th │ │ │ │ │ -00001370: 726f 7567 6820 706f 6c79 676f 6e73 2e0a rough polygons.. │ │ │ │ │ -00001380: 2a20 496e 7465 726e 616c 206f 7074 696f * Internal optio │ │ │ │ │ -00001390: 6e73 3a3a 2020 2020 2020 2020 2020 2020 ns:: │ │ │ │ │ -000013a0: 4f70 7469 6f6e 7320 7573 6564 2062 7920 Options used by │ │ │ │ │ -000013b0: e280 9873 6b65 7463 68e2 8099 2e0a 0a50 ...sketch......P │ │ │ │ │ -000013c0: 6f69 6e74 206c 6973 7473 0a0a 2a20 4472 oint lists..* Dr │ │ │ │ │ -000013d0: 6177 6162 6c65 733a 3a20 2020 2020 2020 awables:: │ │ │ │ │ -000013e0: 2020 2020 2020 2020 2020 2020 5468 696e Thin │ │ │ │ │ -000013f0: 6773 2074 6861 7420 6172 6520 6472 6177 gs that are draw │ │ │ │ │ -00001400: 6e2e 0a2a 2044 6566 696e 6974 696f 6e73 n..* Definitions │ │ │ │ │ -00001410: 3a3a 2020 2020 2020 2020 2020 2020 2020 :: │ │ │ │ │ -00001420: 2020 2054 6869 6e67 7320 7769 7468 206e Things with n │ │ │ │ │ -00001430: 616d 6573 2e0a 0a44 7261 7761 626c 6573 ames...Drawables │ │ │ │ │ -00001440: 0a0a 2a20 446f 7473 3a3a 2020 2020 2020 ..* Dots:: │ │ │ │ │ +000000b0: 2c20 5475 6573 6461 792c 0a53 6570 7465 , Tuesday,.Septe │ │ │ │ │ +000000c0: 6d62 6572 2030 322c 2032 3032 352c 2061 mber 02, 2025, a │ │ │ │ │ +000000d0: 2070 726f 6772 616d 2074 6861 7420 636f program that co │ │ │ │ │ +000000e0: 6e76 6572 7473 2064 6573 6372 6970 7469 nverts descripti │ │ │ │ │ +000000f0: 6f6e 7320 6f66 2073 696d 706c 650a 7468 ons of simple.th │ │ │ │ │ +00000100: 7265 652d 6469 6d65 6e73 696f 6e61 6c20 ree-dimensional │ │ │ │ │ +00000110: 7363 656e 6573 2069 6e74 6f20 6c69 6e65 scenes into line │ │ │ │ │ +00000120: 2064 7261 7769 6e67 732e 2020 5468 6973 drawings. This │ │ │ │ │ +00000130: 2076 6572 7369 6f6e 2067 656e 6572 6174 version generat │ │ │ │ │ +00000140: 6573 0ae2 8098 5053 5472 6963 6b73 e280 es....PSTricks.. │ │ │ │ │ +00000150: 9920 6f72 20e2 8098 5047 462f 5469 6b5a . or ...PGF/TikZ │ │ │ │ │ +00000160: e280 9920 636f 6465 2073 7569 7461 626c ... code suitabl │ │ │ │ │ +00000170: 6520 666f 7220 7573 6520 7769 7468 2074 e for use with t │ │ │ │ │ +00000180: 6865 2054 6558 2064 6f63 756d 656e 740a he TeX document. │ │ │ │ │ +00000190: 7072 6f63 6573 7369 6e67 2073 7973 7465 processing syste │ │ │ │ │ +000001a0: 6d2e 0a0a 2020 20e2 8098 536b 6574 6368 m... ...Sketch │ │ │ │ │ +000001b0: e280 9920 6973 2066 7265 6520 736f 6674 ... is free soft │ │ │ │ │ +000001c0: 7761 7265 2e20 2059 6f75 2063 616e 2072 ware. You can r │ │ │ │ │ +000001d0: 6564 6973 7472 6962 7574 6520 6974 2061 edistribute it a │ │ │ │ │ +000001e0: 6e64 2f6f 7220 6d6f 6469 6679 2069 740a nd/or modify it. │ │ │ │ │ +000001f0: 756e 6465 7220 7468 6520 7465 726d 7320 under the terms │ │ │ │ │ +00000200: 6f66 2074 6865 2047 4e55 2047 656e 6572 of the GNU Gener │ │ │ │ │ +00000210: 616c 2050 7562 6c69 6320 4c69 6365 6e73 al Public Licens │ │ │ │ │ +00000220: 6520 6173 2070 7562 6c69 7368 6564 2062 e as published b │ │ │ │ │ +00000230: 7920 7468 650a 4672 6565 2053 6f66 7477 y the.Free Softw │ │ │ │ │ +00000240: 6172 6520 466f 756e 6461 7469 6f6e 3b20 are Foundation; │ │ │ │ │ +00000250: 6569 7468 6572 2076 6572 7369 6f6e 2033 either version 3 │ │ │ │ │ +00000260: 2c20 6f72 2028 6174 2079 6f75 7220 6f70 , or (at your op │ │ │ │ │ +00000270: 7469 6f6e 2920 616e 790a 6c61 7465 7220 tion) any.later │ │ │ │ │ +00000280: 7665 7273 696f 6e2e 0a0a 2020 2053 6b65 version... Ske │ │ │ │ │ +00000290: 7463 6820 6973 2064 6973 7472 6962 7574 tch is distribut │ │ │ │ │ +000002a0: 6564 2069 6e20 7468 6520 686f 7065 2074 ed in the hope t │ │ │ │ │ +000002b0: 6861 7420 6974 2077 696c 6c20 6265 2075 hat it will be u │ │ │ │ │ +000002c0: 7365 6675 6c2c 2062 7574 2057 4954 484f seful, but WITHO │ │ │ │ │ +000002d0: 5554 0a41 4e59 2057 4152 5241 4e54 593b UT.ANY WARRANTY; │ │ │ │ │ +000002e0: 2077 6974 686f 7574 2065 7665 6e20 7468 without even th │ │ │ │ │ +000002f0: 6520 696d 706c 6965 6420 7761 7272 616e e implied warran │ │ │ │ │ +00000300: 7479 206f 6620 4d45 5243 4841 4e54 4142 ty of MERCHANTAB │ │ │ │ │ +00000310: 494c 4954 5920 6f72 0a46 4954 4e45 5353 ILITY or.FITNESS │ │ │ │ │ +00000320: 2046 4f52 2041 2050 4152 5449 4355 4c41 FOR A PARTICULA │ │ │ │ │ +00000330: 5220 5055 5250 4f53 452e 2053 6565 2074 R PURPOSE. See t │ │ │ │ │ +00000340: 6865 2047 4e55 2047 656e 6572 616c 2050 he GNU General P │ │ │ │ │ +00000350: 7562 6c69 6320 4c69 6365 6e73 6520 666f ublic License fo │ │ │ │ │ +00000360: 720a 6d6f 7265 2064 6574 6169 6c73 2e0a r.more details.. │ │ │ │ │ +00000370: 0a20 2020 596f 7520 7368 6f75 6c64 2068 . You should h │ │ │ │ │ +00000380: 6176 6520 7265 6365 6976 6564 2061 2063 ave received a c │ │ │ │ │ +00000390: 6f70 7920 6f66 2074 6865 2047 4e55 2047 opy of the GNU G │ │ │ │ │ +000003a0: 656e 6572 616c 2050 7562 6c69 6320 4c69 eneral Public Li │ │ │ │ │ +000003b0: 6365 6e73 650a 616c 6f6e 6720 7769 7468 cense.along with │ │ │ │ │ +000003c0: 20e2 8098 736b 6574 6368 e280 993b 2073 ...sketch...; s │ │ │ │ │ +000003d0: 6565 2074 6865 2066 696c 6520 434f 5059 ee the file COPY │ │ │ │ │ +000003e0: 494e 472e 7478 742e 2020 4966 206e 6f74 ING.txt. If not │ │ │ │ │ +000003f0: 2c20 7365 650a 6874 7470 3a2f 2f77 7777 , see.http://www │ │ │ │ │ +00000400: 2e67 6e75 2e6f 7267 2f63 6f70 796c 6566 .gnu.org/copylef │ │ │ │ │ +00000410: 742e 0a0a 494e 464f 2d44 4952 2d53 4543 t...INFO-DIR-SEC │ │ │ │ │ +00000420: 5449 4f4e 2054 6558 0a53 5441 5254 2d49 TION TeX.START-I │ │ │ │ │ +00000430: 4e46 4f2d 4449 522d 454e 5452 590a 2a20 NFO-DIR-ENTRY.* │ │ │ │ │ +00000440: 536b 6574 6368 3a20 2873 6b65 7463 6829 Sketch: (sketch) │ │ │ │ │ +00000450: 2e20 2020 2020 2020 2020 2020 2020 5369 . Si │ │ │ │ │ +00000460: 6d70 6c65 2033 4420 736b 6574 6368 696e mple 3D sketchin │ │ │ │ │ +00000470: 6720 666f 7220 5465 580a 454e 442d 494e g for TeX.END-IN │ │ │ │ │ +00000480: 464f 2d44 4952 2d45 4e54 5259 0a0a 1f0a FO-DIR-ENTRY.... │ │ │ │ │ +00000490: 4669 6c65 3a20 736b 6574 6368 2e69 6e66 File: sketch.inf │ │ │ │ │ +000004a0: 6f2c 2020 4e6f 6465 3a20 546f 702c 2020 o, Node: Top, │ │ │ │ │ +000004b0: 4e65 7874 3a20 4162 6f75 7420 736b 6574 Next: About sket │ │ │ │ │ +000004c0: 6368 2c20 2050 7265 763a 2028 6469 7229 ch, Prev: (dir) │ │ │ │ │ +000004d0: 2c20 2055 703a 2028 6469 7229 0a0a 536b , Up: (dir)..Sk │ │ │ │ │ +000004e0: 6574 6368 0a2a 2a2a 2a2a 2a0a 0a43 6f70 etch.******..Cop │ │ │ │ │ +000004f0: 7972 6967 6874 20c2 a920 3230 3035 2074 yright .. 2005 t │ │ │ │ │ +00000500: 6f20 3230 3132 2045 7567 656e 6520 4b2e o 2012 Eugene K. │ │ │ │ │ +00000510: 2052 6573 736c 6572 2e0a 0a20 2020 5468 Ressler... Th │ │ │ │ │ +00000520: 6973 206d 616e 7561 6c20 6973 2066 6f72 is manual is for │ │ │ │ │ +00000530: 20e2 8098 736b 6574 6368 e280 992c 2076 ...sketch..., v │ │ │ │ │ +00000540: 6572 7369 6f6e 2030 2e33 2028 6275 696c ersion 0.3 (buil │ │ │ │ │ +00000550: 6420 3729 2c20 5475 6573 6461 792c 0a53 d 7), Tuesday,.S │ │ │ │ │ +00000560: 6570 7465 6d62 6572 2030 322c 2032 3032 eptember 02, 202 │ │ │ │ │ +00000570: 352c 2061 2070 726f 6772 616d 2074 6861 5, a program tha │ │ │ │ │ +00000580: 7420 636f 6e76 6572 7473 2064 6573 6372 t converts descr │ │ │ │ │ +00000590: 6970 7469 6f6e 7320 6f66 2073 696d 706c iptions of simpl │ │ │ │ │ +000005a0: 650a 7468 7265 652d 6469 6d65 6e73 696f e.three-dimensio │ │ │ │ │ +000005b0: 6e61 6c20 7363 656e 6573 2069 6e74 6f20 nal scenes into │ │ │ │ │ +000005c0: 6c69 6e65 2064 7261 7769 6e67 732e 2020 line drawings. │ │ │ │ │ +000005d0: 5468 6973 2076 6572 7369 6f6e 2067 656e This version gen │ │ │ │ │ +000005e0: 6572 6174 6573 0ae2 8098 5053 5472 6963 erates....PSTric │ │ │ │ │ +000005f0: 6b73 e280 9920 6f72 20e2 8098 5047 462f ks... or ...PGF/ │ │ │ │ │ +00000600: 5469 6b5a e280 9920 636f 6465 2073 7569 TikZ... code sui │ │ │ │ │ +00000610: 7461 626c 6520 666f 7220 7573 6520 7769 table for use wi │ │ │ │ │ +00000620: 7468 2074 6865 2054 6558 2064 6f63 756d th the TeX docum │ │ │ │ │ +00000630: 656e 740a 7072 6f63 6573 7369 6e67 2073 ent.processing s │ │ │ │ │ +00000640: 7973 7465 6d2e 0a0a 2020 20e2 8098 536b ystem... ...Sk │ │ │ │ │ +00000650: 6574 6368 e280 9920 6973 2066 7265 6520 etch... is free │ │ │ │ │ +00000660: 736f 6674 7761 7265 2e20 2059 6f75 2063 software. You c │ │ │ │ │ +00000670: 616e 2072 6564 6973 7472 6962 7574 6520 an redistribute │ │ │ │ │ +00000680: 6974 2061 6e64 2f6f 7220 6d6f 6469 6679 it and/or modify │ │ │ │ │ +00000690: 2069 740a 756e 6465 7220 7468 6520 7465 it.under the te │ │ │ │ │ +000006a0: 726d 7320 6f66 2074 6865 2047 4e55 2047 rms of the GNU G │ │ │ │ │ +000006b0: 656e 6572 616c 2050 7562 6c69 6320 4c69 eneral Public Li │ │ │ │ │ +000006c0: 6365 6e73 6520 6173 2070 7562 6c69 7368 cense as publish │ │ │ │ │ +000006d0: 6564 2062 7920 7468 650a 4672 6565 2053 ed by the.Free S │ │ │ │ │ +000006e0: 6f66 7477 6172 6520 466f 756e 6461 7469 oftware Foundati │ │ │ │ │ +000006f0: 6f6e 3b20 6569 7468 6572 2076 6572 7369 on; either versi │ │ │ │ │ +00000700: 6f6e 2033 2c20 6f72 2028 6174 2079 6f75 on 3, or (at you │ │ │ │ │ +00000710: 7220 6f70 7469 6f6e 2920 616e 790a 6c61 r option) any.la │ │ │ │ │ +00000720: 7465 7220 7665 7273 696f 6e2e 0a0a 2020 ter version... │ │ │ │ │ +00000730: 2053 6b65 7463 6820 6973 2064 6973 7472 Sketch is distr │ │ │ │ │ +00000740: 6962 7574 6564 2069 6e20 7468 6520 686f ibuted in the ho │ │ │ │ │ +00000750: 7065 2074 6861 7420 6974 2077 696c 6c20 pe that it will │ │ │ │ │ +00000760: 6265 2075 7365 6675 6c2c 2062 7574 2057 be useful, but W │ │ │ │ │ +00000770: 4954 484f 5554 0a41 4e59 2057 4152 5241 ITHOUT.ANY WARRA │ │ │ │ │ +00000780: 4e54 593b 2077 6974 686f 7574 2065 7665 NTY; without eve │ │ │ │ │ +00000790: 6e20 7468 6520 696d 706c 6965 6420 7761 n the implied wa │ │ │ │ │ +000007a0: 7272 616e 7479 206f 6620 4d45 5243 4841 rranty of MERCHA │ │ │ │ │ +000007b0: 4e54 4142 494c 4954 5920 6f72 0a46 4954 NTABILITY or.FIT │ │ │ │ │ +000007c0: 4e45 5353 2046 4f52 2041 2050 4152 5449 NESS FOR A PARTI │ │ │ │ │ +000007d0: 4355 4c41 5220 5055 5250 4f53 452e 2053 CULAR PURPOSE. S │ │ │ │ │ +000007e0: 6565 2074 6865 2047 4e55 2047 656e 6572 ee the GNU Gener │ │ │ │ │ +000007f0: 616c 2050 7562 6c69 6320 4c69 6365 6e73 al Public Licens │ │ │ │ │ +00000800: 6520 666f 720a 6d6f 7265 2064 6574 6169 e for.more detai │ │ │ │ │ +00000810: 6c73 2e0a 0a20 2020 596f 7520 7368 6f75 ls... You shou │ │ │ │ │ +00000820: 6c64 2068 6176 6520 7265 6365 6976 6564 ld have received │ │ │ │ │ +00000830: 2061 2063 6f70 7920 6f66 2074 6865 2047 a copy of the G │ │ │ │ │ +00000840: 4e55 2047 656e 6572 616c 2050 7562 6c69 NU General Publi │ │ │ │ │ +00000850: 6320 4c69 6365 6e73 650a 616c 6f6e 6720 c License.along │ │ │ │ │ +00000860: 7769 7468 20e2 8098 736b 6574 6368 e280 with ...sketch.. │ │ │ │ │ +00000870: 993b 2073 6565 2074 6865 2066 696c 6520 .; see the file │ │ │ │ │ +00000880: 434f 5059 494e 472e 7478 742e 2020 4966 COPYING.txt. If │ │ │ │ │ +00000890: 206e 6f74 2c20 7365 650a 6874 7470 3a2f not, see.http:/ │ │ │ │ │ +000008a0: 2f77 7777 2e67 6e75 2e6f 7267 2f63 6f70 /www.gnu.org/cop │ │ │ │ │ +000008b0: 796c 6566 742e 0a0a 2a20 4d65 6e75 3a0a yleft...* Menu:. │ │ │ │ │ +000008c0: 0a2a 2041 626f 7574 2073 6b65 7463 683a .* About sketch: │ │ │ │ │ +000008d0: 3a20 2020 2020 2020 2020 2020 2020 2020 : │ │ │ │ │ +000008e0: 2057 6879 2073 6b65 7463 6820 6578 6973 Why sketch exis │ │ │ │ │ +000008f0: 7473 2061 6e64 2077 6861 7420 6974 2064 ts and what it d │ │ │ │ │ +00000900: 6f65 732e 0a2a 2049 6e74 726f 6475 6374 oes..* Introduct │ │ │ │ │ +00000910: 696f 6e20 6279 2065 7861 6d70 6c65 3a3a ion by example:: │ │ │ │ │ +00000920: 2020 2020 204d 6f73 7420 6665 6174 7572 Most featur │ │ │ │ │ +00000930: 6573 2073 686f 776e 2061 7320 776f 726b es shown as work │ │ │ │ │ +00000940: 696e 6720 636f 6465 2e0a 2a20 496e 7075 ing code..* Inpu │ │ │ │ │ +00000950: 7420 6c61 6e67 7561 6765 3a3a 2020 2020 t language:: │ │ │ │ │ +00000960: 2020 2020 2020 2020 2020 5379 6e74 6178 Syntax │ │ │ │ │ +00000970: 2061 6e64 2073 656d 616e 7469 6373 206f and semantics o │ │ │ │ │ +00000980: 6620 e280 9873 6b65 7463 68e2 8099 2063 f ...sketch... c │ │ │ │ │ +00000990: 6f6d 6d61 6e64 732e 0a2a 2042 7569 6c64 ommands..* Build │ │ │ │ │ +000009a0: 696e 6720 6120 6472 6177 696e 673a 3a20 ing a drawing:: │ │ │ │ │ +000009b0: 2020 2020 2020 2020 2048 6f77 2074 6f20 How to │ │ │ │ │ +000009c0: 7573 6520 e280 9873 6b65 7463 68e2 8099 use ...sketch... │ │ │ │ │ +000009d0: 2070 726f 6475 6374 6976 656c 792e 0a2a productively..* │ │ │ │ │ +000009e0: 2043 6f6d 6d61 6e64 206c 696e 653a 3a20 Command line:: │ │ │ │ │ +000009f0: 2020 2020 2020 2020 2020 2020 2020 204f O │ │ │ │ │ +00000a00: 7074 696f 6e73 2061 6e64 2074 6865 6972 ptions and their │ │ │ │ │ +00000a10: 2075 7361 6765 2e0a 2a20 496e 7374 616c usage..* Instal │ │ │ │ │ +00000a20: 6c69 6e67 2073 6b65 7463 683a 3a20 2020 ling sketch:: │ │ │ │ │ +00000a30: 2020 2020 2020 2020 4275 696c 6469 6e67 Building │ │ │ │ │ +00000a40: 2061 6e64 2069 6e73 7461 6c6c 696e 6720 and installing │ │ │ │ │ +00000a50: 6672 6f6d 2073 6f75 7263 6573 2e0a 2a20 from sources..* │ │ │ │ │ +00000a60: 496e 6465 7820 6f66 2073 796e 7461 783a Index of syntax: │ │ │ │ │ +00000a70: 3a0a 2a20 496e 6465 783a 3a0a 0a20 2d2d :.* Index::.. -- │ │ │ │ │ +00000a80: 2054 6865 2044 6574 6169 6c65 6420 4e6f The Detailed No │ │ │ │ │ +00000a90: 6465 204c 6973 7469 6e67 202d 2d0a 0a41 de Listing --..A │ │ │ │ │ +00000aa0: 626f 7574 2073 6b65 7463 680a 0a2a 2052 bout sketch..* R │ │ │ │ │ +00000ab0: 6570 6f72 7469 6e67 2062 7567 733a 3a20 eporting bugs:: │ │ │ │ │ +00000ac0: 2020 2020 2020 2020 2020 2020 204c 6574 Let │ │ │ │ │ +00000ad0: 2075 7365 206b 6e6f 7720 7768 6174 2773 use know what's │ │ │ │ │ +00000ae0: 2077 726f 6e67 210a 2a20 436f 6e74 7269 wrong!.* Contri │ │ │ │ │ +00000af0: 6275 7469 6f6e 733a 3a20 2020 2020 2020 butions:: │ │ │ │ │ +00000b00: 2020 2020 2020 2020 486f 7720 796f 7520 How you │ │ │ │ │ +00000b10: 6361 6e20 6865 6c70 2e2e 2e2e 0a0a 496e can help......In │ │ │ │ │ +00000b20: 7472 6f64 7563 7469 6f6e 2062 7920 6578 troduction by ex │ │ │ │ │ +00000b30: 616d 706c 650a 0a2a 2048 656c 6c6f 2077 ample..* Hello w │ │ │ │ │ +00000b40: 6f72 6c64 3a3a 2020 2020 2020 2020 2020 orld:: │ │ │ │ │ +00000b50: 2020 2020 2020 2053 696d 706c 6573 7420 Simplest │ │ │ │ │ +00000b60: 706f 7373 6962 6c65 20e2 8098 736b 6574 possible ...sket │ │ │ │ │ +00000b70: 6368 e280 9920 7072 6f67 7261 6d2e 0a2a ch... program..* │ │ │ │ │ +00000b80: 2044 7261 7769 6e67 206f 7074 696f 6e73 Drawing options │ │ │ │ │ +00000b90: 3a3a 2020 2020 2020 2020 2020 2020 2043 :: C │ │ │ │ │ +00000ba0: 6f6e 7472 6f6c 6c69 6e67 206f 626a 6563 ontrolling objec │ │ │ │ │ +00000bb0: 7420 6170 7065 6172 616e 6365 2e0a 2a20 t appearance..* │ │ │ │ │ +00000bc0: 4472 6177 696e 6720 6120 736f 6c69 643a Drawing a solid: │ │ │ │ │ +00000bd0: 3a20 2020 2020 2020 2020 2020 2020 4472 : Dr │ │ │ │ │ +00000be0: 6177 696e 6720 616e 206f 626a 6563 7420 awing an object │ │ │ │ │ +00000bf0: 7769 7468 2033 6420 6170 7065 6172 616e with 3d appearan │ │ │ │ │ +00000c00: 6365 2e0a 2a20 5370 6563 6961 6c20 6f62 ce..* Special ob │ │ │ │ │ +00000c10: 6a65 6374 733a 3a20 2020 2020 2020 2020 jects:: │ │ │ │ │ +00000c20: 2020 2020 4c61 7969 6e67 2054 6558 206f Laying TeX o │ │ │ │ │ +00000c30: 7665 722c 2069 6e2c 206f 7220 756e 6465 ver, in, or unde │ │ │ │ │ +00000c40: 7220 6472 6177 696e 6773 2e0a 2a20 4f62 r drawings..* Ob │ │ │ │ │ +00000c50: 6a65 6374 2074 7261 6e73 666f 726d 733a ject transforms: │ │ │ │ │ +00000c60: 3a20 2020 2020 2020 2020 2020 526f 7461 : Rota │ │ │ │ │ +00000c70: 7465 2c20 7472 616e 736c 6174 652c 2073 te, translate, s │ │ │ │ │ +00000c80: 6361 6c65 2c20 616e 6420 6f74 6865 7273 cale, and others │ │ │ │ │ +00000c90: 2e0a 2a20 5265 7065 6174 6564 206f 626a ..* Repeated obj │ │ │ │ │ +00000ca0: 6563 7473 3a3a 2020 2020 2020 2020 2020 ects:: │ │ │ │ │ +00000cb0: 2020 4d61 6b69 6e67 2074 7261 6e73 666f Making transfo │ │ │ │ │ +00000cc0: 726d 6564 2063 6f70 6965 732e 0a2a 2053 rmed copies..* S │ │ │ │ │ +00000cd0: 7765 7074 206f 626a 6563 7473 3a3a 2020 wept objects:: │ │ │ │ │ +00000ce0: 2020 2020 2020 2020 2020 2020 2053 7765 Swe │ │ │ │ │ +00000cf0: 6570 696e 6720 6f62 6a65 6374 7320 696e eping objects in │ │ │ │ │ +00000d00: 2073 7061 6365 2074 6f20 6d61 6b65 206e space to make n │ │ │ │ │ +00000d10: 6577 2073 6861 7065 732e 0a0a 5377 6570 ew shapes...Swep │ │ │ │ │ +00000d20: 7420 6f62 6a65 6374 730a 0a2a 2050 6f69 t objects..* Poi │ │ │ │ │ +00000d30: 6e74 2073 7765 6570 733a 3a20 2020 2020 nt sweeps:: │ │ │ │ │ +00000d40: 2020 2020 2020 2020 2020 2053 7765 7074 Swept │ │ │ │ │ +00000d50: 2070 6f69 6e74 7320 6d61 6b65 206c 696e points make lin │ │ │ │ │ +00000d60: 6573 2061 6e64 2070 6f6c 7967 6f6e 732e es and polygons. │ │ │ │ │ +00000d70: 0a2a 2050 6f6c 796c 696e 6520 7377 6565 .* Polyline swee │ │ │ │ │ +00000d80: 7073 3a3a 2020 2020 2020 2020 2020 2020 ps:: │ │ │ │ │ +00000d90: 2053 7765 7074 206c 696e 6573 206d 616b Swept lines mak │ │ │ │ │ +00000da0: 6520 7375 7266 6163 6573 2e0a 2a20 4e65 e surfaces..* Ne │ │ │ │ │ +00000db0: 7374 6564 2073 7765 6570 733a 3a20 2020 sted sweeps:: │ │ │ │ │ +00000dc0: 2020 2020 2020 2020 2020 2020 5377 6570 Swep │ │ │ │ │ +00000dd0: 7420 7377 6565 7073 2061 7265 2075 7365 t sweeps are use │ │ │ │ │ +00000de0: 6675 6c21 0a2a 2050 6f6c 7967 6f6e 2073 ful!.* Polygon s │ │ │ │ │ +00000df0: 7765 6570 733a 3a20 2020 2020 2020 2020 weeps:: │ │ │ │ │ +00000e00: 2020 2020 2053 7765 7074 2070 6f6c 7967 Swept polyg │ │ │ │ │ +00000e10: 6f6e 7320 6d61 6b65 2073 6f6c 6964 732e ons make solids. │ │ │ │ │ +00000e20: 2e2e 0a2a 2050 6f6c 796c 696e 6520 7377 ...* Polyline sw │ │ │ │ │ +00000e30: 6565 7073 2077 6974 6820 636c 6f73 7572 eeps with closur │ │ │ │ │ +00000e40: 653a 3a20 2061 6e64 2073 6f20 646f 2063 e:: and so do c │ │ │ │ │ +00000e50: 6c6f 7365 6420 706f 6c79 6c69 6e65 2073 losed polyline s │ │ │ │ │ +00000e60: 7765 6570 732e 0a2a 2041 6666 696e 6520 weeps..* Affine │ │ │ │ │ +00000e70: 6172 6974 686d 6574 6963 3a3a 2020 2020 arithmetic:: │ │ │ │ │ +00000e80: 2020 2020 2020 2053 6b65 7463 6820 7573 Sketch us │ │ │ │ │ +00000e90: 6566 756c 206d 6174 6820 6578 7072 6573 eful math expres │ │ │ │ │ +00000ea0: 7369 6f6e 2e0a 2a20 4d6f 7265 2074 6f20 sion..* More to │ │ │ │ │ +00000eb0: 6c65 6172 6e3a 3a20 2020 2020 2020 2020 learn:: │ │ │ │ │ +00000ec0: 2020 2020 2020 4368 6563 6b20 6f75 7420 Check out │ │ │ │ │ +00000ed0: 7468 6520 4d6f 6269 7573 2073 7472 6970 the Mobius strip │ │ │ │ │ +00000ee0: 210a 0a49 6e70 7574 206c 616e 6775 6167 !..Input languag │ │ │ │ │ +00000ef0: 650a 0a2a 204c 616e 6775 6167 6520 6261 e..* Language ba │ │ │ │ │ +00000f00: 7369 6373 3a3a 2020 2020 2020 2020 2020 sics:: │ │ │ │ │ +00000f10: 2020 2043 6173 652c 2073 7061 6365 2c20 Case, space, │ │ │ │ │ +00000f20: 636f 6d6d 656e 7473 2c20 696e 636c 7564 comments, includ │ │ │ │ │ +00000f30: 6520 6669 6c65 732e 0a2a 2044 7261 7761 e files..* Drawa │ │ │ │ │ +00000f40: 626c 6573 3a3a 2020 2020 2020 2020 2020 bles:: │ │ │ │ │ +00000f50: 2020 2020 2020 2020 2054 6869 6e67 7320 Things │ │ │ │ │ +00000f60: 7468 6174 2063 616e 2062 6520 6472 6177 that can be draw │ │ │ │ │ +00000f70: 6e2e 0a2a 2044 6566 696e 6974 696f 6e73 n..* Definitions │ │ │ │ │ +00000f80: 3a3a 2020 2020 2020 2020 2020 2020 2020 :: │ │ │ │ │ +00000f90: 2020 2047 6976 696e 6720 7468 696e 6773 Giving things │ │ │ │ │ +00000fa0: 206e 616d 6573 2e0a 2a20 476c 6f62 616c names..* Global │ │ │ │ │ +00000fb0: 2065 6e76 6972 6f6e 6d65 6e74 3a3a 2020 environment:: │ │ │ │ │ +00000fc0: 2020 2020 2020 2020 4166 6665 6374 2074 Affect t │ │ │ │ │ +00000fd0: 6865 2065 6e74 6972 6520 6472 6177 696e he entire drawin │ │ │ │ │ +00000fe0: 672e 0a0a 4261 7369 6373 0a0a 2a20 4964 g...Basics..* Id │ │ │ │ │ +00000ff0: 656e 7469 6669 6572 733a 3a20 2020 2020 entifiers:: │ │ │ │ │ +00001000: 2020 2020 2020 2020 2020 2020 4e61 6d65 Name │ │ │ │ │ +00001010: 7320 666f 7220 7468 696e 6773 2e0a 2a20 s for things..* │ │ │ │ │ +00001020: 4b65 7920 616e 6420 7265 7365 7276 6564 Key and reserved │ │ │ │ │ +00001030: 2077 6f72 6473 3a3a 2020 2020 2020 4e61 words:: Na │ │ │ │ │ +00001040: 6d65 7320 796f 7520 7368 6f75 6c64 6e27 mes you shouldn' │ │ │ │ │ +00001050: 7420 7573 652e 0a2a 204c 6974 6572 616c t use..* Literal │ │ │ │ │ +00001060: 733a 3a20 2020 2020 2020 2020 2020 2020 s:: │ │ │ │ │ +00001070: 2020 2020 2020 2043 6f6e 7374 616e 7473 Constants │ │ │ │ │ +00001080: 2061 6e64 2063 6f6e 7374 7275 6374 6f72 and constructor │ │ │ │ │ +00001090: 732e 0a2a 2041 7269 7468 6d65 7469 633a s..* Arithmetic: │ │ │ │ │ +000010a0: 3a20 2020 2020 2020 2020 2020 2020 2020 : │ │ │ │ │ +000010b0: 2020 2052 756c 6573 2066 6f72 2065 7870 Rules for exp │ │ │ │ │ +000010c0: 7265 7373 696f 6e73 2e0a 2a20 4f70 7469 ressions..* Opti │ │ │ │ │ +000010d0: 6f6e 733a 3a20 2020 2020 2020 2020 2020 ons:: │ │ │ │ │ +000010e0: 2020 2020 2020 2020 2020 4d6f 6469 6679 Modify │ │ │ │ │ +000010f0: 696e 6720 6f62 6a65 6374 2061 7070 6561 ing object appea │ │ │ │ │ +00001100: 7261 6e63 652e 0a0a 4c69 7465 7261 6c73 rance...Literals │ │ │ │ │ +00001110: 0a0a 2a20 5363 616c 6172 206c 6974 6572 ..* Scalar liter │ │ │ │ │ +00001120: 616c 733a 3a20 2020 2020 2020 2020 2020 als:: │ │ │ │ │ +00001130: 2020 4a75 7374 2074 6865 206e 756d 6265 Just the numbe │ │ │ │ │ +00001140: 7273 2e0a 2a20 506f 696e 7420 616e 6420 rs..* Point and │ │ │ │ │ +00001150: 7665 6374 6f72 206c 6974 6572 616c 733a vector literals: │ │ │ │ │ +00001160: 3a20 2020 3364 2071 7561 6e74 6974 6965 : 3d quantitie │ │ │ │ │ +00001170: 732e 0a2a 2054 7261 6e73 666f 726d 206c s..* Transform l │ │ │ │ │ +00001180: 6974 6572 616c 733a 3a20 2020 2020 2020 iterals:: │ │ │ │ │ +00001190: 2020 204d 6174 7269 7820 666f 726d 2e0a Matrix form.. │ │ │ │ │ +000011a0: 0a41 7269 7468 6d65 7469 6320 6578 7072 .Arithmetic expr │ │ │ │ │ +000011b0: 6573 7369 6f6e 730a 0a2a 2054 776f 2d6f essions..* Two-o │ │ │ │ │ +000011c0: 7065 7261 6e64 2028 6269 6e61 7279 2920 perand (binary) │ │ │ │ │ +000011d0: 666f 726d 733a 3a20 2041 206f 7020 420a forms:: A op B. │ │ │ │ │ +000011e0: 2a20 556e 6172 7920 666f 726d 733a 3a20 * Unary forms:: │ │ │ │ │ +000011f0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +00001200: 6f70 2041 2028 616e 6420 6f74 6865 7273 op A (and others │ │ │ │ │ +00001210: 290a 0a4f 7074 696f 6e73 0a0a 2a20 5053 )..Options..* PS │ │ │ │ │ +00001220: 5472 6963 6b73 206f 7074 696f 6e73 3a3a Tricks options:: │ │ │ │ │ +00001230: 2020 2020 2020 2020 2020 2020 4f70 7469 Opti │ │ │ │ │ +00001240: 6f6e 7320 696e 6865 7269 7465 6420 6672 ons inherited fr │ │ │ │ │ +00001250: 6f6d 20e2 8098 5053 5472 6963 6b73 e280 om ...PSTricks.. │ │ │ │ │ +00001260: 992e 0a2a 2054 696b 5a2f 5047 4620 6f70 ...* TikZ/PGF op │ │ │ │ │ +00001270: 7469 6f6e 733a 3a20 2020 2020 2020 2020 tions:: │ │ │ │ │ +00001280: 2020 204f 7074 696f 6e73 2069 6e68 6572 Options inher │ │ │ │ │ +00001290: 6974 6564 2066 726f 6d20 e280 9854 696b ited from ...Tik │ │ │ │ │ +000012a0: 5a2f 5047 46e2 8099 2e0a 2a20 446f 7473 Z/PGF.....* Dots │ │ │ │ │ +000012b0: 2069 6e20 5469 6b5a 2f50 4746 3a3a 2020 in TikZ/PGF:: │ │ │ │ │ +000012c0: 2020 2020 2020 2020 2020 536b 6574 6368 Sketch │ │ │ │ │ +000012d0: 2075 7365 7320 e280 9854 696b 5a2f 5047 uses ...TikZ/PG │ │ │ │ │ +000012e0: 46e2 8099 2063 6972 636c 6573 2066 6f72 F... circles for │ │ │ │ │ +000012f0: 2064 6f74 732e 0a2a 2054 696b 5a2f 5047 dots..* TikZ/PG │ │ │ │ │ +00001300: 4620 7573 6572 2d64 6566 696e 6564 2073 F user-defined s │ │ │ │ │ +00001310: 7479 6c65 733a 3a20 2053 7570 706f 7274 tyles:: Support │ │ │ │ │ +00001320: 2066 6f72 20e2 8098 5469 6b5a 2f50 4746 for ...TikZ/PGF │ │ │ │ │ +00001330: e280 9920 6e61 6d65 642c 2075 7365 722d ... named, user- │ │ │ │ │ +00001340: 6465 6669 6e65 6420 7374 796c 6573 2e0a defined styles.. │ │ │ │ │ +00001350: 2a20 5472 616e 7370 6172 656e 6379 3a3a * Transparency:: │ │ │ │ │ +00001360: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +00001370: 5365 652d 7468 726f 7567 6820 706f 6c79 See-through poly │ │ │ │ │ +00001380: 676f 6e73 2e0a 2a20 496e 7465 726e 616c gons..* Internal │ │ │ │ │ +00001390: 206f 7074 696f 6e73 3a3a 2020 2020 2020 options:: │ │ │ │ │ +000013a0: 2020 2020 2020 4f70 7469 6f6e 7320 7573 Options us │ │ │ │ │ +000013b0: 6564 2062 7920 e280 9873 6b65 7463 68e2 ed by ...sketch. │ │ │ │ │ +000013c0: 8099 2e0a 0a50 6f69 6e74 206c 6973 7473 .....Point lists │ │ │ │ │ +000013d0: 0a0a 2a20 4472 6177 6162 6c65 733a 3a20 ..* Drawables:: │ │ │ │ │ +000013e0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +000013f0: 2020 5468 696e 6773 2074 6861 7420 6172 Things that ar │ │ │ │ │ +00001400: 6520 6472 6177 6e2e 0a2a 2044 6566 696e e drawn..* Defin │ │ │ │ │ +00001410: 6974 696f 6e73 3a3a 2020 2020 2020 2020 itions:: │ │ │ │ │ +00001420: 2020 2020 2020 2020 2054 6869 6e67 7320 Things │ │ │ │ │ +00001430: 7769 7468 206e 616d 6573 2e0a 0a44 7261 with names...Dra │ │ │ │ │ +00001440: 7761 626c 6573 0a0a 2a20 446f 7473 3a3a wables..* Dots:: │ │ │ │ │ 00001450: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -00001460: 2020 4472 6177 2064 6f74 732e 0a2a 204c Draw dots..* L │ │ │ │ │ -00001470: 696e 6573 3a3a 2020 2020 2020 2020 2020 ines:: │ │ │ │ │ -00001480: 2020 2020 2020 2020 2020 2020 2044 7261 Dra │ │ │ │ │ -00001490: 7720 706f 6c79 6c69 6e65 732e 0a2a 2043 w polylines..* C │ │ │ │ │ -000014a0: 7572 7665 733a 3a20 2020 2020 2020 2020 urves:: │ │ │ │ │ -000014b0: 2020 2020 2020 2020 2020 2020 2044 7261 Dra │ │ │ │ │ -000014c0: 7720 6375 7276 6573 2e0a 2a20 506f 6c79 w curves..* Poly │ │ │ │ │ -000014d0: 676f 6e73 3a3a 2020 2020 2020 2020 2020 gons:: │ │ │ │ │ -000014e0: 2020 2020 2020 2020 2020 4472 6177 2070 Draw p │ │ │ │ │ -000014f0: 6f6c 7967 6f6e 732e 0a2a 2053 7065 6369 olygons..* Speci │ │ │ │ │ -00001500: 616c 733a 3a20 2020 2020 2020 2020 2020 als:: │ │ │ │ │ -00001510: 2020 2020 2020 2020 2045 6d62 6564 2072 Embed r │ │ │ │ │ -00001520: 6177 204c 6154 6558 2061 6e64 20e2 8098 aw LaTeX and ... │ │ │ │ │ -00001530: 5053 5472 6963 6b73 e280 992e 0a2a 2053 PSTricks.....* S │ │ │ │ │ -00001540: 7765 6570 733a 3a20 2020 2020 2020 2020 weeps:: │ │ │ │ │ -00001550: 2020 2020 2020 2020 2020 2020 2044 7261 Dra │ │ │ │ │ -00001560: 7720 7377 6565 7073 206f 6620 646f 7473 w sweeps of dots │ │ │ │ │ -00001570: 2061 6e64 2070 6f6c 796c 696e 6573 2e0a and polylines.. │ │ │ │ │ -00001580: 2a20 426c 6f63 6b73 3a3a 2020 2020 2020 * Blocks:: │ │ │ │ │ +00001460: 2020 2020 2020 2020 4472 6177 2064 6f74 Draw dot │ │ │ │ │ +00001470: 732e 0a2a 204c 696e 6573 3a3a 2020 2020 s..* Lines:: │ │ │ │ │ +00001480: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +00001490: 2020 2044 7261 7720 706f 6c79 6c69 6e65 Draw polyline │ │ │ │ │ +000014a0: 732e 0a2a 2043 7572 7665 733a 3a20 2020 s..* Curves:: │ │ │ │ │ +000014b0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +000014c0: 2020 2044 7261 7720 6375 7276 6573 2e0a Draw curves.. │ │ │ │ │ +000014d0: 2a20 506f 6c79 676f 6e73 3a3a 2020 2020 * Polygons:: │ │ │ │ │ +000014e0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +000014f0: 4472 6177 2070 6f6c 7967 6f6e 732e 0a2a Draw polygons..* │ │ │ │ │ +00001500: 2053 7065 6369 616c 733a 3a20 2020 2020 Specials:: │ │ │ │ │ +00001510: 2020 2020 2020 2020 2020 2020 2020 2045 E │ │ │ │ │ +00001520: 6d62 6564 2072 6177 204c 6154 6558 2061 mbed raw LaTeX a │ │ │ │ │ +00001530: 6e64 20e2 8098 5053 5472 6963 6b73 e280 nd ...PSTricks.. │ │ │ │ │ +00001540: 992e 0a2a 2053 7765 6570 733a 3a20 2020 ...* Sweeps:: │ │ │ │ │ +00001550: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +00001560: 2020 2044 7261 7720 7377 6565 7073 206f Draw sweeps o │ │ │ │ │ +00001570: 6620 646f 7473 2061 6e64 2070 6f6c 796c f dots and polyl │ │ │ │ │ +00001580: 696e 6573 2e0a 2a20 426c 6f63 6b73 3a3a ines..* Blocks:: │ │ │ │ │ 00001590: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -000015a0: 4772 6f75 7020 6f74 6865 7220 6472 6177 Group other draw │ │ │ │ │ -000015b0: 6162 6c65 732e 0a2a 2052 6570 6561 7473 ables..* Repeats │ │ │ │ │ -000015c0: 3a3a 2020 2020 2020 2020 2020 2020 2020 :: │ │ │ │ │ -000015d0: 2020 2020 2020 2044 7261 7720 7472 616e Draw tran │ │ │ │ │ -000015e0: 7366 6f72 6d65 6420 636f 7069 6573 206f sformed copies o │ │ │ │ │ -000015f0: 6620 6f62 6a65 6374 732e 0a2a 2050 7574 f objects..* Put │ │ │ │ │ -00001600: 733a 3a20 2020 2020 2020 2020 2020 2020 s:: │ │ │ │ │ -00001610: 2020 2020 2020 2020 2020 2044 7261 7720 Draw │ │ │ │ │ -00001620: 6f6e 6520 6f62 6a65 6374 2074 7261 6e73 one object trans │ │ │ │ │ -00001630: 666f 726d 6564 2e0a 0a53 7765 6570 730a formed...Sweeps. │ │ │ │ │ -00001640: 0a2a 2053 7765 7074 2070 6f69 6e74 733a .* Swept points: │ │ │ │ │ -00001650: 3a20 2020 2020 2020 2020 2020 2020 2020 : │ │ │ │ │ -00001660: 2053 7765 7074 2070 6f69 6e74 7320 6d61 Swept points ma │ │ │ │ │ -00001670: 6b65 206c 696e 6573 206f 7220 706f 6c79 ke lines or poly │ │ │ │ │ -00001680: 676f 6e73 2e0a 2a20 5377 6570 7420 6c69 gons..* Swept li │ │ │ │ │ -00001690: 6e65 733a 3a20 2020 2020 2020 2020 2020 nes:: │ │ │ │ │ -000016a0: 2020 2020 2020 5377 6570 7420 6c69 6e65 Swept line │ │ │ │ │ -000016b0: 7320 6d61 6b65 206f 7065 6e20 6f72 2063 s make open or c │ │ │ │ │ -000016c0: 6c6f 7365 6420 7375 7266 6163 6573 2e0a losed surfaces.. │ │ │ │ │ -000016d0: 2a20 5377 6570 7420 706f 6c79 676f 6e73 * Swept polygons │ │ │ │ │ -000016e0: 3a3a 2020 2020 2020 2020 2020 2020 2020 :: │ │ │ │ │ -000016f0: 5377 6570 7420 706f 6c79 676f 6e73 206d Swept polygons m │ │ │ │ │ -00001700: 616b 6520 636c 6f73 6564 2073 7572 6661 ake closed surfa │ │ │ │ │ -00001710: 6365 732e 0a2a 2053 7765 7074 2062 6c6f ces..* Swept blo │ │ │ │ │ -00001720: 636b 733a 3a20 2020 2020 2020 2020 2020 cks:: │ │ │ │ │ -00001730: 2020 2020 2053 7765 7074 2062 6c6f 636b Swept block │ │ │ │ │ -00001740: 20e2 89a1 2062 6c6f 636b 206f 6620 7377 ... block of sw │ │ │ │ │ -00001750: 6565 7073 2e0a 2a20 5377 6565 7020 6661 eeps..* Sweep fa │ │ │ │ │ -00001760: 6365 2073 706c 6974 7469 6e67 3a3a 2020 ce splitting:: │ │ │ │ │ -00001770: 2020 2020 2020 4669 7869 6e67 2077 6172 Fixing war │ │ │ │ │ -00001780: 7065 6420 6661 6365 7320 7769 7468 2074 ped faces with t │ │ │ │ │ -00001790: 7269 616e 676c 6573 2e0a 0a44 6566 696e riangles...Defin │ │ │ │ │ -000017a0: 6974 696f 6e73 0a0a 2a20 466f 726d 7320 itions..* Forms │ │ │ │ │ -000017b0: 6f66 2064 6566 696e 6974 696f 6e73 3a3a of definitions:: │ │ │ │ │ -000017c0: 2020 2020 2020 2020 4469 6666 6572 656e Differen │ │ │ │ │ -000017d0: 7420 6465 6673 2066 6f72 2064 6966 6665 t defs for diffe │ │ │ │ │ -000017e0: 7265 6e74 2070 7572 706f 7365 732e 0a2a rent purposes..* │ │ │ │ │ -000017f0: 2046 6f72 6d73 206f 6620 7265 6665 7265 Forms of refere │ │ │ │ │ -00001800: 6e63 6573 3a3a 2020 2020 2020 2020 2048 nces:: H │ │ │ │ │ -00001810: 6f77 2072 6566 6572 656e 6365 7320 6465 ow references de │ │ │ │ │ -00001820: 6e6f 7465 2074 7970 6573 2e0a 0a47 6c6f note types...Glo │ │ │ │ │ -00001830: 6261 6c20 656e 7669 726f 6e6d 656e 740a bal environment. │ │ │ │ │ -00001840: 0a2a 2047 6c6f 6261 6c20 6f70 7469 6f6e .* Global option │ │ │ │ │ -00001850: 733a 3a20 2020 2020 2020 2020 2020 2020 s:: │ │ │ │ │ -00001860: 2041 7474 7269 6275 7465 7320 6f66 2074 Attributes of t │ │ │ │ │ -00001870: 6865 2065 6e74 6972 6520 6472 6177 696e he entire drawin │ │ │ │ │ -00001880: 672e 0a2a 2043 616d 6572 613a 3a20 2020 g..* Camera:: │ │ │ │ │ -00001890: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -000018a0: 2020 2041 2066 696e 616c 2063 616d 6572 A final camer │ │ │ │ │ -000018b0: 6120 7472 616e 7366 6f72 6d61 7469 6f6e a transformation │ │ │ │ │ -000018c0: 206f 6620 7468 6520 7363 656e 652e 0a2a of the scene..* │ │ │ │ │ -000018d0: 2050 6963 7475 7265 2062 6f78 3a3a 2020 Picture box:: │ │ │ │ │ -000018e0: 2020 2020 2020 2020 2020 2020 2020 2053 S │ │ │ │ │ -000018f0: 6574 7469 6e67 2074 6865 2062 6f75 6e64 etting the bound │ │ │ │ │ -00001900: 696e 6720 626f 7820 616e 6420 3264 2063 ing box and 2d c │ │ │ │ │ -00001910: 6c69 7070 696e 672e 0a2a 2046 7261 6d65 lipping..* Frame │ │ │ │ │ -00001920: 3a3a 2020 2020 2020 2020 2020 2020 2020 :: │ │ │ │ │ -00001930: 2020 2020 2020 2020 2041 6464 696e 6720 Adding │ │ │ │ │ -00001940: 6120 626f 7820 6172 6f75 6e64 2074 6865 a box around the │ │ │ │ │ -00001950: 2064 7261 7769 6e67 2e0a 2a20 4c61 6e67 drawing..* Lang │ │ │ │ │ -00001960: 7561 6765 3a3a 2020 2020 2020 2020 2020 uage:: │ │ │ │ │ -00001970: 2020 2020 2020 2020 2020 5365 7474 696e Settin │ │ │ │ │ -00001980: 6720 7468 6520 6f75 7470 7574 206c 616e g the output lan │ │ │ │ │ -00001990: 6775 6167 652e 0a0a 4275 696c 6469 6e67 guage...Building │ │ │ │ │ -000019a0: 2061 2064 7261 7769 6e67 0a0a 2a20 4f76 a drawing..* Ov │ │ │ │ │ -000019b0: 6572 7669 6577 3a3a 2020 2020 2020 2020 erview:: │ │ │ │ │ -000019c0: 2020 2020 2020 2020 2020 2020 4275 696c Buil │ │ │ │ │ -000019d0: 6469 6e67 2061 2073 7562 7374 616e 7469 ding a substanti │ │ │ │ │ -000019e0: 616c 2064 7261 7769 6e67 2e0a 2a20 4120 al drawing..* A │ │ │ │ │ -000019f0: 7465 6368 6e69 6361 6c20 6472 6177 696e technical drawin │ │ │ │ │ -00001a00: 673a 3a20 2020 2020 2020 2020 416e 2065 g:: An e │ │ │ │ │ -00001a10: 7861 6d70 6c65 2077 6974 6820 6669 6e65 xample with fine │ │ │ │ │ -00001a20: 2070 6c61 6365 6d65 6e74 2e0a 2a20 4120 placement..* A │ │ │ │ │ -00001a30: 6869 6572 6172 6368 6963 616c 206d 6f64 hierarchical mod │ │ │ │ │ -00001a40: 656c 3a3a 2020 2020 2020 2020 416e 2065 el:: An e │ │ │ │ │ -00001a50: 7861 6d70 6c65 2077 6974 6820 7377 6565 xample with swee │ │ │ │ │ -00001a60: 7073 2061 6e64 2070 7574 732e 0a2a 2043 ps and puts..* C │ │ │ │ │ -00001a70: 6176 6561 7473 3a3a 2020 2020 2020 2020 aveats:: │ │ │ │ │ -00001a80: 2020 2020 2020 2020 2020 2020 2057 6865 Whe │ │ │ │ │ -00001a90: 7265 2074 726f 7562 6c65 2063 616e 206f re trouble can o │ │ │ │ │ -00001aa0: 6363 7572 2e0a 0a43 6176 6561 7473 0a0a ccur...Caveats.. │ │ │ │ │ -00001ab0: 2a20 4c69 6d69 7473 206f 6e20 6572 726f * Limits on erro │ │ │ │ │ -00001ac0: 7220 6465 7465 6374 696f 6e3a 3a20 2020 r detection:: │ │ │ │ │ -00001ad0: 5768 6174 2073 6b65 7463 6820 646f 6573 What sketch does │ │ │ │ │ -00001ae0: 6e27 7420 646f 2e0a 2a20 436c 6970 7069 n't do..* Clippi │ │ │ │ │ -00001af0: 6e67 3a3a 2020 2020 2020 2020 2020 2020 ng:: │ │ │ │ │ -00001b00: 2020 2020 2020 2020 4e6f 2063 6c69 7070 No clipp │ │ │ │ │ -00001b10: 696e 6720 6174 2070 7265 7365 6e74 2e0a ing at present.. │ │ │ │ │ -00001b20: 2a20 4869 6464 656e 2073 7572 6661 6365 * Hidden surface │ │ │ │ │ -00001b30: 2072 656d 6f76 616c 3a3a 2020 2020 2020 removal:: │ │ │ │ │ -00001b40: 496d 7065 7266 6563 7469 6f6e 7320 746f Imperfections to │ │ │ │ │ -00001b50: 2066 6978 2e0a 0a48 6964 6465 6e20 7375 fix...Hidden su │ │ │ │ │ -00001b60: 7266 6163 6520 7265 6d6f 7661 6c20 616e rface removal an │ │ │ │ │ -00001b70: 6420 706f 6c79 676f 6e20 7370 6c69 7474 d polygon splitt │ │ │ │ │ -00001b80: 696e 670a 0a2a 2053 7461 7469 7374 6963 ing..* Statistic │ │ │ │ │ -00001b90: 733a 3a20 2020 2020 2020 2020 2020 2020 s:: │ │ │ │ │ -00001ba0: 2020 2020 2050 6572 666f 726d 616e 6365 Performance │ │ │ │ │ -00001bb0: 206e 756d 6265 7273 206f 6e20 6465 7074 numbers on dept │ │ │ │ │ -00001bc0: 6820 736f 7274 2e0a 2a20 4275 6773 2061 h sort..* Bugs a │ │ │ │ │ -00001bd0: 6e64 2061 6e6f 6d61 6c69 6573 3a3a 2020 nd anomalies:: │ │ │ │ │ -00001be0: 2020 2020 2020 2020 496d 7065 7266 6563 Imperfec │ │ │ │ │ -00001bf0: 7469 6f6e 7320 696e 2074 6869 7320 696d tions in this im │ │ │ │ │ -00001c00: 706c 656d 656e 7461 7469 6f6e 2e0a 0a1f plementation.... │ │ │ │ │ -00001c10: 0a46 696c 653a 2073 6b65 7463 682e 696e .File: sketch.in │ │ │ │ │ -00001c20: 666f 2c20 204e 6f64 653a 2041 626f 7574 fo, Node: About │ │ │ │ │ -00001c30: 2073 6b65 7463 682c 2020 4e65 7874 3a20 sketch, Next: │ │ │ │ │ -00001c40: 496e 7472 6f64 7563 7469 6f6e 2062 7920 Introduction by │ │ │ │ │ -00001c50: 6578 616d 706c 652c 2020 5072 6576 3a20 example, Prev: │ │ │ │ │ -00001c60: 546f 702c 2020 5570 3a20 546f 700a 0a31 Top, Up: Top..1 │ │ │ │ │ -00001c70: 2041 626f 7574 2073 6b65 7463 680a 2a2a About sketch.** │ │ │ │ │ -00001c80: 2a2a 2a2a 2a2a 2a2a 2a2a 2a2a 0a0a 2a20 ************..* │ │ │ │ │ -00001c90: 4d65 6e75 3a0a 0a2a 2052 6570 6f72 7469 Menu:..* Reporti │ │ │ │ │ -00001ca0: 6e67 2062 7567 733a 3a20 2020 2020 2020 ng bugs:: │ │ │ │ │ -00001cb0: 2020 2020 2020 204c 6574 2075 7365 206b Let use k │ │ │ │ │ -00001cc0: 6e6f 7720 7768 6174 2773 2077 726f 6e67 now what's wrong │ │ │ │ │ -00001cd0: 210a 2a20 436f 6e74 7269 6275 7469 6f6e !.* Contribution │ │ │ │ │ -00001ce0: 733a 3a20 2020 2020 2020 2020 2020 2020 s:: │ │ │ │ │ -00001cf0: 2020 486f 7720 796f 7520 6361 6e20 6865 How you can he │ │ │ │ │ -00001d00: 6c70 2e2e 2e2e 0a0a e280 9853 6b65 7463 lp.........Sketc │ │ │ │ │ -00001d10: 68e2 8099 2069 7320 6120 736d 616c 6c2c h... is a small, │ │ │ │ │ -00001d20: 2073 696d 706c 6520 7379 7374 656d 2066 simple system f │ │ │ │ │ -00001d30: 6f72 2070 726f 6475 6369 6e67 206c 696e or producing lin │ │ │ │ │ -00001d40: 6520 6472 6177 696e 6773 206f 6620 7477 e drawings of tw │ │ │ │ │ -00001d50: 6f2d 0a6f 7220 7468 7265 652d 6469 6d65 o-.or three-dime │ │ │ │ │ -00001d60: 6e73 696f 6e61 6c20 6f62 6a65 6374 7320 nsional objects │ │ │ │ │ -00001d70: 616e 6420 7363 656e 6573 2e20 2049 7420 and scenes. It │ │ │ │ │ -00001d80: 6265 6761 6e20 6173 2061 2077 6179 2074 began as a way t │ │ │ │ │ -00001d90: 6f20 6d61 6b65 0a69 6c6c 7573 7472 6174 o make.illustrat │ │ │ │ │ -00001da0: 696f 6e73 2066 6f72 2061 2074 6578 7462 ions for a textb │ │ │ │ │ -00001db0: 6f6f 6b20 6166 7465 7220 7765 2063 6f75 ook after we cou │ │ │ │ │ -00001dc0: 6c64 2066 696e 6420 6e6f 2073 7569 7461 ld find no suita │ │ │ │ │ -00001dd0: 626c 6520 746f 6f6c 2066 6f72 0a74 6869 ble tool for.thi │ │ │ │ │ -00001de0: 7320 7075 7270 6f73 652e 2020 4578 6973 s purpose. Exis │ │ │ │ │ -00001df0: 7469 6e67 2073 6365 6e65 2070 726f 6365 ting scene proce │ │ │ │ │ -00001e00: 7373 6f72 7320 656d 7068 6173 697a 6564 ssors emphasized │ │ │ │ │ -00001e10: 2047 5549 7320 616e 642f 6f72 0a70 686f GUIs and/or.pho │ │ │ │ │ -00001e20: 746f 2d72 6561 6c69 736d 2c20 626f 7468 to-realism, both │ │ │ │ │ -00001e30: 2075 6e2d 7573 6566 756c 2074 6f20 7573 un-useful to us │ │ │ │ │ -00001e40: 2e20 2057 6520 7761 6e74 6564 2074 6f20 . We wanted to │ │ │ │ │ -00001e50: 7072 6f64 7563 6520 6669 6e65 6c79 0a77 produce finely.w │ │ │ │ │ -00001e60: 726f 7567 6874 2c20 6d61 7468 656d 6174 rought, mathemat │ │ │ │ │ -00001e70: 6963 616c 6c79 2d62 6173 6564 2069 6c6c ically-based ill │ │ │ │ │ -00001e80: 7573 7472 6174 696f 6e73 2077 6974 6820 ustrations with │ │ │ │ │ -00001e90: 6e6f 2065 7874 7261 6e65 6f75 7320 6465 no extraneous de │ │ │ │ │ -00001ea0: 7461 696c 2e0a 0a20 2020 e280 9853 6b65 tail... ...Ske │ │ │ │ │ -00001eb0: 7463 68e2 8099 2061 6363 6570 7473 2061 tch... accepts a │ │ │ │ │ -00001ec0: 2074 696e 7920 7363 656e 6520 6465 7363 tiny scene desc │ │ │ │ │ -00001ed0: 7269 7074 696f 6e20 6c61 6e67 7561 6765 ription language │ │ │ │ │ -00001ee0: 2061 6e64 2067 656e 6572 6174 6573 0ae2 and generates.. │ │ │ │ │ -00001ef0: 8098 5053 5472 6963 6b73 e280 9920 6f72 ..PSTricks... or │ │ │ │ │ -00001f00: 20e2 8098 5469 6b5a 2f50 4746 e280 9920 ...TikZ/PGF... │ │ │ │ │ -00001f10: 636f 6465 2066 6f72 204c 6154 6558 2e20 code for LaTeX. │ │ │ │ │ -00001f20: 2054 6865 20e2 8098 736b 6574 6368 e280 The ...sketch.. │ │ │ │ │ -00001f30: 9920 6c61 6e67 7561 6765 2069 730a 7369 . language is.si │ │ │ │ │ -00001f40: 6d69 6c61 7220 746f 20e2 8098 5053 5472 milar to ...PSTr │ │ │ │ │ -00001f50: 6963 6b73 e280 992c 206d 616b 696e 6720 icks..., making │ │ │ │ │ -00001f60: 6974 2065 6173 7920 746f 206c 6561 726e it easy to learn │ │ │ │ │ -00001f70: 2066 6f72 2063 7572 7265 6e74 20e2 8098 for current ... │ │ │ │ │ -00001f80: 5053 5472 6963 6b73 e280 990a 7573 6572 PSTricks....user │ │ │ │ │ -00001f90: 732e 2020 5365 6520 7777 772e 7073 7472 s. See www.pstr │ │ │ │ │ -00001fa0: 6963 6b73 2e64 6520 666f 7220 696e 666f icks.de for info │ │ │ │ │ -00001fb0: 726d 6174 696f 6e20 6f6e 20e2 8098 5053 rmation on ...PS │ │ │ │ │ -00001fc0: 5472 6963 6b73 e280 992e 2020 e280 9854 Tricks.... ...T │ │ │ │ │ -00001fd0: 696b 5a2f 5047 46e2 8099 0a69 7320 7369 ikZ/PGF....is si │ │ │ │ │ -00001fe0: 6d69 6c61 722e 2020 5365 6520 6874 7470 milar. See http │ │ │ │ │ -00001ff0: 3a2f 2f73 6f75 7263 6566 6f72 6765 2e6e ://sourceforge.n │ │ │ │ │ -00002000: 6574 2f70 726f 6a65 6374 732f 7067 662e et/projects/pgf. │ │ │ │ │ -00002010: 2020 4f6e 6520 6361 6e20 6561 7369 6c79 One can easily │ │ │ │ │ -00002020: 0a69 6e63 6c75 6465 2061 7262 6974 7261 .include arbitra │ │ │ │ │ -00002030: 7279 20e2 8098 5053 5472 6963 6b73 e280 ry ...PSTricks.. │ │ │ │ │ -00002040: 9920 6f72 20e2 8098 5469 6b5a 2f50 4746 . or ...TikZ/PGF │ │ │ │ │ -00002050: e280 9920 6472 6177 696e 6773 2061 6e64 ... drawings and │ │ │ │ │ -00002060: 2074 6578 7420 6f76 6572 2c20 696e 2c0a text over, in,. │ │ │ │ │ -00002070: 6f72 2075 6e64 6572 20e2 8098 736b 6574 or under ...sket │ │ │ │ │ -00002080: 6368 e280 9920 6472 6177 696e 6773 2c20 ch... drawings, │ │ │ │ │ -00002090: 7072 6f76 6964 696e 6720 6163 6365 7373 providing access │ │ │ │ │ -000020a0: 2074 6f20 7468 6520 6675 6c6c 2070 6f77 to the full pow │ │ │ │ │ -000020b0: 6572 206f 6620 4c61 5465 580a 7465 7874 er of LaTeX.text │ │ │ │ │ -000020c0: 2061 6e64 206d 6174 6865 6d61 7469 6373 and mathematics │ │ │ │ │ -000020d0: 2066 6f72 6d61 7474 696e 6720 696e 2061 formatting in a │ │ │ │ │ -000020e0: 2074 6872 6565 2d64 696d 656e 7369 6f6e three-dimension │ │ │ │ │ -000020f0: 616c 2073 6574 7469 6e67 2e0a 0a1f 0a46 al setting.....F │ │ │ │ │ -00002100: 696c 653a 2073 6b65 7463 682e 696e 666f ile: sketch.info │ │ │ │ │ -00002110: 2c20 204e 6f64 653a 2052 6570 6f72 7469 , Node: Reporti │ │ │ │ │ -00002120: 6e67 2062 7567 732c 2020 4e65 7874 3a20 ng bugs, Next: │ │ │ │ │ -00002130: 436f 6e74 7269 6275 7469 6f6e 732c 2020 Contributions, │ │ │ │ │ -00002140: 5072 6576 3a20 4162 6f75 7420 736b 6574 Prev: About sket │ │ │ │ │ -00002150: 6368 2c20 2055 703a 2041 626f 7574 2073 ch, Up: About s │ │ │ │ │ -00002160: 6b65 7463 680a 0a31 2e31 2052 6570 6f72 ketch..1.1 Repor │ │ │ │ │ -00002170: 7469 6e67 2062 7567 7320 616e 6420 7265 ting bugs and re │ │ │ │ │ -00002180: 636f 6d6d 656e 6469 6e67 2069 6d70 726f commending impro │ │ │ │ │ -00002190: 7665 6d65 6e74 732e 0a3d 3d3d 3d3d 3d3d vements..======= │ │ │ │ │ +000015a0: 2020 2020 2020 4772 6f75 7020 6f74 6865 Group othe │ │ │ │ │ +000015b0: 7220 6472 6177 6162 6c65 732e 0a2a 2052 r drawables..* R │ │ │ │ │ +000015c0: 6570 6561 7473 3a3a 2020 2020 2020 2020 epeats:: │ │ │ │ │ +000015d0: 2020 2020 2020 2020 2020 2020 2044 7261 Dra │ │ │ │ │ +000015e0: 7720 7472 616e 7366 6f72 6d65 6420 636f w transformed co │ │ │ │ │ +000015f0: 7069 6573 206f 6620 6f62 6a65 6374 732e pies of objects. │ │ │ │ │ +00001600: 0a2a 2050 7574 733a 3a20 2020 2020 2020 .* Puts:: │ │ │ │ │ +00001610: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +00001620: 2044 7261 7720 6f6e 6520 6f62 6a65 6374 Draw one object │ │ │ │ │ +00001630: 2074 7261 6e73 666f 726d 6564 2e0a 0a53 transformed...S │ │ │ │ │ +00001640: 7765 6570 730a 0a2a 2053 7765 7074 2070 weeps..* Swept p │ │ │ │ │ +00001650: 6f69 6e74 733a 3a20 2020 2020 2020 2020 oints:: │ │ │ │ │ +00001660: 2020 2020 2020 2053 7765 7074 2070 6f69 Swept poi │ │ │ │ │ +00001670: 6e74 7320 6d61 6b65 206c 696e 6573 206f nts make lines o │ │ │ │ │ +00001680: 7220 706f 6c79 676f 6e73 2e0a 2a20 5377 r polygons..* Sw │ │ │ │ │ +00001690: 6570 7420 6c69 6e65 733a 3a20 2020 2020 ept lines:: │ │ │ │ │ +000016a0: 2020 2020 2020 2020 2020 2020 5377 6570 Swep │ │ │ │ │ +000016b0: 7420 6c69 6e65 7320 6d61 6b65 206f 7065 t lines make ope │ │ │ │ │ +000016c0: 6e20 6f72 2063 6c6f 7365 6420 7375 7266 n or closed surf │ │ │ │ │ +000016d0: 6163 6573 2e0a 2a20 5377 6570 7420 706f aces..* Swept po │ │ │ │ │ +000016e0: 6c79 676f 6e73 3a3a 2020 2020 2020 2020 lygons:: │ │ │ │ │ +000016f0: 2020 2020 2020 5377 6570 7420 706f 6c79 Swept poly │ │ │ │ │ +00001700: 676f 6e73 206d 616b 6520 636c 6f73 6564 gons make closed │ │ │ │ │ +00001710: 2073 7572 6661 6365 732e 0a2a 2053 7765 surfaces..* Swe │ │ │ │ │ +00001720: 7074 2062 6c6f 636b 733a 3a20 2020 2020 pt blocks:: │ │ │ │ │ +00001730: 2020 2020 2020 2020 2020 2053 7765 7074 Swept │ │ │ │ │ +00001740: 2062 6c6f 636b 20e2 89a1 2062 6c6f 636b block ... block │ │ │ │ │ +00001750: 206f 6620 7377 6565 7073 2e0a 2a20 5377 of sweeps..* Sw │ │ │ │ │ +00001760: 6565 7020 6661 6365 2073 706c 6974 7469 eep face splitti │ │ │ │ │ +00001770: 6e67 3a3a 2020 2020 2020 2020 4669 7869 ng:: Fixi │ │ │ │ │ +00001780: 6e67 2077 6172 7065 6420 6661 6365 7320 ng warped faces │ │ │ │ │ +00001790: 7769 7468 2074 7269 616e 676c 6573 2e0a with triangles.. │ │ │ │ │ +000017a0: 0a44 6566 696e 6974 696f 6e73 0a0a 2a20 .Definitions..* │ │ │ │ │ +000017b0: 466f 726d 7320 6f66 2064 6566 696e 6974 Forms of definit │ │ │ │ │ +000017c0: 696f 6e73 3a3a 2020 2020 2020 2020 4469 ions:: Di │ │ │ │ │ +000017d0: 6666 6572 656e 7420 6465 6673 2066 6f72 fferent defs for │ │ │ │ │ +000017e0: 2064 6966 6665 7265 6e74 2070 7572 706f different purpo │ │ │ │ │ +000017f0: 7365 732e 0a2a 2046 6f72 6d73 206f 6620 ses..* Forms of │ │ │ │ │ +00001800: 7265 6665 7265 6e63 6573 3a3a 2020 2020 references:: │ │ │ │ │ +00001810: 2020 2020 2048 6f77 2072 6566 6572 656e How referen │ │ │ │ │ +00001820: 6365 7320 6465 6e6f 7465 2074 7970 6573 ces denote types │ │ │ │ │ +00001830: 2e0a 0a47 6c6f 6261 6c20 656e 7669 726f ...Global enviro │ │ │ │ │ +00001840: 6e6d 656e 740a 0a2a 2047 6c6f 6261 6c20 nment..* Global │ │ │ │ │ +00001850: 6f70 7469 6f6e 733a 3a20 2020 2020 2020 options:: │ │ │ │ │ +00001860: 2020 2020 2020 2041 7474 7269 6275 7465 Attribute │ │ │ │ │ +00001870: 7320 6f66 2074 6865 2065 6e74 6972 6520 s of the entire │ │ │ │ │ +00001880: 6472 6177 696e 672e 0a2a 2043 616d 6572 drawing..* Camer │ │ │ │ │ +00001890: 613a 3a20 2020 2020 2020 2020 2020 2020 a:: │ │ │ │ │ +000018a0: 2020 2020 2020 2020 2041 2066 696e 616c A final │ │ │ │ │ +000018b0: 2063 616d 6572 6120 7472 616e 7366 6f72 camera transfor │ │ │ │ │ +000018c0: 6d61 7469 6f6e 206f 6620 7468 6520 7363 mation of the sc │ │ │ │ │ +000018d0: 656e 652e 0a2a 2050 6963 7475 7265 2062 ene..* Picture b │ │ │ │ │ +000018e0: 6f78 3a3a 2020 2020 2020 2020 2020 2020 ox:: │ │ │ │ │ +000018f0: 2020 2020 2053 6574 7469 6e67 2074 6865 Setting the │ │ │ │ │ +00001900: 2062 6f75 6e64 696e 6720 626f 7820 616e bounding box an │ │ │ │ │ +00001910: 6420 3264 2063 6c69 7070 696e 672e 0a2a d 2d clipping..* │ │ │ │ │ +00001920: 2046 7261 6d65 3a3a 2020 2020 2020 2020 Frame:: │ │ │ │ │ +00001930: 2020 2020 2020 2020 2020 2020 2020 2041 A │ │ │ │ │ +00001940: 6464 696e 6720 6120 626f 7820 6172 6f75 dding a box arou │ │ │ │ │ +00001950: 6e64 2074 6865 2064 7261 7769 6e67 2e0a nd the drawing.. │ │ │ │ │ +00001960: 2a20 4c61 6e67 7561 6765 3a3a 2020 2020 * Language:: │ │ │ │ │ +00001970: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +00001980: 5365 7474 696e 6720 7468 6520 6f75 7470 Setting the outp │ │ │ │ │ +00001990: 7574 206c 616e 6775 6167 652e 0a0a 4275 ut language...Bu │ │ │ │ │ +000019a0: 696c 6469 6e67 2061 2064 7261 7769 6e67 ilding a drawing │ │ │ │ │ +000019b0: 0a0a 2a20 4f76 6572 7669 6577 3a3a 2020 ..* Overview:: │ │ │ │ │ +000019c0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +000019d0: 2020 4275 696c 6469 6e67 2061 2073 7562 Building a sub │ │ │ │ │ +000019e0: 7374 616e 7469 616c 2064 7261 7769 6e67 stantial drawing │ │ │ │ │ +000019f0: 2e0a 2a20 4120 7465 6368 6e69 6361 6c20 ..* A technical │ │ │ │ │ +00001a00: 6472 6177 696e 673a 3a20 2020 2020 2020 drawing:: │ │ │ │ │ +00001a10: 2020 416e 2065 7861 6d70 6c65 2077 6974 An example wit │ │ │ │ │ +00001a20: 6820 6669 6e65 2070 6c61 6365 6d65 6e74 h fine placement │ │ │ │ │ +00001a30: 2e0a 2a20 4120 6869 6572 6172 6368 6963 ..* A hierarchic │ │ │ │ │ +00001a40: 616c 206d 6f64 656c 3a3a 2020 2020 2020 al model:: │ │ │ │ │ +00001a50: 2020 416e 2065 7861 6d70 6c65 2077 6974 An example wit │ │ │ │ │ +00001a60: 6820 7377 6565 7073 2061 6e64 2070 7574 h sweeps and put │ │ │ │ │ +00001a70: 732e 0a2a 2043 6176 6561 7473 3a3a 2020 s..* Caveats:: │ │ │ │ │ +00001a80: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +00001a90: 2020 2057 6865 7265 2074 726f 7562 6c65 Where trouble │ │ │ │ │ +00001aa0: 2063 616e 206f 6363 7572 2e0a 0a43 6176 can occur...Cav │ │ │ │ │ +00001ab0: 6561 7473 0a0a 2a20 4c69 6d69 7473 206f eats..* Limits o │ │ │ │ │ +00001ac0: 6e20 6572 726f 7220 6465 7465 6374 696f n error detectio │ │ │ │ │ +00001ad0: 6e3a 3a20 2020 5768 6174 2073 6b65 7463 n:: What sketc │ │ │ │ │ +00001ae0: 6820 646f 6573 6e27 7420 646f 2e0a 2a20 h doesn't do..* │ │ │ │ │ +00001af0: 436c 6970 7069 6e67 3a3a 2020 2020 2020 Clipping:: │ │ │ │ │ +00001b00: 2020 2020 2020 2020 2020 2020 2020 4e6f No │ │ │ │ │ +00001b10: 2063 6c69 7070 696e 6720 6174 2070 7265 clipping at pre │ │ │ │ │ +00001b20: 7365 6e74 2e0a 2a20 4869 6464 656e 2073 sent..* Hidden s │ │ │ │ │ +00001b30: 7572 6661 6365 2072 656d 6f76 616c 3a3a urface removal:: │ │ │ │ │ +00001b40: 2020 2020 2020 496d 7065 7266 6563 7469 Imperfecti │ │ │ │ │ +00001b50: 6f6e 7320 746f 2066 6978 2e0a 0a48 6964 ons to fix...Hid │ │ │ │ │ +00001b60: 6465 6e20 7375 7266 6163 6520 7265 6d6f den surface remo │ │ │ │ │ +00001b70: 7661 6c20 616e 6420 706f 6c79 676f 6e20 val and polygon │ │ │ │ │ +00001b80: 7370 6c69 7474 696e 670a 0a2a 2053 7461 splitting..* Sta │ │ │ │ │ +00001b90: 7469 7374 6963 733a 3a20 2020 2020 2020 tistics:: │ │ │ │ │ +00001ba0: 2020 2020 2020 2020 2020 2050 6572 666f Perfo │ │ │ │ │ +00001bb0: 726d 616e 6365 206e 756d 6265 7273 206f rmance numbers o │ │ │ │ │ +00001bc0: 6e20 6465 7074 6820 736f 7274 2e0a 2a20 n depth sort..* │ │ │ │ │ +00001bd0: 4275 6773 2061 6e64 2061 6e6f 6d61 6c69 Bugs and anomali │ │ │ │ │ +00001be0: 6573 3a3a 2020 2020 2020 2020 2020 496d es:: Im │ │ │ │ │ +00001bf0: 7065 7266 6563 7469 6f6e 7320 696e 2074 perfections in t │ │ │ │ │ +00001c00: 6869 7320 696d 706c 656d 656e 7461 7469 his implementati │ │ │ │ │ +00001c10: 6f6e 2e0a 0a1f 0a46 696c 653a 2073 6b65 on.....File: ske │ │ │ │ │ +00001c20: 7463 682e 696e 666f 2c20 204e 6f64 653a tch.info, Node: │ │ │ │ │ +00001c30: 2041 626f 7574 2073 6b65 7463 682c 2020 About sketch, │ │ │ │ │ +00001c40: 4e65 7874 3a20 496e 7472 6f64 7563 7469 Next: Introducti │ │ │ │ │ +00001c50: 6f6e 2062 7920 6578 616d 706c 652c 2020 on by example, │ │ │ │ │ +00001c60: 5072 6576 3a20 546f 702c 2020 5570 3a20 Prev: Top, Up: │ │ │ │ │ +00001c70: 546f 700a 0a31 2041 626f 7574 2073 6b65 Top..1 About ske │ │ │ │ │ +00001c80: 7463 680a 2a2a 2a2a 2a2a 2a2a 2a2a 2a2a tch.************ │ │ │ │ │ +00001c90: 2a2a 0a0a 2a20 4d65 6e75 3a0a 0a2a 2052 **..* Menu:..* R │ │ │ │ │ +00001ca0: 6570 6f72 7469 6e67 2062 7567 733a 3a20 eporting bugs:: │ │ │ │ │ +00001cb0: 2020 2020 2020 2020 2020 2020 204c 6574 Let │ │ │ │ │ +00001cc0: 2075 7365 206b 6e6f 7720 7768 6174 2773 use know what's │ │ │ │ │ +00001cd0: 2077 726f 6e67 210a 2a20 436f 6e74 7269 wrong!.* Contri │ │ │ │ │ +00001ce0: 6275 7469 6f6e 733a 3a20 2020 2020 2020 butions:: │ │ │ │ │ +00001cf0: 2020 2020 2020 2020 486f 7720 796f 7520 How you │ │ │ │ │ +00001d00: 6361 6e20 6865 6c70 2e2e 2e2e 0a0a e280 can help........ │ │ │ │ │ +00001d10: 9853 6b65 7463 68e2 8099 2069 7320 6120 .Sketch... is a │ │ │ │ │ +00001d20: 736d 616c 6c2c 2073 696d 706c 6520 7379 small, simple sy │ │ │ │ │ +00001d30: 7374 656d 2066 6f72 2070 726f 6475 6369 stem for produci │ │ │ │ │ +00001d40: 6e67 206c 696e 6520 6472 6177 696e 6773 ng line drawings │ │ │ │ │ +00001d50: 206f 6620 7477 6f2d 0a6f 7220 7468 7265 of two-.or thre │ │ │ │ │ +00001d60: 652d 6469 6d65 6e73 696f 6e61 6c20 6f62 e-dimensional ob │ │ │ │ │ +00001d70: 6a65 6374 7320 616e 6420 7363 656e 6573 jects and scenes │ │ │ │ │ +00001d80: 2e20 2049 7420 6265 6761 6e20 6173 2061 . It began as a │ │ │ │ │ +00001d90: 2077 6179 2074 6f20 6d61 6b65 0a69 6c6c way to make.ill │ │ │ │ │ +00001da0: 7573 7472 6174 696f 6e73 2066 6f72 2061 ustrations for a │ │ │ │ │ +00001db0: 2074 6578 7462 6f6f 6b20 6166 7465 7220 textbook after │ │ │ │ │ +00001dc0: 7765 2063 6f75 6c64 2066 696e 6420 6e6f we could find no │ │ │ │ │ +00001dd0: 2073 7569 7461 626c 6520 746f 6f6c 2066 suitable tool f │ │ │ │ │ +00001de0: 6f72 0a74 6869 7320 7075 7270 6f73 652e or.this purpose. │ │ │ │ │ +00001df0: 2020 4578 6973 7469 6e67 2073 6365 6e65 Existing scene │ │ │ │ │ +00001e00: 2070 726f 6365 7373 6f72 7320 656d 7068 processors emph │ │ │ │ │ +00001e10: 6173 697a 6564 2047 5549 7320 616e 642f asized GUIs and/ │ │ │ │ │ +00001e20: 6f72 0a70 686f 746f 2d72 6561 6c69 736d or.photo-realism │ │ │ │ │ +00001e30: 2c20 626f 7468 2075 6e2d 7573 6566 756c , both un-useful │ │ │ │ │ +00001e40: 2074 6f20 7573 2e20 2057 6520 7761 6e74 to us. We want │ │ │ │ │ +00001e50: 6564 2074 6f20 7072 6f64 7563 6520 6669 ed to produce fi │ │ │ │ │ +00001e60: 6e65 6c79 0a77 726f 7567 6874 2c20 6d61 nely.wrought, ma │ │ │ │ │ +00001e70: 7468 656d 6174 6963 616c 6c79 2d62 6173 thematically-bas │ │ │ │ │ +00001e80: 6564 2069 6c6c 7573 7472 6174 696f 6e73 ed illustrations │ │ │ │ │ +00001e90: 2077 6974 6820 6e6f 2065 7874 7261 6e65 with no extrane │ │ │ │ │ +00001ea0: 6f75 7320 6465 7461 696c 2e0a 0a20 2020 ous detail... │ │ │ │ │ +00001eb0: e280 9853 6b65 7463 68e2 8099 2061 6363 ...Sketch... acc │ │ │ │ │ +00001ec0: 6570 7473 2061 2074 696e 7920 7363 656e epts a tiny scen │ │ │ │ │ +00001ed0: 6520 6465 7363 7269 7074 696f 6e20 6c61 e description la │ │ │ │ │ +00001ee0: 6e67 7561 6765 2061 6e64 2067 656e 6572 nguage and gener │ │ │ │ │ +00001ef0: 6174 6573 0ae2 8098 5053 5472 6963 6b73 ates....PSTricks │ │ │ │ │ +00001f00: e280 9920 6f72 20e2 8098 5469 6b5a 2f50 ... or ...TikZ/P │ │ │ │ │ +00001f10: 4746 e280 9920 636f 6465 2066 6f72 204c GF... code for L │ │ │ │ │ +00001f20: 6154 6558 2e20 2054 6865 20e2 8098 736b aTeX. The ...sk │ │ │ │ │ +00001f30: 6574 6368 e280 9920 6c61 6e67 7561 6765 etch... language │ │ │ │ │ +00001f40: 2069 730a 7369 6d69 6c61 7220 746f 20e2 is.similar to . │ │ │ │ │ +00001f50: 8098 5053 5472 6963 6b73 e280 992c 206d ..PSTricks..., m │ │ │ │ │ +00001f60: 616b 696e 6720 6974 2065 6173 7920 746f aking it easy to │ │ │ │ │ +00001f70: 206c 6561 726e 2066 6f72 2063 7572 7265 learn for curre │ │ │ │ │ +00001f80: 6e74 20e2 8098 5053 5472 6963 6b73 e280 nt ...PSTricks.. │ │ │ │ │ +00001f90: 990a 7573 6572 732e 2020 5365 6520 7777 ..users. See ww │ │ │ │ │ +00001fa0: 772e 7073 7472 6963 6b73 2e64 6520 666f w.pstricks.de fo │ │ │ │ │ +00001fb0: 7220 696e 666f 726d 6174 696f 6e20 6f6e r information on │ │ │ │ │ +00001fc0: 20e2 8098 5053 5472 6963 6b73 e280 992e ...PSTricks.... │ │ │ │ │ +00001fd0: 2020 e280 9854 696b 5a2f 5047 46e2 8099 ...TikZ/PGF... │ │ │ │ │ +00001fe0: 0a69 7320 7369 6d69 6c61 722e 2020 5365 .is similar. Se │ │ │ │ │ +00001ff0: 6520 6874 7470 3a2f 2f73 6f75 7263 6566 e http://sourcef │ │ │ │ │ +00002000: 6f72 6765 2e6e 6574 2f70 726f 6a65 6374 orge.net/project │ │ │ │ │ +00002010: 732f 7067 662e 2020 4f6e 6520 6361 6e20 s/pgf. One can │ │ │ │ │ +00002020: 6561 7369 6c79 0a69 6e63 6c75 6465 2061 easily.include a │ │ │ │ │ +00002030: 7262 6974 7261 7279 20e2 8098 5053 5472 rbitrary ...PSTr │ │ │ │ │ +00002040: 6963 6b73 e280 9920 6f72 20e2 8098 5469 icks... or ...Ti │ │ │ │ │ +00002050: 6b5a 2f50 4746 e280 9920 6472 6177 696e kZ/PGF... drawin │ │ │ │ │ +00002060: 6773 2061 6e64 2074 6578 7420 6f76 6572 gs and text over │ │ │ │ │ +00002070: 2c20 696e 2c0a 6f72 2075 6e64 6572 20e2 , in,.or under . │ │ │ │ │ +00002080: 8098 736b 6574 6368 e280 9920 6472 6177 ..sketch... draw │ │ │ │ │ +00002090: 696e 6773 2c20 7072 6f76 6964 696e 6720 ings, providing │ │ │ │ │ +000020a0: 6163 6365 7373 2074 6f20 7468 6520 6675 access to the fu │ │ │ │ │ +000020b0: 6c6c 2070 6f77 6572 206f 6620 4c61 5465 ll power of LaTe │ │ │ │ │ +000020c0: 580a 7465 7874 2061 6e64 206d 6174 6865 X.text and mathe │ │ │ │ │ +000020d0: 6d61 7469 6373 2066 6f72 6d61 7474 696e matics formattin │ │ │ │ │ +000020e0: 6720 696e 2061 2074 6872 6565 2d64 696d g in a three-dim │ │ │ │ │ +000020f0: 656e 7369 6f6e 616c 2073 6574 7469 6e67 ensional setting │ │ │ │ │ +00002100: 2e0a 0a1f 0a46 696c 653a 2073 6b65 7463 .....File: sketc │ │ │ │ │ +00002110: 682e 696e 666f 2c20 204e 6f64 653a 2052 h.info, Node: R │ │ │ │ │ +00002120: 6570 6f72 7469 6e67 2062 7567 732c 2020 eporting bugs, │ │ │ │ │ +00002130: 4e65 7874 3a20 436f 6e74 7269 6275 7469 Next: Contributi │ │ │ │ │ +00002140: 6f6e 732c 2020 5072 6576 3a20 4162 6f75 ons, Prev: Abou │ │ │ │ │ +00002150: 7420 736b 6574 6368 2c20 2055 703a 2041 t sketch, Up: A │ │ │ │ │ +00002160: 626f 7574 2073 6b65 7463 680a 0a31 2e31 bout sketch..1.1 │ │ │ │ │ +00002170: 2052 6570 6f72 7469 6e67 2062 7567 7320 Reporting bugs │ │ │ │ │ +00002180: 616e 6420 7265 636f 6d6d 656e 6469 6e67 and recommending │ │ │ │ │ +00002190: 2069 6d70 726f 7665 6d65 6e74 732e 0a3d improvements..= │ │ │ │ │ 000021a0: 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d ================ │ │ │ │ │ 000021b0: 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d ================ │ │ │ │ │ -000021c0: 3d3d 3d3d 3d3d 3d3d 3d3d 0a0a 5468 6520 ==========..The │ │ │ │ │ -000021d0: 6772 6f75 7020 6874 7470 3a2f 2f67 726f group http://gro │ │ │ │ │ -000021e0: 7570 732e 676f 6f67 6c65 2e63 6f6d 2f67 ups.google.com/g │ │ │ │ │ -000021f0: 726f 7570 2f73 6b65 7463 682d 7573 6572 roup/sketch-user │ │ │ │ │ -00002200: 7320 6973 2074 6865 2062 6573 7420 706c s is the best pl │ │ │ │ │ -00002210: 6163 650a 746f 2072 6570 6f72 7420 6275 ace.to report bu │ │ │ │ │ -00002220: 6773 2061 6e64 206d 616b 6520 696d 7072 gs and make impr │ │ │ │ │ -00002230: 6f76 656d 656e 7473 2e20 2041 2073 6563 ovements. A sec │ │ │ │ │ -00002240: 6f6e 6420 6d65 7468 6f64 2074 6861 7420 ond method that │ │ │ │ │ -00002250: 7769 6c6c 0a70 726f 6261 626c 7920 7072 will.probably pr │ │ │ │ │ -00002260: 6f64 7563 6520 6120 736c 6f77 6572 2072 oduce a slower r │ │ │ │ │ -00002270: 6573 706f 6e73 6520 6973 2065 6d61 696c esponse is email │ │ │ │ │ -00002280: 2074 6f20 736b 6574 6368 4066 726f 6e74 to sketch@front │ │ │ │ │ -00002290: 6965 726e 6574 2e6e 6574 2e0a 5765 2077 iernet.net..We w │ │ │ │ │ -000022a0: 696c 6c20 7472 7920 746f 2072 6573 706f ill try to respo │ │ │ │ │ -000022b0: 6e64 2c20 6275 7420 6361 6e27 7420 7072 nd, but can't pr │ │ │ │ │ -000022c0: 6f6d 6973 652e 2020 496e 2061 6e79 2065 omise. In any e │ │ │ │ │ -000022d0: 7665 6e74 2c20 646f 6e27 7420 6265 0a6f vent, don't be.o │ │ │ │ │ -000022e0: 6666 656e 6465 6420 6966 2061 2072 6570 ffended if a rep │ │ │ │ │ -000022f0: 6c79 2069 7320 6e6f 7420 666f 7274 6863 ly is not forthc │ │ │ │ │ -00002300: 6f6d 696e 672e 2020 5765 2772 6520 6a75 oming. We're ju │ │ │ │ │ -00002310: 7374 2062 7573 7920 616e 6420 7769 6c6c st busy and will │ │ │ │ │ -00002320: 2067 6574 2074 6f0a 796f 7572 2073 7567 get to.your sug │ │ │ │ │ -00002330: 6765 7374 696f 6e20 6576 656e 7475 616c gestion eventual │ │ │ │ │ -00002340: 6c79 2e0a 0a20 2020 466f 7220 6275 6773 ly... For bugs │ │ │ │ │ -00002350: 2c20 6174 7461 6368 2061 20e2 8098 736b , attach a ...sk │ │ │ │ │ -00002360: 6574 6368 e280 9920 696e 7075 7420 6669 etch... input fi │ │ │ │ │ -00002370: 6c65 2074 6861 7420 6361 7573 6573 2074 le that causes t │ │ │ │ │ -00002380: 6865 2062 6164 2062 6568 6176 696f 722e he bad behavior. │ │ │ │ │ -00002390: 0a45 6d62 6564 2063 6f6d 6d65 6e74 7320 .Embed comments │ │ │ │ │ -000023a0: 7468 6174 2065 7870 6c61 696e 2077 6861 that explain wha │ │ │ │ │ -000023b0: 7420 746f 206c 6f6f 6b20 666f 7220 696e t to look for in │ │ │ │ │ -000023c0: 2074 6865 2062 6568 6176 696f 7220 6f66 the behavior of │ │ │ │ │ -000023d0: 20e2 8098 736b 6574 6368 e280 990a 6f72 ...sketch....or │ │ │ │ │ -000023e0: 2069 7473 206f 7574 7075 742e 0a0a 2020 its output... │ │ │ │ │ -000023f0: 2041 2072 6563 6f6d 6d65 6e64 6174 696f A recommendatio │ │ │ │ │ -00002400: 6e20 666f 7220 696d 7072 6f76 656d 656e n for improvemen │ │ │ │ │ -00002410: 7420 6672 6f6d 206f 6e65 2075 6e6b 6e6f t from one unkno │ │ │ │ │ -00002420: 776e 2070 6572 736f 6e20 636f 756e 7473 wn person counts │ │ │ │ │ -00002430: 2061 730a 6f6e 6520 766f 7465 2e20 2057 as.one vote. W │ │ │ │ │ -00002440: 6520 7573 6520 6f76 6572 616c 6c20 766f e use overall vo │ │ │ │ │ -00002450: 7465 2074 616c 6c69 6573 2074 6f20 6465 te tallies to de │ │ │ │ │ -00002460: 6369 6465 2077 6861 7420 746f 2064 6f20 cide what to do │ │ │ │ │ -00002470: 6e65 7874 2061 730a 7265 736f 7572 6365 next as.resource │ │ │ │ │ -00002480: 7320 7065 726d 6974 2e20 2057 6520 7265 s permit. We re │ │ │ │ │ -00002490: 7365 7276 6520 7468 6520 7269 6768 7420 serve the right │ │ │ │ │ -000024a0: 746f 2061 7373 6967 6e20 616e 7920 6e75 to assign any nu │ │ │ │ │ -000024b0: 6d62 6572 206f 6620 766f 7465 7320 746f mber of votes to │ │ │ │ │ -000024c0: 0a73 7567 6765 7374 696f 6e73 2066 726f .suggestions fro │ │ │ │ │ -000024d0: 6d20 7065 6f70 6c65 2077 686f 2068 6176 m people who hav │ │ │ │ │ -000024e0: 6520 6265 656e 2068 656c 7066 756c 2061 e been helpful a │ │ │ │ │ -000024f0: 6e64 2073 7570 706f 7274 6976 6520 696e nd supportive in │ │ │ │ │ -00002500: 2074 6865 0a70 6173 742e 0a0a 1f0a 4669 the.past.....Fi │ │ │ │ │ -00002510: 6c65 3a20 736b 6574 6368 2e69 6e66 6f2c le: sketch.info, │ │ │ │ │ -00002520: 2020 4e6f 6465 3a20 436f 6e74 7269 6275 Node: Contribu │ │ │ │ │ -00002530: 7469 6f6e 732c 2020 5072 6576 3a20 5265 tions, Prev: Re │ │ │ │ │ -00002540: 706f 7274 696e 6720 6275 6773 2c20 2055 porting bugs, U │ │ │ │ │ -00002550: 703a 2041 626f 7574 2073 6b65 7463 680a p: About sketch. │ │ │ │ │ -00002560: 0a31 2e32 2043 6f6e 7472 6962 7574 696f .1.2 Contributio │ │ │ │ │ -00002570: 6e73 0a3d 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d ns.============= │ │ │ │ │ -00002580: 3d3d 3d3d 0a0a 4966 2079 6f75 2069 6e74 ====..If you int │ │ │ │ │ -00002590: 656e 6420 746f 2069 6d70 6c65 6d65 6e74 end to implement │ │ │ │ │ -000025a0: 2061 6e20 656e 6861 6e63 656d 656e 7420 an enhancement │ │ │ │ │ -000025b0: 6f66 2079 6f75 7220 6f77 6e2c 2074 6861 of your own, tha │ │ │ │ │ -000025c0: 7427 7320 7465 7272 6966 6963 210a 436f t's terrific!.Co │ │ │ │ │ -000025d0: 6e73 6964 6572 2063 6f6c 6c61 626f 7261 nsider collabora │ │ │ │ │ -000025e0: 7469 6e67 2077 6974 6820 7573 2066 6972 ting with us fir │ │ │ │ │ -000025f0: 7374 2074 6f20 7365 6520 6966 2077 6527 st to see if we' │ │ │ │ │ -00002600: 7265 2061 6c72 6561 6479 2077 6f72 6b69 re already worki │ │ │ │ │ -00002610: 6e67 206f 6e0a 796f 7572 2069 6465 6120 ng on.your idea │ │ │ │ │ -00002620: 6f72 2069 6620 7765 2063 616e 2075 7365 or if we can use │ │ │ │ │ -00002630: 2079 6f75 7220 776f 726b 2069 6e20 7468 your work in th │ │ │ │ │ -00002640: 6520 6f66 6669 6369 616c 2072 656c 6561 e official relea │ │ │ │ │ -00002650: 7365 2e0a 0a00 085b 696d 6167 6520 7372 se.....[image sr │ │ │ │ │ -00002660: 633d 2265 7830 3030 2e70 6e67 2220 7465 c="ex000.png" te │ │ │ │ │ -00002670: 7874 3d22 496d 6167 6520 6578 3030 3020 xt="Image ex000 │ │ │ │ │ -00002680: 6f6d 6974 7465 6420 696e 2074 6578 7420 omitted in text │ │ │ │ │ -00002690: 7665 7273 696f 6e20 6f66 2074 6869 7320 version of this │ │ │ │ │ -000026a0: 646f 6375 6d65 6e74 2e22 0008 5d0a 0a1f document."..]... │ │ │ │ │ -000026b0: 0a46 696c 653a 2073 6b65 7463 682e 696e .File: sketch.in │ │ │ │ │ -000026c0: 666f 2c20 204e 6f64 653a 2049 6e74 726f fo, Node: Intro │ │ │ │ │ -000026d0: 6475 6374 696f 6e20 6279 2065 7861 6d70 duction by examp │ │ │ │ │ -000026e0: 6c65 2c20 204e 6578 743a 2049 6e70 7574 le, Next: Input │ │ │ │ │ -000026f0: 206c 616e 6775 6167 652c 2020 5072 6576 language, Prev │ │ │ │ │ -00002700: 3a20 4162 6f75 7420 736b 6574 6368 2c20 : About sketch, │ │ │ │ │ -00002710: 2055 703a 2054 6f70 0a0a 3220 496e 7472 Up: Top..2 Intr │ │ │ │ │ -00002720: 6f64 7563 7469 6f6e 2062 7920 6578 616d oduction by exam │ │ │ │ │ -00002730: 706c 650a 2a2a 2a2a 2a2a 2a2a 2a2a 2a2a ple.************ │ │ │ │ │ -00002740: 2a2a 2a2a 2a2a 2a2a 2a2a 2a2a 2a0a 0a54 *************..T │ │ │ │ │ -00002750: 6865 20e2 8098 736b 6574 6368 e280 9920 he ...sketch... │ │ │ │ │ -00002760: 696e 7075 7420 6c61 6e67 7561 6765 2077 input language w │ │ │ │ │ -00002770: 696c 6c20 7365 656d 2066 616d 696c 6961 ill seem familia │ │ │ │ │ -00002780: 7220 746f 2075 7365 7273 206f 6620 7468 r to users of th │ │ │ │ │ -00002790: 650a e280 9850 5354 7269 636b 73e2 8099 e....PSTricks... │ │ │ │ │ -000027a0: 2070 6163 6b61 6765 2066 6f72 204c 6154 package for LaT │ │ │ │ │ -000027b0: 6558 2e20 2054 6865 2066 6f6c 6c6f 7769 eX. The followi │ │ │ │ │ -000027c0: 6e67 2070 726f 6772 616d 2064 7261 7773 ng program draws │ │ │ │ │ -000027d0: 2061 2074 7269 616e 6775 6c61 720a 706f a triangular.po │ │ │ │ │ -000027e0: 6c79 676f 6e20 7069 6572 6365 6420 6279 lygon pierced by │ │ │ │ │ -000027f0: 2061 206c 696e 652e 0a20 2070 6f6c 7967 a line.. polyg │ │ │ │ │ -00002800: 6f6e 2830 2c30 2c31 2928 312c 302c 3029 on(0,0,1)(1,0,0) │ │ │ │ │ -00002810: 2830 2c31 2c30 290a 2020 6c69 6e65 282d (0,1,0). line(- │ │ │ │ │ -00002820: 312c 2d31 2c2d 3129 2832 2c32 2c32 290a 1,-1,-1)(2,2,2). │ │ │ │ │ -00002830: 5468 6520 636f 6f72 6469 6e61 7465 2073 The coordinate s │ │ │ │ │ -00002840: 7973 7465 6d20 6973 2061 2073 7461 6e64 ystem is a stand │ │ │ │ │ -00002850: 6172 6420 7269 6768 742d 6861 6e64 6564 ard right-handed │ │ │ │ │ -00002860: 2043 6172 7465 7369 616e 206f 6e65 2e0a Cartesian one.. │ │ │ │ │ -00002870: 0a00 085b 696d 6167 6520 7372 633d 2265 ...[image src="e │ │ │ │ │ -00002880: 7830 3130 2e70 6e67 2220 7465 7874 3d22 x010.png" text=" │ │ │ │ │ -00002890: 496d 6167 6520 6578 3031 3020 6f6d 6974 Image ex010 omit │ │ │ │ │ -000028a0: 7465 6420 696e 2074 6578 7420 7665 7273 ted in text vers │ │ │ │ │ -000028b0: 696f 6e20 6f66 2074 6869 7320 646f 6375 ion of this docu │ │ │ │ │ -000028c0: 6d65 6e74 2e22 0008 5d0a 0a2a 204d 656e ment."..]..* Men │ │ │ │ │ -000028d0: 753a 0a0a 2a20 4865 6c6c 6f20 776f 726c u:..* Hello worl │ │ │ │ │ -000028e0: 643a 3a20 2020 2020 2020 2020 2020 2020 d:: │ │ │ │ │ -000028f0: 2020 2020 5369 6d70 6c65 7374 2070 6f73 Simplest pos │ │ │ │ │ -00002900: 7369 626c 6520 e280 9873 6b65 7463 68e2 sible ...sketch. │ │ │ │ │ -00002910: 8099 2070 726f 6772 616d 2e0a 2a20 4472 .. program..* Dr │ │ │ │ │ -00002920: 6177 696e 6720 6f70 7469 6f6e 733a 3a20 awing options:: │ │ │ │ │ -00002930: 2020 2020 2020 2020 2020 2020 436f 6e74 Cont │ │ │ │ │ -00002940: 726f 6c6c 696e 6720 6f62 6a65 6374 2061 rolling object a │ │ │ │ │ -00002950: 7070 6561 7261 6e63 652e 0a2a 2044 7261 ppearance..* Dra │ │ │ │ │ -00002960: 7769 6e67 2061 2073 6f6c 6964 3a3a 2020 wing a solid:: │ │ │ │ │ -00002970: 2020 2020 2020 2020 2020 2044 7261 7769 Drawi │ │ │ │ │ -00002980: 6e67 2061 6e20 6f62 6a65 6374 2077 6974 ng an object wit │ │ │ │ │ -00002990: 6820 3364 2061 7070 6561 7261 6e63 652e h 3d appearance. │ │ │ │ │ -000029a0: 0a2a 2053 7065 6369 616c 206f 626a 6563 .* Special objec │ │ │ │ │ -000029b0: 7473 3a3a 2020 2020 2020 2020 2020 2020 ts:: │ │ │ │ │ -000029c0: 204c 6179 696e 6720 5465 5820 6f76 6572 Laying TeX over │ │ │ │ │ -000029d0: 2c20 696e 2c20 6f72 2075 6e64 6572 2064 , in, or under d │ │ │ │ │ -000029e0: 7261 7769 6e67 732e 0a2a 204f 626a 6563 rawings..* Objec │ │ │ │ │ -000029f0: 7420 7472 616e 7366 6f72 6d73 3a3a 2020 t transforms:: │ │ │ │ │ -00002a00: 2020 2020 2020 2020 2052 6f74 6174 652c Rotate, │ │ │ │ │ -00002a10: 2074 7261 6e73 6c61 7465 2c20 7363 616c translate, scal │ │ │ │ │ -00002a20: 652c 2061 6e64 206f 7468 6572 732e 0a2a e, and others..* │ │ │ │ │ -00002a30: 2052 6570 6561 7465 6420 6f62 6a65 6374 Repeated object │ │ │ │ │ -00002a40: 733a 3a20 2020 2020 2020 2020 2020 204d s:: M │ │ │ │ │ -00002a50: 616b 696e 6720 7472 616e 7366 6f72 6d65 aking transforme │ │ │ │ │ -00002a60: 6420 636f 7069 6573 2e0a 2a20 5377 6570 d copies..* Swep │ │ │ │ │ -00002a70: 7420 6f62 6a65 6374 733a 3a20 2020 2020 t objects:: │ │ │ │ │ -00002a80: 2020 2020 2020 2020 2020 5377 6565 7069 Sweepi │ │ │ │ │ -00002a90: 6e67 206f 626a 6563 7473 2069 6e20 7370 ng objects in sp │ │ │ │ │ -00002aa0: 6163 6520 746f 206d 616b 6520 6e65 7720 ace to make new │ │ │ │ │ -00002ab0: 7368 6170 6573 2e0a 0a1f 0a46 696c 653a shapes.....File: │ │ │ │ │ -00002ac0: 2073 6b65 7463 682e 696e 666f 2c20 204e sketch.info, N │ │ │ │ │ -00002ad0: 6f64 653a 2048 656c 6c6f 2077 6f72 6c64 ode: Hello world │ │ │ │ │ -00002ae0: 2c20 204e 6578 743a 2044 7261 7769 6e67 , Next: Drawing │ │ │ │ │ -00002af0: 206f 7074 696f 6e73 2c20 2050 7265 763a options, Prev: │ │ │ │ │ -00002b00: 2049 6e74 726f 6475 6374 696f 6e20 6279 Introduction by │ │ │ │ │ -00002b10: 2065 7861 6d70 6c65 2c20 2055 703a 2049 example, Up: I │ │ │ │ │ -00002b20: 6e74 726f 6475 6374 696f 6e20 6279 2065 ntroduction by e │ │ │ │ │ -00002b30: 7861 6d70 6c65 0a0a 322e 3120 4865 6c6c xample..2.1 Hell │ │ │ │ │ -00002b40: 6f20 776f 726c 640a 3d3d 3d3d 3d3d 3d3d o world.======== │ │ │ │ │ -00002b50: 3d3d 3d3d 3d3d 3d0a 0a54 6865 20e2 8098 =======..The ... │ │ │ │ │ -00002b60: 736b 6574 6368 e280 9920 7072 6f67 7261 sketch... progra │ │ │ │ │ -00002b70: 6d20 6162 6f76 6520 6973 206e 6561 726c m above is nearl │ │ │ │ │ -00002b80: 7920 7468 6520 7369 6d70 6c65 7374 206f y the simplest o │ │ │ │ │ -00002b90: 6e65 2070 6f73 7369 626c 652c 2074 6865 ne possible, the │ │ │ │ │ -00002ba0: 0a65 7175 6976 616c 656e 7420 6f66 2061 .equivalent of a │ │ │ │ │ -00002bb0: 2022 6865 6c6c 6f20 776f 726c 6422 2070 "hello world" p │ │ │ │ │ -00002bc0: 726f 6772 616d 2079 6f75 206d 6967 6874 rogram you might │ │ │ │ │ -00002bd0: 2066 696e 6420 6174 2074 6865 2073 7461 find at the sta │ │ │ │ │ -00002be0: 7274 206f 6620 610a 7072 6f67 7261 6d6d rt of a.programm │ │ │ │ │ -00002bf0: 696e 6720 6c61 6e67 7561 6765 2074 6578 ing language tex │ │ │ │ │ -00002c00: 742e 2020 4966 2069 7420 6973 2073 6176 t. If it is sav │ │ │ │ │ -00002c10: 6564 2069 6e20 7468 6520 6669 6c65 20e2 ed in the file . │ │ │ │ │ -00002c20: 8098 7369 6d70 6c65 2e73 6be2 8099 2c20 ..simple.sk..., │ │ │ │ │ -00002c30: 7468 656e 0a74 6865 2063 6f6d 6d61 6e64 then.the command │ │ │ │ │ -00002c40: 0a20 2073 6b65 7463 6820 7369 6d70 6c65 . sketch simple │ │ │ │ │ -00002c50: 2e73 6b20 2d6f 2073 696d 706c 652e 7465 .sk -o simple.te │ │ │ │ │ -00002c60: 780a 6372 6561 7465 7320 6120 6669 6c65 x.creates a file │ │ │ │ │ -00002c70: 20e2 8098 7369 6d70 6c65 2e74 6578 e280 ...simple.tex.. │ │ │ │ │ -00002c80: 9920 636f 6e74 6169 6e69 6e67 20e2 8098 . containing ... │ │ │ │ │ -00002c90: 5053 5472 6963 6b73 e280 9920 636f 6d6d PSTricks... comm │ │ │ │ │ -00002ca0: 616e 6473 2074 6f20 6472 6177 2074 6865 ands to draw the │ │ │ │ │ -00002cb0: 7365 0a6f 626a 6563 7473 206f 6e20 7061 se.objects on pa │ │ │ │ │ -00002cc0: 7065 722e 2020 5468 6520 636f 6e74 656e per. The conten │ │ │ │ │ -00002cd0: 7473 206f 6620 e280 9873 696d 706c 652e ts of ...simple. │ │ │ │ │ -00002ce0: 7465 78e2 8099 206c 6f6f 6b20 6c69 6b65 tex... look like │ │ │ │ │ -00002cf0: 2074 6869 732e 0a20 205c 6265 6769 6e7b this.. \begin{ │ │ │ │ │ -00002d00: 7073 7069 6374 7572 657d 282d 312c 2d31 pspicture}(-1,-1 │ │ │ │ │ -00002d10: 2928 322c 3229 0a20 205c 7073 7456 6572 )(2,2). \pstVer │ │ │ │ │ -00002d20: 627b 3120 7365 746c 696e 656a 6f69 6e7d b{1 setlinejoin} │ │ │ │ │ -00002d30: 0a20 205c 7073 6c69 6e65 282d 312c 2d31 . \psline(-1,-1 │ │ │ │ │ -00002d40: 2928 2e33 3333 2c2e 3333 3329 0a20 205c )(.333,.333). \ │ │ │ │ │ -00002d50: 7073 706f 6c79 676f 6e5b 6669 6c6c 7374 pspolygon[fillst │ │ │ │ │ -00002d60: 796c 653d 736f 6c69 642c 6669 6c6c 636f yle=solid,fillco │ │ │ │ │ -00002d70: 6c6f 723d 7768 6974 655d 2830 2c30 2928 lor=white](0,0)( │ │ │ │ │ -00002d80: 312c 3029 2830 2c31 290a 2020 5c70 736c 1,0)(0,1). \psl │ │ │ │ │ -00002d90: 696e 6528 2e33 3333 2c2e 3333 3329 2832 ine(.333,.333)(2 │ │ │ │ │ -00002da0: 2c32 290a 2020 5c65 6e64 7b70 7370 6963 ,2). \end{pspic │ │ │ │ │ -00002db0: 7475 7265 7d0a 5468 6520 6869 6464 656e ture}.The hidden │ │ │ │ │ -00002dc0: 2073 7572 6661 6365 2061 6c67 6f72 6974 surface algorit │ │ │ │ │ -00002dd0: 686d 206f 6620 e280 9873 6b65 7463 68e2 hm of ...sketch. │ │ │ │ │ -00002de0: 8099 2068 6173 2073 706c 6974 2074 6865 .. has split the │ │ │ │ │ -00002df0: 206c 696e 6520 696e 746f 2074 776f 0a70 line into two.p │ │ │ │ │ -00002e00: 6965 6365 7320 616e 6420 6f72 6465 7265 ieces and ordere │ │ │ │ │ -00002e10: 6420 7468 6520 7468 7265 6520 7265 7375 d the three resu │ │ │ │ │ -00002e20: 6c74 696e 6720 6f62 6a65 6374 7320 736f lting objects so │ │ │ │ │ -00002e30: 2074 6861 7420 7468 6520 636f 7272 6563 that the correc │ │ │ │ │ -00002e40: 740a 706f 7274 696f 6e20 6f66 2074 6865 t.portion of the │ │ │ │ │ -00002e50: 206c 696e 6520 6973 2068 6964 6465 6e2e line is hidden. │ │ │ │ │ -00002e60: 0a0a 2020 2049 6620 796f 7527 7665 206e .. If you've n │ │ │ │ │ -00002e70: 6f74 6963 6564 2074 6861 7420 7468 6520 oticed that the │ │ │ │ │ -00002e80: 7072 6f6a 6563 7469 6f6e 2077 6520 6172 projection we ar │ │ │ │ │ -00002e90: 6520 7573 696e 6720 7365 656d 7320 6571 e using seems eq │ │ │ │ │ -00002ea0: 7569 7661 6c65 6e74 0a74 6f20 6572 6173 uivalent.to eras │ │ │ │ │ -00002eb0: 696e 6720 7468 6520 7a2d 636f 6f72 6469 ing the z-coordi │ │ │ │ │ -00002ec0: 6e61 7465 206f 6620 7468 6520 7468 7265 nate of the thre │ │ │ │ │ -00002ed0: 652d 6469 6d65 6e73 696f 6e61 6c20 696e e-dimensional in │ │ │ │ │ -00002ee0: 7075 7420 706f 696e 7473 2c20 7061 740a put points, pat. │ │ │ │ │ -00002ef0: 796f 7572 7365 6c66 206f 6e20 7468 6520 yourself on the │ │ │ │ │ -00002f00: 6261 636b 2e20 2059 6f75 2061 7265 2063 back. You are c │ │ │ │ │ -00002f10: 6f72 7265 6374 2e20 2054 6869 7320 6973 orrect. This is │ │ │ │ │ -00002f20: 2063 616c 6c65 6420 6120 e280 9c70 6172 called a ...par │ │ │ │ │ -00002f30: 616c 6c65 6c0a 7072 6f6a 6563 7469 6f6e allel.projection │ │ │ │ │ -00002f40: e280 9d2e 2020 5468 6520 7a2d 636f 6f72 .... The z-coor │ │ │ │ │ -00002f50: 6469 6e61 7465 2061 7869 7320 6973 2070 dinate axis is p │ │ │ │ │ -00002f60: 6f69 6e74 696e 6720 7374 7261 6967 6874 ointing straight │ │ │ │ │ -00002f70: 206f 7574 206f 6620 7468 650a 7061 7065 out of the.pape │ │ │ │ │ -00002f80: 7220 6174 2075 732c 2077 6869 6c65 2074 r at us, while t │ │ │ │ │ -00002f90: 6865 2078 2d20 616e 6420 792d 6178 6573 he x- and y-axes │ │ │ │ │ -00002fa0: 2070 6f69 6e74 2074 6f20 7468 6520 7269 point to the ri │ │ │ │ │ -00002fb0: 6768 7420 616e 6420 7570 2061 7320 7573 ght and up as us │ │ │ │ │ -00002fc0: 7561 6c2e 0a0a 2020 2054 6865 2072 6573 ual... The res │ │ │ │ │ -00002fd0: 756c 7469 6e67 2070 6963 7475 7265 2066 ulting picture f │ │ │ │ │ -00002fe0: 696c 6520 6361 6e20 6265 2069 6e63 6c75 ile can be inclu │ │ │ │ │ -00002ff0: 6465 6420 696e 2061 204c 6154 6558 2064 ded in a LaTeX d │ │ │ │ │ -00003000: 6f63 756d 656e 7420 7769 7468 0a5c 696e ocument with.\in │ │ │ │ │ -00003010: 7075 747b 7369 6d70 6c65 7d2e 2020 416c put{simple}. Al │ │ │ │ │ -00003020: 7465 726e 6174 656c 792c 2061 6464 696e ternately, addin │ │ │ │ │ -00003030: 6720 7468 6520 636f 6d6d 616e 6420 6c69 g the command li │ │ │ │ │ -00003040: 6e65 206f 7074 696f 6e20 e280 982d 54e2 ne option ...-T. │ │ │ │ │ -00003050: 8099 2831 290a 6361 7573 6573 2074 6865 ..(1).causes the │ │ │ │ │ -00003060: 20e2 8098 7073 7069 6374 7572 65e2 8099 ...pspicture... │ │ │ │ │ -00003070: 2074 6f20 6265 2077 7261 7070 6564 2069 to be wrapped i │ │ │ │ │ -00003080: 6e20 6120 7368 6f72 7420 6275 7420 636f n a short but co │ │ │ │ │ -00003090: 6d70 6c65 7465 2064 6f63 756d 656e 742c mplete document, │ │ │ │ │ -000030a0: 0a72 6561 6479 2074 6f20 7275 6e20 7468 .ready to run th │ │ │ │ │ -000030b0: 6f75 6768 204c 6154 6558 2e20 2049 6e20 ough LaTeX. In │ │ │ │ │ -000030c0: 6120 6669 6e69 7368 6564 2c20 7479 7065 a finished, type │ │ │ │ │ -000030d0: 7365 7420 646f 6375 6d65 6e74 2c20 7468 set document, th │ │ │ │ │ -000030e0: 6520 7069 6374 7572 650a 6c6f 6f6b 7320 e picture.looks │ │ │ │ │ -000030f0: 6c69 6b65 2074 6869 732e 2020 2854 6865 like this. (The │ │ │ │ │ -00003100: 2061 7865 7320 6861 7665 2062 6565 6e20 axes have been │ │ │ │ │ -00003110: 6164 6465 6420 696e 206c 6967 6874 2067 added in light g │ │ │ │ │ -00003120: 7261 792e 290a 0a00 085b 696d 6167 6520 ray.)....[image │ │ │ │ │ -00003130: 7372 633d 2265 7830 3230 2e70 6e67 2220 src="ex020.png" │ │ │ │ │ -00003140: 7465 7874 3d22 496d 6167 6520 6578 3032 text="Image ex02 │ │ │ │ │ -00003150: 3020 6f6d 6974 7465 6420 696e 2074 6578 0 omitted in tex │ │ │ │ │ -00003160: 7420 7665 7273 696f 6e20 6f66 2074 6869 t version of thi │ │ │ │ │ -00003170: 7320 646f 6375 6d65 6e74 2e22 0008 5d0a s document."..]. │ │ │ │ │ -00003180: 0a49 7420 6973 2069 6d70 6f72 7461 6e74 .It is important │ │ │ │ │ -00003190: 2074 6f20 6b6e 6f77 2074 6861 7420 6f6e to know that on │ │ │ │ │ -000031a0: 6c79 2074 6865 2022 6f75 7473 6964 6522 ly the "outside" │ │ │ │ │ -000031b0: 206f 6620 6120 706f 6c79 676f 6e20 6973 of a polygon is │ │ │ │ │ -000031c0: 206e 6f72 6d61 6c6c 790a 6472 6177 6e2e normally.drawn. │ │ │ │ │ -000031d0: 2020 5468 6520 e280 9c6f 7574 7369 6465 The ...outside │ │ │ │ │ -000031e0: e280 9d20 6973 2077 6865 7265 2074 6865 ... is where the │ │ │ │ │ -000031f0: 2076 6572 7469 6365 7320 6769 7665 6e20 vertices given │ │ │ │ │ -00003200: 696e 2074 6865 20e2 8098 706f 6c79 676f in the ...polygo │ │ │ │ │ -00003210: 6ee2 8099 0a63 6f6d 6d61 6e64 2061 7070 n....command app │ │ │ │ │ -00003220: 6561 7220 696e 205f 636f 756e 7465 722d ear in _counter- │ │ │ │ │ -00003230: 636c 6f63 6b77 6973 655f 206f 7264 6572 clockwise_ order │ │ │ │ │ -00003240: 2e20 2054 6875 732c 2069 6620 7468 6520 . Thus, if the │ │ │ │ │ -00003250: 636f 6d6d 616e 6420 6162 6f76 650a 6861 command above.ha │ │ │ │ │ -00003260: 6420 6265 656e 0a20 2070 6f6c 7967 6f6e d been. polygon │ │ │ │ │ -00003270: 2830 2c31 2c30 2928 312c 302c 3029 2830 (0,1,0)(1,0,0)(0 │ │ │ │ │ -00003280: 2c30 2c31 290a 7468 6520 706f 6c79 676f ,0,1).the polygo │ │ │ │ │ -00003290: 6e20 776f 756c 6420 6e6f 7420 6170 7065 n would not appe │ │ │ │ │ -000032a0: 6172 2069 6e20 7468 6520 7069 6374 7572 ar in the pictur │ │ │ │ │ -000032b0: 6520 6174 2061 6c6c 2e20 2049 7420 776f e at all. It wo │ │ │ │ │ -000032c0: 756c 6420 6861 7665 2062 6565 6e0a e280 uld have been... │ │ │ │ │ -000032d0: 9c63 756c 6c65 64e2 809d 2066 726f 6d20 .culled... from │ │ │ │ │ -000032e0: 7468 6520 7363 656e 652e 2020 5468 6973 the scene. This │ │ │ │ │ -000032f0: 2063 756c 6c69 6e67 2062 6568 6176 696f culling behavio │ │ │ │ │ -00003300: 7220 6d61 7920 7365 656d 2073 7472 616e r may seem stran │ │ │ │ │ -00003310: 6765 2c20 6275 740a 7374 6179 2074 756e ge, but.stay tun │ │ │ │ │ -00003320: 6564 2e0a 0a20 2020 2d2d 2d2d 2d2d 2d2d ed... -------- │ │ │ │ │ -00003330: 2d2d 2046 6f6f 746e 6f74 6573 202d 2d2d -- Footnotes --- │ │ │ │ │ -00003340: 2d2d 2d2d 2d2d 2d0a 0a20 2020 2831 2920 -------.. (1) │ │ │ │ │ -00003350: 4f72 2066 6f72 2045 7572 6f70 6561 6e20 Or for European │ │ │ │ │ -00003360: 7573 6572 7320 6f66 2041 3420 7369 7a65 users of A4 size │ │ │ │ │ -00003370: 2070 6170 6572 2c20 e280 982d 5465 e280 paper, ...-Te.. │ │ │ │ │ -00003380: 992e 0a0a 1f0a 4669 6c65 3a20 736b 6574 ......File: sket │ │ │ │ │ -00003390: 6368 2e69 6e66 6f2c 2020 4e6f 6465 3a20 ch.info, Node: │ │ │ │ │ -000033a0: 4472 6177 696e 6720 6f70 7469 6f6e 732c Drawing options, │ │ │ │ │ -000033b0: 2020 4e65 7874 3a20 4472 6177 696e 6720 Next: Drawing │ │ │ │ │ -000033c0: 6120 736f 6c69 642c 2020 5072 6576 3a20 a solid, Prev: │ │ │ │ │ -000033d0: 4865 6c6c 6f20 776f 726c 642c 2020 5570 Hello world, Up │ │ │ │ │ -000033e0: 3a20 496e 7472 6f64 7563 7469 6f6e 2062 : Introduction b │ │ │ │ │ -000033f0: 7920 6578 616d 706c 650a 0a32 2e32 204f y example..2.2 O │ │ │ │ │ -00003400: 7074 696f 6e73 0a3d 3d3d 3d3d 3d3d 3d3d ptions.========= │ │ │ │ │ -00003410: 3d3d 0a0a 4d61 6e79 20e2 8098 5053 5472 ==..Many ...PSTr │ │ │ │ │ -00003420: 6963 6b73 e280 9920 616e 6420 e280 9854 icks... and ...T │ │ │ │ │ -00003430: 696b 5a2f 5047 46e2 8099 206f 7074 696f ikZ/PGF... optio │ │ │ │ │ -00003440: 6e73 2077 6f72 6b20 6a75 7374 2066 696e ns work just fin │ │ │ │ │ -00003450: 6520 696e 20e2 8098 736b 6574 6368 e280 e in ...sketch.. │ │ │ │ │ -00003460: 992e 2020 4966 0a67 656e 6572 6174 696e .. If.generatin │ │ │ │ │ -00003470: 6720 e280 9850 5354 7269 636b 73e2 8099 g ...PSTricks... │ │ │ │ │ -00003480: 2c20 7468 6520 636f 6465 0a20 2070 6f6c , the code. pol │ │ │ │ │ -00003490: 7967 6f6e 5b66 696c 6c63 6f6c 6f72 3d6c ygon[fillcolor=l │ │ │ │ │ -000034a0: 6967 6874 6772 6179 2c6c 696e 6577 6964 ightgray,linewid │ │ │ │ │ -000034b0: 7468 3d33 7074 5d28 302c 302c 3129 2831 th=3pt](0,0,1)(1 │ │ │ │ │ -000034c0: 2c30 2c30 2928 302c 312c 3029 0a20 206c ,0,0)(0,1,0). l │ │ │ │ │ -000034d0: 696e 655b 6c69 6e65 7374 796c 653d 646f ine[linestyle=do │ │ │ │ │ -000034e0: 7474 6564 5d28 2d31 2c2d 312c 2d31 2928 tted](-1,-1,-1)( │ │ │ │ │ -000034f0: 322c 322c 3229 0a70 726f 6475 6365 730a 2,2,2).produces. │ │ │ │ │ -00003500: 0a00 085b 696d 6167 6520 7372 633d 2265 ...[image src="e │ │ │ │ │ -00003510: 7830 3330 2e70 6e67 2220 7465 7874 3d22 x030.png" text=" │ │ │ │ │ -00003520: 496d 6167 6520 6578 3033 3020 6f6d 6974 Image ex030 omit │ │ │ │ │ -00003530: 7465 6420 696e 2074 6578 7420 7665 7273 ted in text vers │ │ │ │ │ -00003540: 696f 6e20 6f66 2074 6869 7320 646f 6375 ion of this docu │ │ │ │ │ -00003550: 6d65 6e74 2e22 0008 5d0a 0a20 2020 546f ment."..].. To │ │ │ │ │ -00003560: 2070 726f 6475 6365 20e2 8098 5469 6b5a produce ...TikZ │ │ │ │ │ -00003570: 2f50 4746 e280 992c 2074 6865 2063 6f72 /PGF..., the cor │ │ │ │ │ -00003580: 7265 7370 6f6e 6469 6e67 2063 6f64 6520 responding code │ │ │ │ │ -00003590: 6973 0a20 2070 6f6c 7967 6f6e 5b66 696c is. polygon[fil │ │ │ │ │ -000035a0: 6c3d 6c69 6768 7467 7261 792c 6c69 6e65 l=lightgray,line │ │ │ │ │ -000035b0: 2077 6964 7468 3d33 7074 5d28 302c 302c width=3pt](0,0, │ │ │ │ │ -000035c0: 3129 2831 2c30 2c30 2928 302c 312c 3029 1)(1,0,0)(0,1,0) │ │ │ │ │ -000035d0: 0a20 206c 696e 655b 7374 796c 653d 646f . line[style=do │ │ │ │ │ -000035e0: 7474 6564 5d28 2d31 2c2d 312c 2d31 2928 tted](-1,-1,-1)( │ │ │ │ │ -000035f0: 322c 322c 3229 0a20 2067 6c6f 6261 6c20 2,2,2). global │ │ │ │ │ -00003600: 7b20 6c61 6e67 7561 6765 2074 696b 7a20 { language tikz │ │ │ │ │ -00003610: 7d0a 5468 6520 6669 6e61 6c20 e280 9867 }.The final ...g │ │ │ │ │ -00003620: 6c6f 6261 6ce2 8099 2069 6e73 7472 7563 lobal... instruc │ │ │ │ │ -00003630: 7473 20e2 8098 736b 6574 6368 e280 9920 ts ...sketch... │ │ │ │ │ -00003640: 746f 2070 726f 6475 6365 20e2 8098 5469 to produce ...Ti │ │ │ │ │ -00003650: 6b5a 2f50 4746 e280 9920 636f 6465 2061 kZ/PGF... code a │ │ │ │ │ -00003660: 730a 6f75 7470 7574 2072 6174 6865 7220 s.output rather │ │ │ │ │ -00003670: 7468 616e 2074 6865 2064 6566 6175 6c74 than the default │ │ │ │ │ -00003680: 2c20 e280 9850 5354 7269 636b 73e2 8099 , ...PSTricks... │ │ │ │ │ -00003690: 2e20 204e 6f74 6520 7468 6174 20e2 8098 . Note that ... │ │ │ │ │ -000036a0: 706f 6c79 676f 6ee2 8099 2066 696c 6c0a polygon... fill. │ │ │ │ │ -000036b0: 636f 6c6f 7220 616e 6420 e280 986c 696e color and ...lin │ │ │ │ │ -000036c0: 65e2 8099 2073 7479 6c65 206f 7074 696f e... style optio │ │ │ │ │ -000036d0: 6e73 2062 6f74 6820 636f 6e66 6f72 6d20 ns both conform │ │ │ │ │ -000036e0: 746f 20e2 8098 5469 6b5a e280 9920 7379 to ...TikZ... sy │ │ │ │ │ -000036f0: 6e74 6178 2072 756c 6573 2e20 2054 6865 ntax rules. The │ │ │ │ │ -00003700: 0a72 6573 756c 7469 6e67 20e2 8098 5469 .resulting ...Ti │ │ │ │ │ -00003710: 6b5a 2f50 4746 e280 9920 6f75 7470 7574 kZ/PGF... output │ │ │ │ │ -00003720: 2069 730a 2020 5c62 6567 696e 7b74 696b is. \begin{tik │ │ │ │ │ -00003730: 7a70 6963 7475 7265 7d5b 6a6f 696e 3d72 zpicture}[join=r │ │ │ │ │ -00003740: 6f75 6e64 5d0a 2020 5c64 7261 775b 646f ound]. \draw[do │ │ │ │ │ -00003750: 7474 6564 5d28 2d31 2c2d 3129 2d2d 282e tted](-1,-1)--(. │ │ │ │ │ -00003760: 3333 332c 2e33 3333 293b 0a20 205c 6669 333,.333);. \fi │ │ │ │ │ -00003770: 6c6c 6472 6177 5b66 696c 6c3d 6c69 6768 lldraw[fill=ligh │ │ │ │ │ -00003780: 7467 7261 792c 6c69 6e65 2077 6964 7468 tgray,line width │ │ │ │ │ -00003790: 3d33 7074 5d28 302c 3029 2d2d 2831 2c30 =3pt](0,0)--(1,0 │ │ │ │ │ -000037a0: 292d 2d28 302c 3129 2d2d 6379 636c 653b )--(0,1)--cycle; │ │ │ │ │ -000037b0: 0a20 205c 6472 6177 5b64 6f74 7465 645d . \draw[dotted] │ │ │ │ │ -000037c0: 282e 3333 332c 2e33 3333 292d 2d28 322c (.333,.333)--(2, │ │ │ │ │ -000037d0: 3229 3b0a 2020 5c65 6e64 7b74 696b 7a70 2);. \end{tikzp │ │ │ │ │ -000037e0: 6963 7475 7265 7d0a 5468 6520 7265 6d61 icture}.The rema │ │ │ │ │ -000037f0: 696e 696e 6720 6578 616d 706c 6573 206f ining examples o │ │ │ │ │ -00003800: 6620 7468 6973 206d 616e 7561 6c20 6172 f this manual ar │ │ │ │ │ -00003810: 6520 696e 2050 5354 7269 636b 7320 7374 e in PSTricks st │ │ │ │ │ -00003820: 796c 652e 0a0a 1f0a 4669 6c65 3a20 736b yle.....File: sk │ │ │ │ │ -00003830: 6574 6368 2e69 6e66 6f2c 2020 4e6f 6465 etch.info, Node │ │ │ │ │ -00003840: 3a20 4472 6177 696e 6720 6120 736f 6c69 : Drawing a soli │ │ │ │ │ -00003850: 642c 2020 4e65 7874 3a20 5370 6563 6961 d, Next: Specia │ │ │ │ │ -00003860: 6c20 6f62 6a65 6374 732c 2020 5072 6576 l objects, Prev │ │ │ │ │ -00003870: 3a20 4472 6177 696e 6720 6f70 7469 6f6e : Drawing option │ │ │ │ │ -00003880: 732c 2020 5570 3a20 496e 7472 6f64 7563 s, Up: Introduc │ │ │ │ │ -00003890: 7469 6f6e 2062 7920 6578 616d 706c 650a tion by example. │ │ │ │ │ -000038a0: 0a32 2e33 2044 7261 7769 6e67 2061 2073 .2.3 Drawing a s │ │ │ │ │ -000038b0: 6f6c 6964 0a3d 3d3d 3d3d 3d3d 3d3d 3d3d olid.=========== │ │ │ │ │ -000038c0: 3d3d 3d3d 3d3d 3d3d 0a0a 4c65 7427 7320 ========..Let's │ │ │ │ │ -000038d0: 7472 7920 736f 6d65 7468 696e 6720 6d6f try something mo │ │ │ │ │ -000038e0: 7265 2065 7863 6974 696e 672e 2020 e280 re exciting. .. │ │ │ │ │ -000038f0: 9853 6b65 7463 68e2 8099 2068 6173 206e .Sketch... has n │ │ │ │ │ -00003900: 6f20 6e6f 7469 6f6e 206f 6620 6120 736f o notion of a so │ │ │ │ │ -00003910: 6c69 642c 0a62 7574 2070 6f6c 7967 6f6e lid,.but polygon │ │ │ │ │ -00003920: 616c 20e2 809c 6661 6365 73e2 809d 2063 al ...faces... c │ │ │ │ │ -00003930: 616e 2062 6520 7573 6564 2074 6f20 7265 an be used to re │ │ │ │ │ -00003940: 7072 6573 656e 7420 7468 6520 626f 756e present the boun │ │ │ │ │ -00003950: 6461 7279 206f 6620 6120 736f 6c69 642e dary of a solid. │ │ │ │ │ -00003960: 0a54 6f20 7468 6520 7072 6576 696f 7573 .To the previous │ │ │ │ │ -00003970: 2065 7861 6d70 6c65 2c20 6c65 7427 7320 example, let's │ │ │ │ │ -00003980: 6164 6420 7468 7265 6520 6d6f 7265 2074 add three more t │ │ │ │ │ -00003990: 7269 616e 6775 6c61 7220 706f 6c79 676f riangular polygo │ │ │ │ │ -000039a0: 6e73 2074 6f0a 6d61 6b65 2074 6865 2066 ns to.make the f │ │ │ │ │ -000039b0: 6163 6573 206f 6620 616e 2069 7272 6567 aces of an irreg │ │ │ │ │ -000039c0: 756c 6172 2074 6574 7261 6865 6472 6f6e ular tetrahedron │ │ │ │ │ -000039d0: 2e0a 2020 2520 7665 7274 6963 6573 206f .. % vertices o │ │ │ │ │ -000039e0: 6620 7468 6520 7465 7472 6168 6564 726f f the tetrahedro │ │ │ │ │ -000039f0: 6e0a 2020 6465 6620 7031 2028 302c 302c n. def p1 (0,0, │ │ │ │ │ -00003a00: 3129 2064 6566 2070 3220 2831 2c30 2c30 1) def p2 (1,0,0 │ │ │ │ │ -00003a10: 290a 2020 6465 6620 7033 2028 302c 312c ). def p3 (0,1, │ │ │ │ │ -00003a20: 3029 2064 6566 2070 3420 282d 2e33 2c2d 0) def p4 (-.3,- │ │ │ │ │ -00003a30: 2e35 2c2d 2e38 290a 0a20 2025 2066 6163 .5,-.8).. % fac │ │ │ │ │ -00003a40: 6573 206f 6620 7468 6520 7465 7472 6168 es of the tetrah │ │ │ │ │ -00003a50: 6564 726f 6e2e 0a20 2070 6f6c 7967 6f6e edron.. polygon │ │ │ │ │ -00003a60: 2870 3129 2870 3229 2870 3329 2025 206f (p1)(p2)(p3) % o │ │ │ │ │ -00003a70: 7269 6769 6e61 6c20 6672 6f6e 7420 706f riginal front po │ │ │ │ │ -00003a80: 6c79 676f 6e0a 2020 706f 6c79 676f 6e28 lygon. polygon( │ │ │ │ │ -00003a90: 7031 2928 7034 2928 7032 2920 2520 626f p1)(p4)(p2) % bo │ │ │ │ │ -00003aa0: 7474 6f6d 0a20 2070 6f6c 7967 6f6e 2870 ttom. polygon(p │ │ │ │ │ -00003ab0: 3129 2870 3329 2870 3429 2025 206c 6566 1)(p3)(p4) % lef │ │ │ │ │ -00003ac0: 740a 2020 706f 6c79 676f 6e28 7033 2928 t. polygon(p3)( │ │ │ │ │ -00003ad0: 7032 2928 7034 2920 2520 7265 6172 0a0a p2)(p4) % rear.. │ │ │ │ │ -00003ae0: 2020 2520 6c69 6e65 2074 6f20 7069 6572 % line to pier │ │ │ │ │ -00003af0: 6365 2074 6865 2074 6574 7261 6865 6472 ce the tetrahedr │ │ │ │ │ -00003b00: 6f6e 0a20 206c 696e 655b 6c69 6e65 636f on. line[lineco │ │ │ │ │ -00003b10: 6c6f 723d 7265 645d 282d 312c 2d31 2c2d lor=red](-1,-1,- │ │ │ │ │ -00003b20: 3129 2832 2c32 2c32 290a 5468 6973 2065 1)(2,2,2).This e │ │ │ │ │ -00003b30: 7861 6d70 6c65 2075 7365 7320 e280 9c64 xample uses ...d │ │ │ │ │ -00003b40: 6566 696e 6974 696f 6e73 e280 9d2c 2077 efinitions..., w │ │ │ │ │ -00003b50: 6869 6368 2062 6567 696e 2077 6974 6820 hich begin with │ │ │ │ │ -00003b60: e280 9864 6566 e280 992e 2020 5468 6573 ...def.... Thes │ │ │ │ │ -00003b70: 6520 e280 9c64 6566 696e 65e2 809d 0a6f e ...define....o │ │ │ │ │ -00003b80: 7220 6769 7665 206e 616d 6573 2074 6f20 r give names to │ │ │ │ │ -00003b90: 706f 696e 7473 2c20 7768 6963 6820 6172 points, which ar │ │ │ │ │ -00003ba0: 6520 7468 656e 2061 7661 696c 6162 6c65 e then available │ │ │ │ │ -00003bb0: 2061 7320 e280 9c72 6566 6572 656e 6365 as ...reference │ │ │ │ │ -00003bc0: 73e2 809d 2062 790a 656e 636c 6f73 696e s... by.enclosin │ │ │ │ │ -00003bd0: 6720 7468 6520 6e61 6d65 7320 696e 2070 g the names in p │ │ │ │ │ -00003be0: 6172 656e 7468 6573 6573 2c20 652e 672e arentheses, e.g. │ │ │ │ │ -00003bf0: 2028 666f 6f29 2e20 2054 6865 2070 6172 (foo). The par │ │ │ │ │ -00003c00: 656e 7468 6573 6573 2064 656e 6f74 650a entheses denote. │ │ │ │ │ -00003c10: 7468 6174 2074 6865 206e 616d 6573 2072 that the names r │ │ │ │ │ -00003c20: 6566 6572 2074 6f20 706f 696e 7473 3b20 efer to points; │ │ │ │ │ -00003c30: 7468 6579 2061 7265 2072 6571 7569 7265 they are require │ │ │ │ │ -00003c40: 642e 2020 5468 6572 6520 6361 6e20 6265 d. There can be │ │ │ │ │ -00003c50: 206e 6f0a 7768 6974 6520 7370 6163 6520 no.white space │ │ │ │ │ -00003c60: 6265 7477 6565 6e20 7468 656d 2061 6e64 between them and │ │ │ │ │ -00003c70: 2074 6865 206e 616d 652e 0a0a 2020 2041 the name... A │ │ │ │ │ -00003c80: 7320 796f 7520 6361 6e20 7365 652c 2063 s you can see, c │ │ │ │ │ -00003c90: 6f6d 6d65 6e74 7320 7374 6172 7420 7769 omments start wi │ │ │ │ │ -00003ca0: 7468 2025 2061 7320 696e 2054 6558 2061 th % as in TeX a │ │ │ │ │ -00003cb0: 6e64 2065 7874 656e 6420 746f 2074 6865 nd extend to the │ │ │ │ │ -00003cc0: 2065 6e64 0a6f 6620 7468 6520 6c69 6e65 end.of the line │ │ │ │ │ -00003cd0: 2028 7468 6f75 6768 2023 2077 696c 6c20 (though # will │ │ │ │ │ -00003ce0: 776f 726b 2061 7320 7765 6c6c 292e 2020 work as well). │ │ │ │ │ -00003cf0: 5768 6974 6520 7370 6163 652c 2069 6e63 White space, inc │ │ │ │ │ -00003d00: 6c75 6469 6e67 0a73 7061 6365 732c 2074 luding.spaces, t │ │ │ │ │ -00003d10: 6162 7320 616e 6420 626c 616e 6b20 6c69 abs and blank li │ │ │ │ │ -00003d20: 6e65 732c 2068 6173 206e 6f20 6566 6665 nes, has no effe │ │ │ │ │ -00003d30: 6374 2069 6e20 7468 6520 e280 9873 6b65 ct in the ...ske │ │ │ │ │ -00003d40: 7463 68e2 8099 206c 616e 6775 6167 652e tch... language. │ │ │ │ │ -00003d50: 0a0a 0008 5b69 6d61 6765 2073 7263 3d22 ....[image src=" │ │ │ │ │ -00003d60: 6578 3034 302e 706e 6722 2074 6578 743d ex040.png" text= │ │ │ │ │ -00003d70: 2249 6d61 6765 2065 7830 3430 206f 6d69 "Image ex040 omi │ │ │ │ │ -00003d80: 7474 6564 2069 6e20 7465 7874 2076 6572 tted in text ver │ │ │ │ │ -00003d90: 7369 6f6e 206f 6620 7468 6973 2064 6f63 sion of this doc │ │ │ │ │ -00003da0: 756d 656e 742e 2200 085d 0a0a 4966 2077 ument."..]..If w │ │ │ │ │ -00003db0: 6520 6c6f 6f6b 2069 6e73 6964 6520 7468 e look inside th │ │ │ │ │ -00003dc0: 6520 5465 5820 6669 6c65 2070 726f 6475 e TeX file produ │ │ │ │ │ -00003dd0: 6365 6420 6279 20e2 8098 736b 6574 6368 ced by ...sketch │ │ │ │ │ -00003de0: e280 992c 2074 6865 7265 2077 696c 6c20 ..., there will │ │ │ │ │ -00003df0: 6265 206f 6e6c 790a 7468 7265 6520 706f be only.three po │ │ │ │ │ -00003e00: 6c79 676f 6e73 2e20 2054 6865 2066 6f75 lygons. The fou │ │ │ │ │ -00003e10: 7274 6820 6861 7320 6265 656e 2063 756c rth has been cul │ │ │ │ │ -00003e20: 6c65 6420 6265 6361 7573 6520 6974 2069 led because it i │ │ │ │ │ -00003e30: 7320 6120 2262 6163 6b20 6661 6365 220a s a "back face". │ │ │ │ │ -00003e40: 6f66 2074 6865 2074 6574 7261 6865 6472 of the tetrahedr │ │ │ │ │ -00003e50: 6f6e 2c20 696e 7669 7369 626c 6520 746f on, invisible to │ │ │ │ │ -00003e60: 206f 7572 2076 6965 772e 2020 4974 2069 our view. It i │ │ │ │ │ -00003e70: 7320 756e 6e65 6365 7373 6172 792c 2061 s unnecessary, a │ │ │ │ │ -00003e80: 6e64 2073 6f20 6974 0a69 7320 7265 6d6f nd so it.is remo │ │ │ │ │ -00003e90: 7665 642e 0a0a 2020 2049 6e20 736f 6d65 ved... In some │ │ │ │ │ -00003ea0: 2064 7261 7769 6e67 732c 2070 6f6c 7967 drawings, polyg │ │ │ │ │ -00003eb0: 6f6e 7320 6163 7420 6173 207a 6572 6f2d ons act as zero- │ │ │ │ │ -00003ec0: 7468 6963 6b6e 6573 7320 736f 6c69 6420 thickness solid │ │ │ │ │ -00003ed0: 7375 7266 6163 6573 2077 6974 680a 626f surfaces with.bo │ │ │ │ │ -00003ee0: 7468 2073 6964 6573 2076 6973 6962 6c65 th sides visible │ │ │ │ │ -00003ef0: 2072 6174 6865 7220 7468 616e 2061 7320 rather than as │ │ │ │ │ -00003f00: 7468 6520 6661 6365 7320 6f66 2073 6f6c the faces of sol │ │ │ │ │ -00003f10: 6964 206f 626a 6563 7473 2c20 7768 6572 id objects, wher │ │ │ │ │ -00003f20: 6520 6261 636b 0a66 6163 6573 2063 616e e back.faces can │ │ │ │ │ -00003f30: 2062 6520 6375 6c6c 6564 2e20 2046 6f72 be culled. For │ │ │ │ │ -00003f40: 207a 6572 6f2d 7468 6963 6b6e 6573 7320 zero-thickness │ │ │ │ │ -00003f50: 736f 6c69 6473 2c20 6375 6c6c 696e 6720 solids, culling │ │ │ │ │ -00003f60: 6973 2061 2070 726f 626c 656d 2e0a 4f6e is a problem..On │ │ │ │ │ -00003f70: 6520 736f 6c75 7469 6f6e 2069 7320 746f e solution is to │ │ │ │ │ -00003f80: 2075 7365 2061 2070 6169 7220 6f66 20e2 use a pair of . │ │ │ │ │ -00003f90: 8098 736b 6574 6368 e280 9920 706f 6c79 ..sketch... poly │ │ │ │ │ -00003fa0: 676f 6e73 2066 6f72 2065 6163 680a 7a65 gons for each.ze │ │ │ │ │ -00003fb0: 726f 2d74 6869 636b 6e65 7373 2066 6163 ro-thickness fac │ │ │ │ │ -00003fc0: 652c 2069 6465 6e74 6963 616c 2065 7863 e, identical exc │ │ │ │ │ -00003fd0: 6570 7420 7769 7468 206f 7070 6f73 6974 ept with opposit │ │ │ │ │ -00003fe0: 6520 7665 7274 6578 206f 7264 6572 732e e vertex orders. │ │ │ │ │ -00003ff0: 2020 5468 6973 0a69 7320 756e 7769 656c This.is unwiel │ │ │ │ │ -00004000: 6479 2061 6e64 2065 7870 656e 7369 7665 dy and expensive │ │ │ │ │ -00004010: 2e20 2041 2062 6574 7465 7220 7761 7920 . A better way │ │ │ │ │ -00004020: 6973 2074 6f20 7365 7420 7468 6520 e280 is to set the .. │ │ │ │ │ -00004030: 9873 6b65 7463 68e2 8099 2069 6e74 6572 .sketch... inter │ │ │ │ │ -00004040: 6e61 6c0a 6f70 7469 6f6e 20e2 8098 6375 nal.option ...cu │ │ │ │ │ -00004050: 6c6c e280 9920 746f 20e2 8098 6661 6c73 ll... to ...fals │ │ │ │ │ -00004060: 65e2 8099 2069 6e20 7468 6520 7573 7561 e... in the usua │ │ │ │ │ -00004070: 6c20 e280 9850 5354 7269 636b 73e2 8099 l ...PSTricks... │ │ │ │ │ -00004080: 206d 616e 6e65 722e 0a20 2070 6f6c 7967 manner.. polyg │ │ │ │ │ -00004090: 6f6e 5b63 756c 6c3d 6661 6c73 655d 2870 on[cull=false](p │ │ │ │ │ -000040a0: 3129 2870 3229 2870 3329 0a54 6865 2066 1)(p2)(p3).The f │ │ │ │ │ -000040b0: 6f6c 6c6f 7769 6e67 2073 686f 7773 2074 ollowing shows t │ │ │ │ │ -000040c0: 6865 2073 616d 6520 6865 6c69 7820 7368 he same helix sh │ │ │ │ │ -000040d0: 6170 6520 6472 6177 6e20 6669 7273 7420 ape drawn first │ │ │ │ │ -000040e0: 7769 7468 2063 756c 6c3d 7472 7565 2028 with cull=true ( │ │ │ │ │ -000040f0: 7468 650a 6465 6661 756c 7429 2061 6e64 the.default) and │ │ │ │ │ -00004100: 2074 6865 6e20 6375 6c6c 3d66 616c 7365 then cull=false │ │ │ │ │ -00004110: 2e0a 0a00 085b 696d 6167 6520 7372 633d .....[image src= │ │ │ │ │ -00004120: 2265 7830 3435 2e70 6e67 2220 7465 7874 "ex045.png" text │ │ │ │ │ -00004130: 3d22 496d 6167 6520 6578 3034 3520 6f6d ="Image ex045 om │ │ │ │ │ -00004140: 6974 7465 6420 696e 2074 6578 7420 7665 itted in text ve │ │ │ │ │ -00004150: 7273 696f 6e20 6f66 2074 6869 7320 646f rsion of this do │ │ │ │ │ -00004160: 6375 6d65 6e74 2e22 0008 5d0a 0a57 6527 cument."..]..We' │ │ │ │ │ -00004170: 6c6c 2073 6f6f 6e20 7365 6520 686f 7720 ll soon see how │ │ │ │ │ -00004180: 746f 2070 726f 6475 6365 2074 6865 7365 to produce these │ │ │ │ │ -00004190: 2068 656c 6978 6573 2077 6974 6820 6120 helixes with a │ │ │ │ │ -000041a0: 6665 7720 6c69 6e65 7320 6f66 20e2 8098 few lines of ... │ │ │ │ │ -000041b0: 736b 6574 6368 e280 990a 6c61 6e67 7561 sketch....langua │ │ │ │ │ -000041c0: 6765 2063 6f64 652e 0a0a 2020 2049 7420 ge code... It │ │ │ │ │ -000041d0: 6d61 7920 6265 2074 656d 7074 696e 6720 may be tempting │ │ │ │ │ -000041e0: 746f 2074 7572 6e20 6375 6c6c 696e 6720 to turn culling │ │ │ │ │ -000041f0: 6f66 6620 6772 6174 7569 746f 7573 6c79 off gratuitously │ │ │ │ │ -00004200: 2073 6f20 7468 6174 2076 6572 7465 780a so that vertex. │ │ │ │ │ -00004210: 6f72 6465 7220 6361 6e20 6265 2069 676e order can be ign │ │ │ │ │ -00004220: 6f72 6564 2e20 2054 6869 7320 6973 206e ored. This is n │ │ │ │ │ -00004230: 6f74 2061 2067 6f6f 6420 6964 6561 2062 ot a good idea b │ │ │ │ │ -00004240: 6563 6175 7365 206f 7574 7075 7420 6669 ecause output fi │ │ │ │ │ -00004250: 6c65 2073 697a 650a 616e 6420 5465 5820 le size.and TeX │ │ │ │ │ -00004260: 616e 6420 506f 7374 7363 7269 7074 2070 and Postscript p │ │ │ │ │ -00004270: 726f 6365 7373 696e 6720 7469 6d65 2062 rocessing time b │ │ │ │ │ -00004280: 6f74 6820 6465 7065 6e64 206f 6e20 7468 oth depend on th │ │ │ │ │ -00004290: 6520 6e75 6d62 6572 206f 660a 6f75 7470 e number of.outp │ │ │ │ │ -000042a0: 7574 2070 6f6c 7967 6f6e 732e 2020 4375 ut polygons. Cu │ │ │ │ │ -000042b0: 6c6c 696e 6720 7573 7561 6c6c 7920 696d lling usually im │ │ │ │ │ -000042c0: 7072 6f76 6573 2070 6572 666f 726d 616e proves performan │ │ │ │ │ -000042d0: 6365 2062 7920 6120 6661 6374 6f72 206f ce by a factor o │ │ │ │ │ -000042e0: 660a 7477 6f2e 2020 4f6e 2074 6865 206f f.two. On the o │ │ │ │ │ -000042f0: 7468 6572 2068 616e 642c 2067 6c6f 6261 ther hand, globa │ │ │ │ │ -00004300: 6c6c 7920 7365 7474 696e 6720 e280 9863 lly setting ...c │ │ │ │ │ -00004310: 756c 6c3d 6661 6c73 65e2 8099 2069 7320 ull=false... is │ │ │ │ │ -00004320: 7265 6173 6f6e 6162 6c65 0a77 6869 6c65 reasonable.while │ │ │ │ │ -00004330: 2064 6562 7567 6769 6e67 2e20 2053 6565 debugging. See │ │ │ │ │ -00004340: 202a 6e6f 7465 2047 6c6f 6261 6c20 6f70 *note Global op │ │ │ │ │ -00004350: 7469 6f6e 733a 3a20 616e 6420 2a6e 6f74 tions:: and *not │ │ │ │ │ -00004360: 6520 4c69 6d69 7473 206f 6e20 6572 726f e Limits on erro │ │ │ │ │ -00004370: 720a 6465 7465 6374 696f 6e3a 3a2e 0a0a r.detection::... │ │ │ │ │ -00004380: 1f0a 4669 6c65 3a20 736b 6574 6368 2e69 ..File: sketch.i │ │ │ │ │ -00004390: 6e66 6f2c 2020 4e6f 6465 3a20 5370 6563 nfo, Node: Spec │ │ │ │ │ -000043a0: 6961 6c20 6f62 6a65 6374 732c 2020 4e65 ial objects, Ne │ │ │ │ │ -000043b0: 7874 3a20 4f62 6a65 6374 2074 7261 6e73 xt: Object trans │ │ │ │ │ -000043c0: 666f 726d 732c 2020 5072 6576 3a20 4472 forms, Prev: Dr │ │ │ │ │ -000043d0: 6177 696e 6720 6120 736f 6c69 642c 2020 awing a solid, │ │ │ │ │ -000043e0: 5570 3a20 496e 7472 6f64 7563 7469 6f6e Up: Introduction │ │ │ │ │ -000043f0: 2062 7920 6578 616d 706c 650a 0a32 2e34 by example..2.4 │ │ │ │ │ -00004400: 2053 7065 6369 616c 206f 626a 6563 7473 Special objects │ │ │ │ │ -00004410: 0a3d 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d .=============== │ │ │ │ │ -00004420: 3d3d 3d3d 0a0a 5765 2063 616e 2061 6464 ====..We can add │ │ │ │ │ -00004430: 206c 6162 656c 7320 746f 2061 2064 7261 labels to a dra │ │ │ │ │ -00004440: 7769 6e67 2062 7920 7573 696e 6720 7370 wing by using sp │ │ │ │ │ -00004450: 6563 6961 6c20 6f62 6a65 6374 732c 2077 ecial objects, w │ │ │ │ │ -00004460: 6869 6368 2070 726f 7669 6465 2061 0a77 hich provide a.w │ │ │ │ │ -00004470: 6179 2074 6f20 656d 6265 6420 7261 7720 ay to embed raw │ │ │ │ │ -00004480: 4c61 5465 5820 616e 6420 e280 9850 5354 LaTeX and ...PST │ │ │ │ │ -00004490: 7269 636b 73e2 8099 2063 6f64 652e 2020 ricks... code. │ │ │ │ │ -000044a0: 4164 6469 6e67 2074 6869 7320 746f 2074 Adding this to t │ │ │ │ │ -000044b0: 6865 0a74 6574 7261 6865 6472 6f6e 2064 he.tetrahedron d │ │ │ │ │ -000044c0: 6f65 7320 7468 6520 7472 6963 6b2e 0a20 oes the trick.. │ │ │ │ │ -000044d0: 2073 7065 6369 616c 207c 5c66 6f6f 746e special |\footn │ │ │ │ │ -000044e0: 6f74 6573 697a 650a 2020 2020 2020 2020 otesize. │ │ │ │ │ -000044f0: 2020 205c 7570 7574 7b32 7074 7d5b 7572 \uput{2pt}[ur │ │ │ │ │ -00004500: 5d23 317b 2450 3124 7d0a 2020 2020 2020 ]#1{$P1$}. │ │ │ │ │ -00004510: 2020 2020 205c 7570 7574 5b72 5d23 327b \uput[r]#2{ │ │ │ │ │ -00004520: 2450 3224 7d0a 2020 2020 2020 2020 2020 $P2$}. │ │ │ │ │ -00004530: 205c 7570 7574 5b75 5d23 337b 2450 3324 \uput[u]#3{$P3$ │ │ │ │ │ -00004540: 7d0a 2020 2020 2020 2020 2020 205c 7570 }. \up │ │ │ │ │ -00004550: 7574 5b64 5d23 347b 2450 3424 7d7c 0a20 ut[d]#4{$P4$}|. │ │ │ │ │ -00004560: 2020 2028 7031 2928 7032 2928 7033 2928 (p1)(p2)(p3)( │ │ │ │ │ -00004570: 7034 290a 4865 7265 2069 7320 7468 6520 p4).Here is the │ │ │ │ │ -00004580: 7265 7375 6c74 2e0a 0a00 085b 696d 6167 result.....[imag │ │ │ │ │ -00004590: 6520 7372 633d 2265 7830 3432 2e70 6e67 e src="ex042.png │ │ │ │ │ -000045a0: 2220 7465 7874 3d22 496d 6167 6520 6578 " text="Image ex │ │ │ │ │ -000045b0: 3034 3220 6f6d 6974 7465 6420 696e 2074 042 omitted in t │ │ │ │ │ -000045c0: 6578 7420 7665 7273 696f 6e20 6f66 2074 ext version of t │ │ │ │ │ -000045d0: 6869 7320 646f 6375 6d65 6e74 2e22 0008 his document.".. │ │ │ │ │ -000045e0: 5d0a 0a20 2020 5468 6572 6520 6172 6520 ].. There are │ │ │ │ │ -000045f0: 7365 7665 7261 6c20 6465 7461 696c 7320 several details │ │ │ │ │ -00004600: 746f 206e 6f74 6520 6865 7265 2e20 2046 to note here. F │ │ │ │ │ -00004610: 6972 7374 2c20 7468 6520 7175 6f74 696e irst, the quotin │ │ │ │ │ -00004620: 670a 636f 6e76 656e 7469 6f6e 2066 6f72 g.convention for │ │ │ │ │ -00004630: 2074 6865 2072 6177 2063 6f64 6520 6973 the raw code is │ │ │ │ │ -00004640: 2073 696d 696c 6172 2074 6f20 7468 6520 similar to the │ │ │ │ │ -00004650: 4c61 5465 5820 5c76 6572 6220 636f 6d6d LaTeX \verb comm │ │ │ │ │ -00004660: 616e 642e 2020 5468 650a 6669 7273 7420 and. The.first │ │ │ │ │ -00004670: 6e6f 6e2d 7768 6974 6520 7370 6163 6520 non-white space │ │ │ │ │ -00004680: 6368 6172 6163 7465 7220 666f 6c6c 6f77 character follow │ │ │ │ │ -00004690: 696e 6720 7370 6563 6961 6c20 6973 2075 ing special is u │ │ │ │ │ -000046a0: 6e64 6572 7374 6f6f 6420 746f 2062 650a nderstood to be. │ │ │ │ │ -000046b0: 7468 6520 7175 6f74 6520 6368 6172 6163 the quote charac │ │ │ │ │ -000046c0: 7465 722c 2069 6e20 7468 6973 2063 6173 ter, in this cas │ │ │ │ │ -000046d0: 6520 e280 987c e280 992e 2020 5468 6520 e ...|.... The │ │ │ │ │ -000046e0: 7261 7720 7465 7874 2063 6f6e 7469 6e75 raw text continu │ │ │ │ │ -000046f0: 6573 2075 6e74 696c 0a74 6869 7320 6368 es until.this ch │ │ │ │ │ -00004700: 6172 6163 7465 7220 7265 6375 7273 2e0a aracter recurs.. │ │ │ │ │ -00004710: 0a20 2020 5365 636f 6e64 2c20 7468 6520 . Second, the │ │ │ │ │ -00004720: 6172 6775 6d65 6e74 2072 6566 6572 656e argument referen │ │ │ │ │ -00004730: 6365 7320 2331 2c20 2332 2c20 2333 2c20 ces #1, #2, #3, │ │ │ │ │ -00004740: 616e 6420 2334 2072 6566 6572 2074 6f20 and #4 refer to │ │ │ │ │ -00004750: 706f 696e 742c 0a76 6563 746f 722c 206f point,.vector, o │ │ │ │ │ -00004760: 7220 7363 616c 6172 2076 616c 7565 7320 r scalar values │ │ │ │ │ -00004770: 696e 2074 6865 206c 6973 7420 7468 6174 in the list that │ │ │ │ │ -00004780: 2066 6f6c 6c6f 772e 2020 5468 6973 2069 follow. This i │ │ │ │ │ -00004790: 7320 7369 6d69 6c61 7220 746f 0a54 6558 s similar to.TeX │ │ │ │ │ -000047a0: 206d 6163 726f 2073 796e 7461 782e 2020 macro syntax. │ │ │ │ │ -000047b0: 5468 6520 7472 616e 7366 6f72 6d65 6420 The transformed │ │ │ │ │ -000047c0: 616e 6420 7477 6f2d 6469 6d65 6e73 696f and two-dimensio │ │ │ │ │ -000047d0: 6e61 6c20 7072 6f6a 6563 7469 6f6e 7320 nal projections │ │ │ │ │ -000047e0: 6f66 0a74 6865 7365 2074 6872 6565 2d64 of.these three-d │ │ │ │ │ -000047f0: 696d 656e 7369 6f6e 616c 2070 6f69 6e74 imensional point │ │ │ │ │ -00004800: 7320 6172 6520 7375 6273 7469 7475 7465 s are substitute │ │ │ │ │ -00004810: 6420 696e 2074 6865 2066 696e 616c 206f d in the final o │ │ │ │ │ -00004820: 7574 7075 742e 2020 416e 0a61 7267 756d utput. An.argum │ │ │ │ │ -00004830: 656e 7420 7265 6665 7265 6e63 6520 6f66 ent reference of │ │ │ │ │ -00004840: 2074 6865 2066 6f72 6d20 2331 2d32 2069 the form #1-2 i │ │ │ │ │ -00004850: 7320 7265 706c 6163 6564 2077 6974 6820 s replaced with │ │ │ │ │ -00004860: 7468 6520 616e 676c 6520 696e 0a64 6567 the angle in.deg │ │ │ │ │ -00004870: 7265 6573 206f 6620 7468 6520 7477 6f2d rees of the two- │ │ │ │ │ -00004880: 6469 6d65 6e73 696f 6e61 6c20 7665 6374 dimensional vect │ │ │ │ │ -00004890: 6f72 2074 6861 7420 636f 6e6e 6563 7473 or that connects │ │ │ │ │ -000048a0: 2074 6865 2070 726f 6a65 6374 696f 6e73 the projections │ │ │ │ │ -000048b0: 206f 660a 7468 6520 7477 6f20 7265 7370 of.the two resp │ │ │ │ │ -000048c0: 6563 7469 7665 2061 7267 756d 656e 7420 ective argument │ │ │ │ │ -000048d0: 706f 696e 7473 2c20 6865 7265 2023 3120 points, here #1 │ │ │ │ │ -000048e0: 616e 6420 2332 2e20 2054 6865 2073 7562 and #2. The sub │ │ │ │ │ -000048f0: 7374 6974 7574 6564 0a61 6e67 6c65 2069 stituted.angle i │ │ │ │ │ -00004900: 7320 656e 636c 6f73 6564 2069 6e20 6375 s enclosed in cu │ │ │ │ │ -00004910: 726c 7920 6272 6163 6573 20e2 8098 7b20 rly braces ...{ │ │ │ │ │ -00004920: 7de2 8099 2e20 2057 6865 6e20 e280 9854 }.... When ...T │ │ │ │ │ -00004930: 696b 5a2f 5047 46e2 8099 206f 7574 7075 ikZ/PGF... outpu │ │ │ │ │ -00004940: 7420 6973 0a62 6569 6e67 2067 656e 6572 t is.being gener │ │ │ │ │ -00004950: 6174 6564 2c20 7468 6520 616e 676c 6520 ated, the angle │ │ │ │ │ -00004960: 6973 2072 6f75 6e64 6564 2074 6f20 7468 is rounded to th │ │ │ │ │ -00004970: 6520 6e65 6172 6573 7420 6465 6772 6565 e nearest degree │ │ │ │ │ -00004980: 2062 6563 6175 7365 0a6e 6f6e 2d69 6e74 because.non-int │ │ │ │ │ -00004990: 6567 6572 2061 6e67 6c65 7320 6172 6520 eger angles are │ │ │ │ │ -000049a0: 6e6f 7420 616c 6c6f 7765 6420 6279 20e2 not allowed by . │ │ │ │ │ -000049b0: 8098 5469 6b5a 2f50 4746 e280 9920 7072 ..TikZ/PGF... pr │ │ │ │ │ -000049c0: 696d 6974 6976 6573 2e0a 0a20 2020 4173 imitives... As │ │ │ │ │ -000049d0: 206f 6620 5665 7273 696f 6e20 302e 3320 of Version 0.3 │ │ │ │ │ -000049e0: 6f66 20e2 8098 736b 6574 6368 e280 992c of ...sketch..., │ │ │ │ │ -000049f0: 2073 7065 6369 616c 2061 7267 756d 656e special argumen │ │ │ │ │ -00004a00: 7473 206d 6179 2062 6520 7363 616c 6172 ts may be scalar │ │ │ │ │ -00004a10: 7320 6f72 0a76 6563 746f 7273 2069 6e20 s or.vectors in │ │ │ │ │ -00004a20: 6164 6469 7469 6f6e 2074 6f20 706f 696e addition to poin │ │ │ │ │ -00004a30: 7473 2e20 2052 6566 6572 656e 6365 7320 ts. References │ │ │ │ │ -00004a40: 746f 2073 6361 6c61 7220 6172 6775 6d65 to scalar argume │ │ │ │ │ -00004a50: 6e74 7320 6172 650a 6d65 7265 6c79 2072 nts are.merely r │ │ │ │ │ -00004a60: 6570 6c61 6365 6420 7769 7468 2061 206e eplaced with a n │ │ │ │ │ -00004a70: 756d 6265 7220 666f 726d 6174 7465 6420 umber formatted │ │ │ │ │ -00004a80: 6a75 7374 2061 7320 616e 7920 706f 696e just as any poin │ │ │ │ │ -00004a90: 7420 636f 6f72 6469 6e61 7465 2e0a 5265 t coordinate..Re │ │ │ │ │ -00004aa0: 6665 7265 6e63 6573 2074 6f20 7665 6374 ferences to vect │ │ │ │ │ -00004ab0: 6f72 7320 6265 636f 6d65 2074 776f 2d64 ors become two-d │ │ │ │ │ -00004ac0: 696d 656e 7369 6f6e 616c 2070 6f69 6e74 imensional point │ │ │ │ │ -00004ad0: 732e 2020 5468 6520 7469 636b 206f 7065 s. The tick ope │ │ │ │ │ -00004ae0: 7261 746f 720a 7468 6174 2073 656c 6563 rator.that selec │ │ │ │ │ -00004af0: 7473 2069 6e64 6976 6964 7561 6c20 636f ts individual co │ │ │ │ │ -00004b00: 6d70 6f6e 656e 7473 206f 6620 706f 696e mponents of poin │ │ │ │ │ -00004b10: 7473 2061 6e64 2076 6563 746f 7273 2065 ts and vectors e │ │ │ │ │ -00004b20: 6c73 6577 6865 7265 2069 6e0a e280 9873 lsewhere in....s │ │ │ │ │ -00004b30: 6b65 7463 68e2 8099 2028 7365 6520 666f ketch... (see fo │ │ │ │ │ -00004b40: 7220 6578 616d 706c 6520 2a6e 6f74 6520 r example *note │ │ │ │ │ -00004b50: 4166 6669 6e65 2061 7269 7468 6d65 7469 Affine arithmeti │ │ │ │ │ -00004b60: 633a 3a29 2063 616e 2061 6c73 6f20 6265 c::) can also be │ │ │ │ │ -00004b70: 2061 7070 6c69 6564 0a74 6f20 706f 696e applied.to poin │ │ │ │ │ -00004b80: 7420 616e 6420 7665 6374 6f72 2061 7267 t and vector arg │ │ │ │ │ -00004b90: 756d 656e 7420 7265 6665 7265 6e63 6573 ument references │ │ │ │ │ -00004ba0: 2e20 2041 6c6c 2074 6872 6565 2064 696d . All three dim │ │ │ │ │ -00004bb0: 656e 7369 6f6e 7320 6f66 2061 0a74 7261 ensions of a.tra │ │ │ │ │ -00004bc0: 6e73 666f 726d 6564 2070 6f69 6e74 206f nsformed point o │ │ │ │ │ -00004bd0: 7220 7665 6374 6f72 2063 616e 2061 6c73 r vector can als │ │ │ │ │ -00004be0: 6f20 6265 2073 7562 7374 6974 7565 6420 o be substitued │ │ │ │ │ -00004bf0: 7769 7468 20e2 8098 2733 e280 992e 2020 with ...'3.... │ │ │ │ │ -00004c00: 5365 6520 2a6e 6f74 650a 5370 6563 6961 See *note.Specia │ │ │ │ │ -00004c10: 6c73 3a3a 2066 6f72 2064 6574 6169 6c73 ls:: for details │ │ │ │ │ -00004c20: 2e0a 0a20 2020 4279 2064 6566 6175 6c74 ... By default │ │ │ │ │ -00004c30: 2c20 e280 9873 7065 6369 616c e280 9920 , ...special... │ │ │ │ │ -00004c40: 6f62 6a65 6374 7320 6172 6520 7072 696e objects are prin │ │ │ │ │ -00004c50: 7465 6420 6c61 7374 2c20 6f76 6572 6c61 ted last, overla │ │ │ │ │ -00004c60: 7969 6e67 2061 6c6c 206f 7468 6572 0a6f ying all other.o │ │ │ │ │ -00004c70: 626a 6563 7473 2069 6e20 7468 6520 7363 bjects in the sc │ │ │ │ │ -00004c80: 656e 652e 2020 4966 2079 6f75 2073 7065 ene. If you spe │ │ │ │ │ -00004c90: 6369 6679 2074 6865 2069 6e74 6572 6e61 cify the interna │ │ │ │ │ -00004ca0: 6c20 6f70 7469 6f6e 20e2 8098 6c61 793d l option ...lay= │ │ │ │ │ -00004cb0: 696e e280 992c 2074 6865 0a68 6964 6465 in..., the.hidde │ │ │ │ │ -00004cc0: 6e20 7375 7266 6163 6520 616c 676f 7269 n surface algori │ │ │ │ │ -00004cd0: 7468 6d20 636f 6e73 6964 6572 7320 7468 thm considers th │ │ │ │ │ -00004ce0: 6520 656e 7469 7265 2073 7065 6369 616c e entire special │ │ │ │ │ -00004cf0: 206f 626a 6563 7420 746f 2062 6520 7468 object to be th │ │ │ │ │ -00004d00: 650a 6669 7273 7420 706f 696e 7420 2823 e.first point (# │ │ │ │ │ -00004d10: 3129 2069 6e20 7468 6520 6172 6775 6d65 1) in the argume │ │ │ │ │ -00004d20: 6e74 206c 6973 742e 2020 4966 2074 6861 nt list. If tha │ │ │ │ │ -00004d30: 7420 706f 696e 7420 6973 2062 6568 696e t point is behin │ │ │ │ │ -00004d40: 6420 286f 660a 736d 616c 6c65 7220 7a2d d (of.smaller z- │ │ │ │ │ -00004d50: 636f 6d70 6f6e 656e 7420 7468 616e 2920 component than) │ │ │ │ │ -00004d60: 616e 7920 6472 6177 6162 6c65 2c20 7468 any drawable, th │ │ │ │ │ -00004d70: 656e 2074 6865 2065 6e74 6972 6520 7370 en the entire sp │ │ │ │ │ -00004d80: 6563 6961 6c20 6f62 6a65 6374 0a69 7320 ecial object.is │ │ │ │ │ -00004d90: 6472 6177 6e20 6265 666f 7265 2074 6861 drawn before tha │ │ │ │ │ -00004da0: 7420 6472 6177 6162 6c65 2c20 736f 2074 t drawable, so t │ │ │ │ │ -00004db0: 6865 2064 7261 7761 626c 6520 6f62 7363 he drawable obsc │ │ │ │ │ -00004dc0: 7572 6573 2070 6172 7473 206f 6620 7468 ures parts of th │ │ │ │ │ -00004dd0: 650a 7370 6563 6961 6c20 6f62 6a65 6374 e.special object │ │ │ │ │ -00004de0: 2074 6861 7420 6f76 6572 6c61 7073 2069 that overlaps i │ │ │ │ │ -00004df0: 742e 2020 496e 206f 7572 2065 7861 6d70 t. In our examp │ │ │ │ │ -00004e00: 6c65 2c20 7031 2069 7320 7468 6520 6672 le, p1 is the fr │ │ │ │ │ -00004e10: 6f6e 742d 6d6f 7374 0a70 6f69 6e74 2069 ont-most.point i │ │ │ │ │ -00004e20: 6e20 7468 6520 7363 656e 6520 2868 6173 n the scene (has │ │ │ │ │ -00004e30: 2074 6865 206c 6172 6765 7374 207a 2d63 the largest z-c │ │ │ │ │ -00004e40: 6f6d 706f 6e65 6e74 292c 2073 6f20 6164 omponent), so ad │ │ │ │ │ -00004e50: 6469 6e67 20e2 8098 6c61 793d 696e e280 ding ...lay=in.. │ │ │ │ │ -00004e60: 9920 6861 730a 6e6f 2065 6666 6563 742e . has.no effect. │ │ │ │ │ -00004e70: 0a0a 2020 2057 6974 6820 6f70 7469 6f6e .. With option │ │ │ │ │ -00004e80: 20e2 8098 6c61 793d 756e 6465 72e2 8099 ...lay=under... │ │ │ │ │ -00004e90: 2c20 6120 7370 6563 6961 6c20 6973 2064 , a special is d │ │ │ │ │ -00004ea0: 7261 776e 205f 6265 666f 7265 5f2c 2068 rawn _before_, h │ │ │ │ │ -00004eb0: 656e 6365 2061 7070 6561 7273 0a5f 756e ence appears._un │ │ │ │ │ -00004ec0: 6465 725f 2061 6e79 206f 6620 7468 6520 der_ any of the │ │ │ │ │ -00004ed0: 6f62 6a65 6374 7320 6861 6e64 6c65 6420 objects handled │ │ │ │ │ -00004ee0: 6279 2074 6865 2068 6964 6465 6e20 7375 by the hidden su │ │ │ │ │ -00004ef0: 7266 6163 6520 616c 676f 7269 7468 6d2e rface algorithm. │ │ │ │ │ -00004f00: 0a54 6869 7320 6973 2068 6f77 2074 6865 .This is how the │ │ │ │ │ -00004f10: 206c 6967 6874 2067 7261 7920 6178 6573 light gray axes │ │ │ │ │ -00004f20: 2077 6572 6520 6164 6465 6420 746f 2074 were added to t │ │ │ │ │ -00004f30: 6865 2022 6865 6c6c 6f20 776f 726c 6422 he "hello world" │ │ │ │ │ -00004f40: 2065 7861 6d70 6c65 0a2a 6e6f 7465 2048 example.*note H │ │ │ │ │ -00004f50: 656c 6c6f 2077 6f72 6c64 3a3a 2e0a 0a20 ello world::... │ │ │ │ │ -00004f60: 2020 5370 6563 6961 6c20 6f62 6a65 6374 Special object │ │ │ │ │ -00004f70: 7320 6172 6520 706f 7765 7266 756c 2c20 s are powerful, │ │ │ │ │ -00004f80: 7769 7468 206d 616e 7920 706f 7373 6962 with many possib │ │ │ │ │ -00004f90: 6c65 2075 7365 732e 0a0a 1f0a 4669 6c65 le uses.....File │ │ │ │ │ -00004fa0: 3a20 736b 6574 6368 2e69 6e66 6f2c 2020 : sketch.info, │ │ │ │ │ -00004fb0: 4e6f 6465 3a20 4f62 6a65 6374 2074 7261 Node: Object tra │ │ │ │ │ -00004fc0: 6e73 666f 726d 732c 2020 4e65 7874 3a20 nsforms, Next: │ │ │ │ │ -00004fd0: 5265 7065 6174 6564 206f 626a 6563 7473 Repeated objects │ │ │ │ │ -00004fe0: 2c20 2050 7265 763a 2053 7065 6369 616c , Prev: Special │ │ │ │ │ -00004ff0: 206f 626a 6563 7473 2c20 2055 703a 2049 objects, Up: I │ │ │ │ │ -00005000: 6e74 726f 6475 6374 696f 6e20 6279 2065 ntroduction by e │ │ │ │ │ -00005010: 7861 6d70 6c65 0a0a 322e 3520 5472 616e xample..2.5 Tran │ │ │ │ │ -00005020: 7366 6f72 6d73 0a3d 3d3d 3d3d 3d3d 3d3d sforms.========= │ │ │ │ │ -00005030: 3d3d 3d3d 3d0a 0a4e 6f77 206c 6574 2773 =====..Now let's │ │ │ │ │ -00005040: 2061 6464 2061 2073 6563 6f6e 6420 636f add a second co │ │ │ │ │ -00005050: 7079 206f 6620 7468 6520 7069 6572 6365 py of the pierce │ │ │ │ │ -00005060: 6420 7465 7472 6168 6564 726f 6e2e 2020 d tetrahedron. │ │ │ │ │ -00005070: 5765 276c 6c20 726f 7461 7465 0a74 6865 We'll rotate.the │ │ │ │ │ -00005080: 2063 6f70 7920 3930 2064 6567 7265 6573 copy 90 degrees │ │ │ │ │ -00005090: 2061 626f 7574 2074 6865 2078 2d61 7869 about the x-axi │ │ │ │ │ -000050a0: 7320 7769 7468 2074 6865 206f 7269 6769 s with the origi │ │ │ │ │ -000050b0: 6e20 6173 20e2 809c 6365 6e74 6572 206f n as ...center o │ │ │ │ │ -000050c0: 660a 726f 7461 7469 6f6e e280 9d20 736f f.rotation... so │ │ │ │ │ -000050d0: 2077 6520 6361 6e20 7365 6520 7468 6520 we can see the │ │ │ │ │ -000050e0: 6261 636b 2c20 7468 656e 2074 7261 6e73 back, then trans │ │ │ │ │ -000050f0: 6c61 7465 2069 7420 746f 2074 6865 2072 late it to the r │ │ │ │ │ -00005100: 6967 6874 2d2d 696e 2074 6865 0a70 6f73 ight--in the.pos │ │ │ │ │ -00005110: 6974 6976 6520 782d 6469 7265 6374 696f itive x-directio │ │ │ │ │ -00005120: 6e2d 2d73 6f20 6974 2064 6f65 736e 2774 n--so it doesn't │ │ │ │ │ -00005130: 2063 6f6c 6c69 6465 2077 6974 6820 7468 collide with th │ │ │ │ │ -00005140: 6520 6f72 6967 696e 616c 2e20 2054 6f20 e original. To │ │ │ │ │ -00005150: 6865 6c70 0a75 7320 7365 6520 7768 6174 help.us see what │ │ │ │ │ -00005160: 2773 2067 6f69 6e67 206f 6e2c 206d 616b 's going on, mak │ │ │ │ │ -00005170: 6520 7468 6520 6261 636b 2073 6964 6520 e the back side │ │ │ │ │ -00005180: 6772 6179 2e0a 2020 6465 6620 7069 6572 gray.. def pier │ │ │ │ │ -00005190: 6365 645f 7465 7472 6168 6564 726f 6e20 ced_tetrahedron │ │ │ │ │ -000051a0: 7b0a 2020 2020 6465 6620 7031 2028 302c {. def p1 (0, │ │ │ │ │ -000051b0: 302c 3129 2064 6566 2070 3220 2831 2c30 0,1) def p2 (1,0 │ │ │ │ │ -000051c0: 2c30 290a 2020 2020 6465 6620 7033 2028 ,0). def p3 ( │ │ │ │ │ -000051d0: 302c 312c 3029 2064 6566 2070 3420 282d 0,1,0) def p4 (- │ │ │ │ │ -000051e0: 2e33 2c2d 2e35 2c2d 2e38 290a 2020 2020 .3,-.5,-.8). │ │ │ │ │ -000051f0: 706f 6c79 676f 6e28 7031 2928 7032 2928 polygon(p1)(p2)( │ │ │ │ │ -00005200: 7033 2920 2020 2020 2020 2020 2020 2020 p3) │ │ │ │ │ -00005210: 2020 2020 2020 2020 2025 206f 7269 6769 % origi │ │ │ │ │ -00005220: 6e61 6c0a 2020 2020 706f 6c79 676f 6e28 nal. polygon( │ │ │ │ │ -00005230: 7031 2928 7034 2928 7032 2920 2020 2020 p1)(p4)(p2) │ │ │ │ │ -00005240: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -00005250: 2025 2062 6f74 746f 6d0a 2020 2020 706f % bottom. po │ │ │ │ │ -00005260: 6c79 676f 6e28 7031 2928 7033 2928 7034 lygon(p1)(p3)(p4 │ │ │ │ │ -00005270: 2920 2020 2020 2020 2020 2020 2020 2020 ) │ │ │ │ │ -00005280: 2020 2020 2020 2025 206c 6566 740a 2020 % left. │ │ │ │ │ -00005290: 2020 706f 6c79 676f 6e5b 6669 6c6c 636f polygon[fillco │ │ │ │ │ -000052a0: 6c6f 723d 6c69 6768 7467 7261 795d 2870 lor=lightgray](p │ │ │ │ │ -000052b0: 3329 2870 3229 2870 3429 2025 2072 6561 3)(p2)(p4) % rea │ │ │ │ │ -000052c0: 720a 2020 2020 6c69 6e65 5b6c 696e 6563 r. line[linec │ │ │ │ │ -000052d0: 6f6c 6f72 3d72 6564 5d28 2d31 2c2d 312c olor=red](-1,-1, │ │ │ │ │ -000052e0: 2d31 2928 322c 322c 3229 0a20 207d 0a20 -1)(2,2,2). }. │ │ │ │ │ -000052f0: 207b 7069 6572 6365 645f 7465 7472 6168 {pierced_tetrah │ │ │ │ │ -00005300: 6564 726f 6e7d 2020 2520 7465 7472 6168 edron} % tetrah │ │ │ │ │ -00005310: 6564 726f 6e20 696e 206f 7269 6769 6e61 edron in origina │ │ │ │ │ -00005320: 6c20 706f 7369 7469 6f6e 0a20 2070 7574 l position. put │ │ │ │ │ -00005330: 207b 2072 6f74 6174 6528 3930 2c20 2830 { rotate(90, (0 │ │ │ │ │ -00005340: 2c30 2c30 292c 205b 312c 302c 305d 2920 ,0,0), [1,0,0]) │ │ │ │ │ -00005350: 2520 636f 7079 2069 6e20 6e65 7720 706f % copy in new po │ │ │ │ │ -00005360: 7369 7469 6f6e 0a20 2020 2020 2020 2074 sition. t │ │ │ │ │ -00005370: 6865 6e20 7472 616e 736c 6174 6528 5b32 hen translate([2 │ │ │ │ │ -00005380: 2e35 2c30 2c30 5d29 207d 207b 7069 6572 .5,0,0]) } {pier │ │ │ │ │ -00005390: 6365 645f 7465 7472 6168 6564 726f 6e7d ced_tetrahedron} │ │ │ │ │ -000053a0: 0a48 6572 6520 7468 6520 656e 7469 7265 .Here the entire │ │ │ │ │ -000053b0: 2063 6f64 6520 6f66 2074 6865 2070 7265 code of the pre │ │ │ │ │ -000053c0: 7669 6f75 7320 6578 616d 706c 6520 6861 vious example ha │ │ │ │ │ -000053d0: 7320 6265 656e 2077 7261 7070 6564 2069 s been wrapped i │ │ │ │ │ -000053e0: 6e20 610a 6465 6669 6e69 7469 6f6e 2062 n a.definition b │ │ │ │ │ -000053f0: 7920 666f 726d 696e 6720 6120 e280 9c62 y forming a ...b │ │ │ │ │ -00005400: 6c6f 636b e280 9d20 7769 7468 2062 7261 lock... with bra │ │ │ │ │ -00005410: 6365 7320 2861 2073 696e 676c 6520 6974 ces (a single it │ │ │ │ │ -00005420: 656d 2077 6f75 6c64 206e 6f74 0a6e 6565 em would not.nee │ │ │ │ │ -00005430: 6420 7468 656d 292e 2020 5468 6520 706f d them). The po │ │ │ │ │ -00005440: 696e 7420 6465 6669 6e69 7469 6f6e 7320 int definitions │ │ │ │ │ -00005450: 6e65 7374 6564 2069 6e73 6964 6520 7468 nested inside th │ │ │ │ │ -00005460: 6520 6272 6163 6573 2061 7265 0ae2 809c e braces are.... │ │ │ │ │ -00005470: 6c65 7869 6361 6c6c 7920 7363 6f70 6564 lexically scoped │ │ │ │ │ -00005480: e280 9d2e 2020 5468 6569 7220 6d65 616e .... Their mean │ │ │ │ │ -00005490: 696e 6720 6578 7465 6e64 7320 6f6e 6c79 ing extends only │ │ │ │ │ -000054a0: 2074 6f20 7468 6520 656e 6420 6f66 2074 to the end of t │ │ │ │ │ -000054b0: 6865 2062 6c6f 636b 2e0a 5468 6520 6f75 he block..The ou │ │ │ │ │ -000054c0: 7465 7220 6465 6620 6973 2063 616c 6c65 ter def is calle │ │ │ │ │ -000054d0: 6420 6120 e280 9c64 7261 7761 626c 65e2 d a ...drawable. │ │ │ │ │ -000054e0: 809d 2064 6566 696e 6974 696f 6e20 6265 .. definition be │ │ │ │ │ -000054f0: 6361 7573 6520 6974 2064 6573 6372 6962 cause it describ │ │ │ │ │ -00005500: 6573 0a73 6f6d 6574 6869 6e67 2074 6861 es.something tha │ │ │ │ │ -00005510: 7420 6361 6e20 6265 2064 7261 776e 2e0a t can be drawn.. │ │ │ │ │ -00005520: 0a20 2020 4120 6472 6177 6162 6c65 2064 . A drawable d │ │ │ │ │ -00005530: 6566 696e 6974 696f 6e20 6279 2069 7473 efinition by its │ │ │ │ │ -00005540: 656c 6620 6361 7573 6573 206e 6f74 6869 elf causes nothi │ │ │ │ │ -00005550: 6e67 2074 6f20 6861 7070 656e 2075 6e74 ng to happen unt │ │ │ │ │ -00005560: 696c 2069 7473 0a6e 616d 6520 6973 2072 il its.name is r │ │ │ │ │ -00005570: 6566 6572 656e 6365 642e 2020 4472 6177 eferenced. Draw │ │ │ │ │ -00005580: 6162 6c65 2072 6566 6572 656e 6365 7320 able references │ │ │ │ │ -00005590: 6d75 7374 2062 6520 656e 636c 6f73 6564 must be enclosed │ │ │ │ │ -000055a0: 2069 6e20 6375 726c 790a 6272 6163 6573 in curly.braces │ │ │ │ │ -000055b0: 2c20 652e 672e 207b 666f 6f7d 2c20 7769 , e.g. {foo}, wi │ │ │ │ │ -000055c0: 7468 206e 6f20 696e 7465 7276 656e 696e th no intervenin │ │ │ │ │ -000055d0: 6720 7768 6974 6520 7370 6163 652e 2020 g white space. │ │ │ │ │ -000055e0: 496e 2074 6865 2063 6f64 6520 6162 6f76 In the code abov │ │ │ │ │ -000055f0: 652c 0a74 6865 2066 6972 7374 2072 6566 e,.the first ref │ │ │ │ │ -00005600: 6572 656e 6365 207b 7069 6572 6365 645f erence {pierced_ │ │ │ │ │ -00005610: 7465 7472 6168 6564 726f 6e7d 2069 7320 tetrahedron} is │ │ │ │ │ -00005620: 6120 706c 6169 6e20 6f6e 652e 2020 4974 a plain one. It │ │ │ │ │ -00005630: 7320 6566 6665 6374 2069 730a 6d65 7265 s effect is.mere │ │ │ │ │ -00005640: 6c79 2074 6f20 6475 706c 6963 6174 6520 ly to duplicate │ │ │ │ │ -00005650: 7468 6520 6561 726c 6965 7220 6472 6177 the earlier draw │ │ │ │ │ -00005660: 696e 672e 2020 416c 6d6f 7374 2061 6e79 ing. Almost any │ │ │ │ │ -00005670: 2073 6572 6965 7320 6f66 20e2 8098 736b series of ...sk │ │ │ │ │ -00005680: 6574 6368 e280 990a 636f 6d6d 616e 6473 etch....commands │ │ │ │ │ -00005690: 2073 7475 6666 206d 6179 2062 6520 7265 stuff may be re │ │ │ │ │ -000056a0: 706c 6163 6564 2077 6974 6820 6465 6620 placed with def │ │ │ │ │ -000056b0: 666f 6f20 7b20 7374 7566 6620 7d20 7b66 foo { stuff } {f │ │ │ │ │ -000056c0: 6f6f 7d20 7769 7468 6f75 740a 6368 616e oo} without.chan │ │ │ │ │ -000056d0: 6769 6e67 2069 7473 206d 6561 6e69 6e67 ging its meaning │ │ │ │ │ -000056e0: 2e0a 0a20 2020 5468 6520 7075 7420 636f ... The put co │ │ │ │ │ -000056f0: 6d6d 616e 6420 7375 7070 6c69 6573 2061 mmand supplies a │ │ │ │ │ -00005700: 2073 6563 6f6e 6420 7265 6665 7265 6e63 second referenc │ │ │ │ │ -00005710: 652c 2074 6869 7320 7469 6d65 2077 6974 e, this time wit │ │ │ │ │ -00005720: 6820 610a e280 9c74 7261 6e73 666f 726d h a....transform │ │ │ │ │ -00005730: e280 9d20 6170 706c 6965 6420 6669 7273 ... applied firs │ │ │ │ │ -00005740: 742e 2020 5468 6520 726f 7461 7465 2074 t. The rotate t │ │ │ │ │ -00005750: 7261 6e73 666f 726d 2074 7572 6e73 2074 ransform turns t │ │ │ │ │ -00005760: 6865 2074 6574 7261 6865 6472 6f6e 0a39 he tetrahedron.9 │ │ │ │ │ -00005770: 3020 6465 6772 6565 7320 6162 6f75 7420 0 degrees about │ │ │ │ │ -00005780: 7468 6520 6f72 6967 696e 2e20 2054 6865 the origin. The │ │ │ │ │ -00005790: 2061 7869 7320 6f66 2072 6f74 6174 696f axis of rotatio │ │ │ │ │ -000057a0: 6e20 6973 2074 6865 2076 6563 746f 720a n is the vector. │ │ │ │ │ -000057b0: 5b31 2c30 2c30 5d2e 2020 4279 2074 6865 [1,0,0]. By the │ │ │ │ │ -000057c0: 20e2 809c 7269 6768 7420 6861 6e64 2072 ...right hand r │ │ │ │ │ -000057d0: 756c 65e2 809d 2c20 7468 6973 2063 6175 ule..., this cau │ │ │ │ │ -000057e0: 7365 7320 7468 6520 746f 7020 6f66 2074 ses the top of t │ │ │ │ │ -000057f0: 6865 0a74 6574 7261 6865 6472 6f6e 2074 he.tetrahedron t │ │ │ │ │ -00005800: 6f20 726f 7461 7465 2074 6f77 6172 6420 o rotate toward │ │ │ │ │ -00005810: 7468 6520 7669 6577 6572 2061 6e64 2074 the viewer and t │ │ │ │ │ -00005820: 6865 2062 6f74 746f 6d20 6177 6179 2e20 he bottom away. │ │ │ │ │ -00005830: 2054 6865 2072 756c 650a 7265 6365 6976 The rule.receiv │ │ │ │ │ -00005840: 6573 2069 7473 206e 616d 6520 6672 6f6d es its name from │ │ │ │ │ -00005850: 2074 6865 2066 6f6c 6c6f 7769 6e67 2064 the following d │ │ │ │ │ -00005860: 6566 696e 6974 696f 6e3a 0a20 2020 2020 efinition:. │ │ │ │ │ -00005870: 2a52 6967 6874 2068 616e 6420 7275 6c65 *Right hand rule │ │ │ │ │ -00005880: 2e2a 2020 4966 2074 6865 2072 6967 6874 .* If the right │ │ │ │ │ -00005890: 2068 616e 6420 6973 2077 7261 7070 6564 hand is wrapped │ │ │ │ │ -000058a0: 2061 726f 756e 6420 616e 7920 6178 6973 around any axis │ │ │ │ │ -000058b0: 0a20 2020 2020 7769 7468 2074 6865 2074 . with the t │ │ │ │ │ -000058c0: 6875 6d62 2070 6f69 6e74 696e 6720 696e humb pointing in │ │ │ │ │ -000058d0: 2074 6865 2061 7869 7320 6469 7265 6374 the axis direct │ │ │ │ │ -000058e0: 696f 6e2c 2074 6865 6e20 7468 6520 6669 ion, then the fi │ │ │ │ │ -000058f0: 6e67 6572 730a 2020 2020 2063 7572 6c20 ngers. curl │ │ │ │ │ -00005900: 696e 2074 6865 2064 6972 6563 7469 6f6e in the direction │ │ │ │ │ -00005910: 206f 6620 706f 7369 7469 7665 2072 6f74 of positive rot │ │ │ │ │ -00005920: 6174 696f 6e20 6162 6f75 7420 7468 6174 ation about that │ │ │ │ │ -00005930: 2061 7869 732e 0a20 2020 5468 6520 7472 axis.. The tr │ │ │ │ │ -00005940: 616e 736c 6174 6520 7472 616e 7366 6f72 anslate transfor │ │ │ │ │ -00005950: 6d20 6d6f 7665 7320 7468 6520 7079 7261 m moves the pyra │ │ │ │ │ -00005960: 6d69 6420 6c61 7465 7261 6c6c 7920 746f mid laterally to │ │ │ │ │ -00005970: 2074 6865 2072 6967 6874 2062 790a 6164 the right by.ad │ │ │ │ │ -00005980: 6469 6e67 2074 6865 2076 6563 746f 7220 ding the vector │ │ │ │ │ -00005990: 5b32 2e35 2c30 2c30 5d20 746f 2065 6163 [2.5,0,0] to eac │ │ │ │ │ -000059a0: 6820 7665 7274 6578 2063 6f6f 7264 696e h vertex coordin │ │ │ │ │ -000059b0: 6174 652e 2020 5468 6520 7265 7375 6c74 ate. The result │ │ │ │ │ -000059c0: 2069 730a 7368 6f77 6e20 6865 7265 2e0a is.shown here.. │ │ │ │ │ -000059d0: 0a00 085b 696d 6167 6520 7372 633d 2265 ...[image src="e │ │ │ │ │ -000059e0: 7830 3530 2e70 6e67 2220 7465 7874 3d22 x050.png" text=" │ │ │ │ │ -000059f0: 496d 6167 6520 6578 3035 3020 6f6d 6974 Image ex050 omit │ │ │ │ │ -00005a00: 7465 6420 696e 2074 6578 7420 7665 7273 ted in text vers │ │ │ │ │ -00005a10: 696f 6e20 6f66 2074 6869 7320 646f 6375 ion of this docu │ │ │ │ │ -00005a20: 6d65 6e74 2e22 0008 5d0a 0a1f 0a46 696c ment."..]....Fil │ │ │ │ │ -00005a30: 653a 2073 6b65 7463 682e 696e 666f 2c20 e: sketch.info, │ │ │ │ │ -00005a40: 204e 6f64 653a 2052 6570 6561 7465 6420 Node: Repeated │ │ │ │ │ -00005a50: 6f62 6a65 6374 732c 2020 4e65 7874 3a20 objects, Next: │ │ │ │ │ -00005a60: 5377 6570 7420 6f62 6a65 6374 732c 2020 Swept objects, │ │ │ │ │ -00005a70: 5072 6576 3a20 4f62 6a65 6374 2074 7261 Prev: Object tra │ │ │ │ │ -00005a80: 6e73 666f 726d 732c 2020 5570 3a20 496e nsforms, Up: In │ │ │ │ │ -00005a90: 7472 6f64 7563 7469 6f6e 2062 7920 6578 troduction by ex │ │ │ │ │ -00005aa0: 616d 706c 650a 0a32 2e36 2052 6570 6561 ample..2.6 Repea │ │ │ │ │ -00005ab0: 7465 6420 6f62 6a65 6374 730a 3d3d 3d3d ted objects.==== │ │ │ │ │ -00005ac0: 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d ================ │ │ │ │ │ -00005ad0: 0a0a 546f 2064 7261 7720 7365 7665 6e20 ..To draw seven │ │ │ │ │ -00005ae0: 696e 7374 616e 6365 7320 6f66 2074 6865 instances of the │ │ │ │ │ -00005af0: 2074 6574 7261 6865 6472 6f6e 2c20 6561 tetrahedron, ea │ │ │ │ │ -00005b00: 6368 2064 6966 6665 7269 6e67 2066 726f ch differing fro │ │ │ │ │ -00005b10: 6d20 7468 6520 6c61 7374 0a62 7920 7468 m the last.by th │ │ │ │ │ -00005b20: 6520 7361 6d65 2074 7261 6e73 666f 726d e same transform │ │ │ │ │ -00005b30: 2c20 7265 706c 6163 6520 7468 6520 6c61 , replace the la │ │ │ │ │ -00005b40: 7374 2074 776f 2063 6f6d 6d61 6e64 7320 st two commands │ │ │ │ │ -00005b50: 6f66 2074 6865 2070 7265 7669 6f75 730a of the previous. │ │ │ │ │ -00005b60: 6578 616d 706c 6520 7769 7468 0a20 2072 example with. r │ │ │ │ │ -00005b70: 6570 6561 7420 7b20 372c 2072 6f74 6174 epeat { 7, rotat │ │ │ │ │ -00005b80: 6528 3135 2c20 2830 2c30 2c30 292c 205b e(15, (0,0,0), [ │ │ │ │ │ -00005b90: 312c 302c 305d 2920 2520 636f 7079 2069 1,0,0]) % copy i │ │ │ │ │ -00005ba0: 6e20 6e65 7720 706f 7369 7469 6f6e 0a20 n new position. │ │ │ │ │ -00005bb0: 2020 2020 2020 2020 2020 2020 2074 6865 the │ │ │ │ │ -00005bc0: 6e20 7472 616e 736c 6174 6528 5b32 2c30 n translate([2,0 │ │ │ │ │ -00005bd0: 2c30 5d29 207d 207b 7069 6572 6365 645f ,0]) } {pierced_ │ │ │ │ │ -00005be0: 7465 7472 6168 6564 726f 6e7d 0a41 6e64 tetrahedron}.And │ │ │ │ │ -00005bf0: 2074 6865 2072 6573 756c 742e 2e2e 0a0a the result..... │ │ │ │ │ -00005c00: 0008 5b69 6d61 6765 2073 7263 3d22 6578 ..[image src="ex │ │ │ │ │ -00005c10: 3036 302e 706e 6722 2074 6578 743d 2249 060.png" text="I │ │ │ │ │ -00005c20: 6d61 6765 2065 7830 3630 206f 6d69 7474 mage ex060 omitt │ │ │ │ │ -00005c30: 6564 2069 6e20 7465 7874 2076 6572 7369 ed in text versi │ │ │ │ │ -00005c40: 6f6e 206f 6620 7468 6973 2064 6f63 756d on of this docum │ │ │ │ │ -00005c50: 656e 742e 2200 085d 0a0a 1f0a 4669 6c65 ent."..]....File │ │ │ │ │ -00005c60: 3a20 736b 6574 6368 2e69 6e66 6f2c 2020 : sketch.info, │ │ │ │ │ -00005c70: 4e6f 6465 3a20 5377 6570 7420 6f62 6a65 Node: Swept obje │ │ │ │ │ -00005c80: 6374 732c 2020 5072 6576 3a20 5265 7065 cts, Prev: Repe │ │ │ │ │ -00005c90: 6174 6564 206f 626a 6563 7473 2c20 2055 ated objects, U │ │ │ │ │ -00005ca0: 703a 2049 6e74 726f 6475 6374 696f 6e20 p: Introduction │ │ │ │ │ -00005cb0: 6279 2065 7861 6d70 6c65 0a0a 322e 3720 by example..2.7 │ │ │ │ │ -00005cc0: 5377 6570 7420 6f62 6a65 6374 730a 3d3d Swept objects.== │ │ │ │ │ -00005cd0: 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d 3d0a ===============. │ │ │ │ │ -00005ce0: 0a4d 616e 7920 6661 6d69 6c69 6172 2073 .Many familiar s │ │ │ │ │ -00005cf0: 6861 7065 7320 6361 6e20 6265 2067 656e hapes can be gen │ │ │ │ │ -00005d00: 6572 6174 6564 2062 7920 7377 6565 7069 erated by sweepi │ │ │ │ │ -00005d10: 6e67 2073 696d 706c 6572 206f 6e65 7320 ng simpler ones │ │ │ │ │ -00005d20: 7468 726f 7567 680a 7370 6163 6520 616e through.space an │ │ │ │ │ -00005d30: 6420 636f 6e73 6964 6572 696e 6720 7468 d considering th │ │ │ │ │ -00005d40: 6520 7265 7375 6c74 696e 6720 7061 7468 e resulting path │ │ │ │ │ -00005d50: 2c20 7375 7266 6163 652c 206f 7220 766f , surface, or vo │ │ │ │ │ -00005d60: 6c75 6d65 2e20 20e2 8098 536b 6574 6368 lume. ...Sketch │ │ │ │ │ -00005d70: e280 990a 696d 706c 656d 656e 7473 2074 ....implements t │ │ │ │ │ -00005d80: 6869 7320 6964 6561 2069 6e20 7468 6520 his idea in the │ │ │ │ │ -00005d90: 7377 6565 7020 636f 6d6d 616e 642e 0a20 sweep command.. │ │ │ │ │ -00005da0: 2064 6566 206e 5f73 6567 7320 380a 2020 def n_segs 8. │ │ │ │ │ -00005db0: 7377 6565 7020 7b20 6e5f 7365 6773 2c20 sweep { n_segs, │ │ │ │ │ -00005dc0: 726f 7461 7465 2831 3830 202f 206e 5f73 rotate(180 / n_s │ │ │ │ │ -00005dd0: 6567 732c 2028 302c 302c 3029 2c20 5b30 egs, (0,0,0), [0 │ │ │ │ │ -00005de0: 2c30 2c31 5d29 207d 2028 312c 302c 3029 ,0,1]) } (1,0,0) │ │ │ │ │ -00005df0: 0a54 6869 7320 636f 6465 2073 7765 6570 .This code sweep │ │ │ │ │ -00005e00: 7320 7468 6520 706f 696e 7420 2831 2c30 s the point (1,0 │ │ │ │ │ -00005e10: 2c30 2920 6569 6768 7420 7469 6d65 7320 ,0) eight times │ │ │ │ │ -00005e20: 6279 2072 6f74 6174 696e 6720 6974 2031 by rotating it 1 │ │ │ │ │ -00005e30: 3830 2f38 203d 0a32 322e 3520 6465 6772 80/8 =.22.5 degr │ │ │ │ │ -00005e40: 6565 7320 6561 6368 2074 696d 6520 616e ees each time an │ │ │ │ │ -00005e50: 6420 636f 6e6e 6563 7469 6e67 2074 6865 d connecting the │ │ │ │ │ -00005e60: 2072 6573 756c 7469 6e67 2070 6f69 6e74 resulting point │ │ │ │ │ -00005e70: 7320 7769 7468 206c 696e 650a 7365 676d s with line.segm │ │ │ │ │ -00005e80: 656e 7473 2e20 2054 6865 2064 6566 2075 ents. The def u │ │ │ │ │ -00005e90: 7365 6420 6865 7265 2069 7320 6120 e280 sed here is a .. │ │ │ │ │ -00005ea0: 9c73 6361 6c61 72e2 809d 2064 6566 696e .scalar... defin │ │ │ │ │ -00005eb0: 6974 696f 6e2e 2020 5265 6665 7265 6e63 ition. Referenc │ │ │ │ │ -00005ec0: 6573 2074 6f0a 7363 616c 6172 7320 6861 es to.scalars ha │ │ │ │ │ -00005ed0: 7665 206e 6f20 656e 636c 6f73 696e 6720 ve no enclosing │ │ │ │ │ -00005ee0: 6272 6163 6b65 7473 2061 7420 616c 6c2e brackets at all. │ │ │ │ │ -00005ef0: 0a0a 2a20 4d65 6e75 3a0a 0a2a 2050 6f69 ..* Menu:..* Poi │ │ │ │ │ -00005f00: 6e74 2073 7765 6570 733a 3a20 2020 2020 nt sweeps:: │ │ │ │ │ -00005f10: 2020 2020 2020 2020 2020 2053 7765 7074 Swept │ │ │ │ │ -00005f20: 2070 6f69 6e74 7320 6d61 6b65 206c 696e points make lin │ │ │ │ │ -00005f30: 6573 2061 6e64 2070 6f6c 7967 6f6e 732e es and polygons. │ │ │ │ │ -00005f40: 0a2a 2050 6f6c 796c 696e 6520 7377 6565 .* Polyline swee │ │ │ │ │ -00005f50: 7073 3a3a 2020 2020 2020 2020 2020 2020 ps:: │ │ │ │ │ -00005f60: 2053 7765 7074 206c 696e 6573 206d 616b Swept lines mak │ │ │ │ │ -00005f70: 6520 7375 7266 6163 6573 2e0a 2a20 4e65 e surfaces..* Ne │ │ │ │ │ -00005f80: 7374 6564 2073 7765 6570 733a 3a20 2020 sted sweeps:: │ │ │ │ │ -00005f90: 2020 2020 2020 2020 2020 2020 5377 6570 Swep │ │ │ │ │ -00005fa0: 7420 7377 6565 7073 2061 7265 2075 7365 t sweeps are use │ │ │ │ │ -00005fb0: 6675 6c21 0a2a 2050 6f6c 7967 6f6e 2073 ful!.* Polygon s │ │ │ │ │ -00005fc0: 7765 6570 733a 3a20 2020 2020 2020 2020 weeps:: │ │ │ │ │ -00005fd0: 2020 2020 2053 7765 7074 2070 6f6c 7967 Swept polyg │ │ │ │ │ -00005fe0: 6f6e 7320 6d61 6b65 2073 6f6c 6964 732e ons make solids. │ │ │ │ │ -00005ff0: 2e2e 0a2a 2050 6f6c 796c 696e 6520 7377 ...* Polyline sw │ │ │ │ │ -00006000: 6565 7073 2077 6974 6820 636c 6f73 7572 eeps with closur │ │ │ │ │ -00006010: 653a 3a20 2061 6e64 2073 6f20 646f 2063 e:: and so do c │ │ │ │ │ -00006020: 6c6f 7365 6420 706f 6c79 6c69 6e65 2073 losed polyline s │ │ │ │ │ -00006030: 7765 6570 732e 0a2a 2041 6666 696e 6520 weeps..* Affine │ │ │ │ │ -00006040: 6172 6974 686d 6574 6963 3a3a 2020 2020 arithmetic:: │ │ │ │ │ -00006050: 2020 2020 2020 2053 6b65 7463 6820 7573 Sketch us │ │ │ │ │ -00006060: 6566 756c 206d 6174 6820 6578 7072 6573 eful math expres │ │ │ │ │ -00006070: 7369 6f6e 2e0a 2a20 4d6f 7265 2074 6f20 sion..* More to │ │ │ │ │ -00006080: 6c65 6172 6e3a 3a20 2020 2020 2020 2020 learn:: │ │ │ │ │ -00006090: 2020 2020 2020 4368 6563 6b20 6f75 7420 Check out │ │ │ │ │ -000060a0: 7468 6520 4d6f 6269 7573 2073 7472 6970 the Mobius strip │ │ │ │ │ -000060b0: 210a 0a1f 0a46 696c 653a 2073 6b65 7463 !....File: sketc │ │ │ │ │ -000060c0: 682e 696e 666f 2c20 204e 6f64 653a 2050 h.info, Node: P │ │ │ │ │ -000060d0: 6f69 6e74 2073 7765 6570 732c 2020 4e65 oint sweeps, Ne │ │ │ │ │ -000060e0: 7874 3a20 506f 6c79 6c69 6e65 2073 7765 xt: Polyline swe │ │ │ │ │ -000060f0: 6570 732c 2020 5072 6576 3a20 5377 6570 eps, Prev: Swep │ │ │ │ │ -00006100: 7420 6f62 6a65 6374 732c 2020 5570 3a20 t objects, Up: │ │ │ │ │ -00006110: 5377 6570 7420 6f62 6a65 6374 730a 0a32 Swept objects..2 │ │ │ │ │ -00006120: 2e37 2e31 2050 6f69 6e74 2073 7765 6570 .7.1 Point sweep │ │ │ │ │ -00006130: 730a 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d s.-------------- │ │ │ │ │ -00006140: 2d2d 2d2d 0a0a 5377 6565 7069 6e67 2061 ----..Sweeping a │ │ │ │ │ -00006150: 2070 6f69 6e74 206d 616b 6573 2061 206f point makes a o │ │ │ │ │ -00006160: 6e65 2d64 696d 656e 7369 6f6e 616c 2070 ne-dimensional p │ │ │ │ │ -00006170: 6174 682c 2077 6869 6368 2069 7320 6120 ath, which is a │ │ │ │ │ -00006180: 706f 6c79 6c69 6e65 2e0a 5369 6e63 6520 polyline..Since │ │ │ │ │ -00006190: 7765 2068 6176 6520 7377 6570 7420 7769 we have swept wi │ │ │ │ │ -000061a0: 7468 2061 2072 6f74 6174 696f 6e2c 2074 th a rotation, t │ │ │ │ │ -000061b0: 6865 2072 6573 756c 7420 6973 2061 2063 he result is a c │ │ │ │ │ -000061c0: 6972 6375 6c61 7220 6172 632e 2020 4865 ircular arc. He │ │ │ │ │ -000061d0: 7265 0a69 7320 7768 6174 2069 7420 6c6f re.is what it lo │ │ │ │ │ -000061e0: 6f6b 7320 6c69 6b65 2e0a 0a00 085b 696d oks like.....[im │ │ │ │ │ -000061f0: 6167 6520 7372 633d 2265 7830 3730 2e70 age src="ex070.p │ │ │ │ │ -00006200: 6e67 2220 7465 7874 3d22 496d 6167 6520 ng" text="Image │ │ │ │ │ -00006210: 6578 3037 3020 6f6d 6974 7465 6420 696e ex070 omitted in │ │ │ │ │ -00006220: 2074 6578 7420 7665 7273 696f 6e20 6f66 text version of │ │ │ │ │ -00006230: 2074 6869 7320 646f 6375 6d65 6e74 2e22 this document." │ │ │ │ │ -00006240: 0008 5d0a 0a20 2020 5468 6973 2069 7320 ..].. This is │ │ │ │ │ -00006250: 7468 6520 6669 7273 7420 6578 616d 706c the first exampl │ │ │ │ │ -00006260: 6520 7765 2068 6176 6520 7365 656e 206f e we have seen o │ │ │ │ │ -00006270: 6620 e280 9873 6b65 7463 68e2 8099 2061 f ...sketch... a │ │ │ │ │ -00006280: 7269 7468 6d65 7469 632e 2020 5468 650a rithmetic. The. │ │ │ │ │ -00006290: 6578 7072 6573 7369 6f6e 2031 3830 202f expression 180 / │ │ │ │ │ -000062a0: 206e 5f73 6567 7320 6361 7573 6573 2074 n_segs causes t │ │ │ │ │ -000062b0: 6865 2065 6967 6874 2072 6f74 6174 696f he eight rotatio │ │ │ │ │ -000062c0: 6e73 2074 6f20 6164 6420 746f 2031 3830 ns to add to 180 │ │ │ │ │ -000062d0: 2e20 2049 660a 796f 7527 7265 2070 6179 . If.you're pay │ │ │ │ │ -000062e0: 696e 6720 6174 7465 6e74 696f 6e2c 2079 ing attention, y │ │ │ │ │ -000062f0: 6f75 276c 6c20 6861 7665 2061 6c72 6561 ou'll have alrea │ │ │ │ │ -00006300: 6479 206e 6f74 6564 2074 6861 7420 7468 dy noted that th │ │ │ │ │ -00006310: 6572 6520 6172 6520 5f6e 696e 655f 0a70 ere are _nine_.p │ │ │ │ │ -00006320: 6f69 6e74 732c 2070 726f 6475 6369 6e67 oints, producing │ │ │ │ │ -00006330: 2065 6967 6874 206c 696e 6520 7365 676d eight line segm │ │ │ │ │ -00006340: 656e 7473 2e0a 0a20 2020 596f 7520 6361 ents... You ca │ │ │ │ │ -00006350: 6e20 6361 7573 6520 7468 6520 7377 6570 n cause the swep │ │ │ │ │ -00006360: 7420 706f 696e 7420 746f 2067 656e 6572 t point to gener │ │ │ │ │ -00006370: 6174 6520 6120 7369 6e67 6c65 2070 6f6c ate a single pol │ │ │ │ │ -00006380: 7967 6f6e 2072 6174 6865 720a 7468 616e ygon rather.than │ │ │ │ │ -00006390: 2061 2070 6f6c 796c 696e 6520 6279 2075 a polyline by u │ │ │ │ │ -000063a0: 7369 6e67 2074 6865 20e2 809c 636c 6f73 sing the ...clos │ │ │ │ │ -000063b0: 7572 6520 7461 67e2 809d 203c 3e20 6166 ure tag... <> af │ │ │ │ │ -000063c0: 7465 7220 7468 6520 6e75 6d62 6572 206f ter the number o │ │ │ │ │ -000063d0: 6620 7377 6570 740a 6f62 6a65 6374 732e f swept.objects. │ │ │ │ │ -000063e0: 2020 436f 6465 2061 6e64 2072 6573 756c Code and resul │ │ │ │ │ -000063f0: 7420 666f 6c6c 6f77 0a20 2064 6566 206e t follow. def n │ │ │ │ │ -00006400: 5f73 6567 7320 380a 2020 7377 6565 7020 _segs 8. sweep │ │ │ │ │ -00006410: 7b20 6e5f 7365 6773 3c3e 2c20 726f 7461 { n_segs<>, rota │ │ │ │ │ -00006420: 7465 2831 3830 202f 206e 5f73 6567 732c te(180 / n_segs, │ │ │ │ │ -00006430: 2028 302c 302c 3029 2c20 5b30 2c30 2c31 (0,0,0), [0,0,1 │ │ │ │ │ -00006440: 5d29 207d 2028 312c 302c 3029 0a00 085b ]) } (1,0,0)...[ │ │ │ │ │ -00006450: 696d 6167 6520 7372 633d 2265 7830 3830 image src="ex080 │ │ │ │ │ -00006460: 2e70 6e67 2220 7465 7874 3d22 496d 6167 .png" text="Imag │ │ │ │ │ -00006470: 6520 6578 3038 3020 6f6d 6974 7465 6420 e ex080 omitted │ │ │ │ │ -00006480: 696e 2074 6578 7420 7665 7273 696f 6e20 in text version │ │ │ │ │ -00006490: 6f66 2074 6869 7320 646f 6375 6d65 6e74 of this document │ │ │ │ │ -000064a0: 2e22 0008 5d0a 0a1f 0a46 696c 653a 2073 ."..]....File: s │ │ │ │ │ -000064b0: 6b65 7463 682e 696e 666f 2c20 204e 6f64 ketch.info, Nod │ │ │ │ │ -000064c0: 653a 2050 6f6c 796c 696e 6520 7377 6565 e: Polyline swee │ │ │ │ │ -000064d0: 7073 2c20 204e 6578 743a 204e 6573 7465 ps, Next: Neste │ │ │ │ │ -000064e0: 6420 7377 6565 7073 2c20 2050 7265 763a d sweeps, Prev: │ │ │ │ │ -000064f0: 2050 6f69 6e74 2073 7765 6570 732c 2020 Point sweeps, │ │ │ │ │ -00006500: 5570 3a20 5377 6570 7420 6f62 6a65 6374 Up: Swept object │ │ │ │ │ -00006510: 730a 0a32 2e37 2e32 2050 6f6c 796c 696e s..2.7.2 Polylin │ │ │ │ │ -00006520: 6520 7377 6565 7073 0a2d 2d2d 2d2d 2d2d e sweeps.------- │ │ │ │ │ -00006530: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 0a0a --------------.. │ │ │ │ │ -00006540: 5377 6565 7069 6e67 2061 2070 6f6c 796c Sweeping a polyl │ │ │ │ │ -00006550: 696e 6520 7072 6f64 7563 6573 2061 2073 ine produces a s │ │ │ │ │ -00006560: 7572 6661 6365 2063 6f6d 706f 7365 6420 urface composed │ │ │ │ │ -00006570: 6f66 206d 616e 7920 6661 6365 732e 2020 of many faces. │ │ │ │ │ -00006580: 5468 650a 756e 6272 6f6b 656e 2068 656c The.unbroken hel │ │ │ │ │ -00006590: 6978 2069 6e20 7468 6520 6578 616d 706c ix in the exampl │ │ │ │ │ -000065a0: 6520 2a6e 6f74 6520 4865 6c69 7820 7769 e *note Helix wi │ │ │ │ │ -000065b0: 7468 2063 756c 6c20 7365 7420 6661 6c73 th cull set fals │ │ │ │ │ -000065c0: 6520 7468 656e 0a74 7275 653a 3a20 6973 e then.true:: is │ │ │ │ │ -000065d0: 2070 726f 6475 6365 6420 6279 2074 6869 produced by thi │ │ │ │ │ -000065e0: 7320 636f 6465 2028 706c 7573 2061 2073 s code (plus a s │ │ │ │ │ -000065f0: 7572 726f 756e 6469 6e67 2070 7574 2072 urrounding put r │ │ │ │ │ -00006600: 6f74 6174 696f 6e20 746f 206d 616b 650a otation to make. │ │ │ │ │ -00006610: 616e 2069 6e74 6572 6573 7469 6e67 2076 an interesting v │ │ │ │ │ -00006620: 6965 773b 2074 6869 7320 6861 7320 6265 iew; this has be │ │ │ │ │ -00006630: 656e 206f 6d69 7474 6564 292e 0a20 2064 en omitted).. d │ │ │ │ │ -00006640: 6566 204b 205b 302c 302c 315d 0a20 2073 ef K [0,0,1]. s │ │ │ │ │ -00006650: 7765 6570 5b63 756c 6c3d 6661 6c73 655d weep[cull=false] │ │ │ │ │ -00006660: 207b 0a20 2020 2036 302c 200a 2020 2020 {. 60, . │ │ │ │ │ -00006670: 726f 7461 7465 2831 302c 2028 302c 302c rotate(10, (0,0, │ │ │ │ │ -00006680: 3029 2c20 5b4b 5d29 2074 6865 6e20 7472 0), [K]) then tr │ │ │ │ │ -00006690: 616e 736c 6174 6528 312f 3620 2a20 5b4b anslate(1/6 * [K │ │ │ │ │ -000066a0: 5d29 200a 2020 7d20 6c69 6e65 5b6c 696e ]) . } line[lin │ │ │ │ │ -000066b0: 6577 6964 7468 3d32 7074 5d28 2d31 2c30 ewidth=2pt](-1,0 │ │ │ │ │ -000066c0: 2928 312c 3029 0a41 6761 696e 2c20 3630 )(1,0).Again, 60 │ │ │ │ │ -000066d0: 2073 6567 6d65 6e74 7320 6f66 2074 6865 segments of the │ │ │ │ │ -000066e0: 2068 656c 6978 2061 7265 2070 726f 6475 helix are produ │ │ │ │ │ -000066f0: 6365 6420 6279 2063 6f6e 6e65 6374 696e ced by connectin │ │ │ │ │ -00006700: 6720 3631 2069 6e73 7461 6e63 6573 0a6f g 61 instances.o │ │ │ │ │ -00006710: 6620 7468 6520 7377 6570 7420 6c69 6e65 f the swept line │ │ │ │ │ -00006720: 2e20 204f 7074 696f 6e73 2061 7070 6c69 . Options appli │ │ │ │ │ -00006730: 6564 2074 6f20 7468 6520 7377 6565 702c ed to the sweep, │ │ │ │ │ -00006740: 2068 6572 6520 6375 6c6c 3d66 616c 7365 here cull=false │ │ │ │ │ -00006750: 2c20 6172 650a 7472 6561 7465 6420 6173 , are.treated as │ │ │ │ │ -00006760: 206f 7074 696f 6e73 2066 6f72 2074 6865 options for the │ │ │ │ │ -00006770: 2067 656e 6572 6174 6564 2070 6f6c 7967 generated polyg │ │ │ │ │ -00006780: 6f6e 206f 7220 706f 6c79 6c69 6e65 2e20 on or polyline. │ │ │ │ │ -00006790: 204f 7074 696f 6e73 206f 660a 7468 6520 Options of.the │ │ │ │ │ -000067a0: 7377 6570 7420 6c69 6e65 2069 7473 656c swept line itsel │ │ │ │ │ -000067b0: 662c 2068 6572 6520 6c69 6e65 7769 6474 f, here linewidt │ │ │ │ │ -000067c0: 683d 3270 742c 2061 7265 2069 676e 6f72 h=2pt, are ignor │ │ │ │ │ -000067d0: 6564 2c20 7468 6f75 6768 2077 6974 6820 ed, though with │ │ │ │ │ -000067e0: 610a 7761 726e 696e 672e 2020 5468 6973 a.warning. This │ │ │ │ │ -000067f0: 2064 6566 2069 7320 6120 e280 9c76 6563 def is a ...vec │ │ │ │ │ -00006800: 746f 72e2 809d 2064 6566 696e 6974 696f tor... definitio │ │ │ │ │ -00006810: 6e2c 2077 6869 6368 206d 7573 7420 6265 n, which must be │ │ │ │ │ -00006820: 2072 6566 6572 656e 6365 640a 7769 7468 referenced.with │ │ │ │ │ -00006830: 2073 7175 6172 6520 6272 6163 6b65 7473 square brackets │ │ │ │ │ -00006840: 2c20 652e 672e 205b 666f 6f5d 2e0a 0a1f , e.g. [foo].... │ │ │ │ │ -00006850: 0a46 696c 653a 2073 6b65 7463 682e 696e .File: sketch.in │ │ │ │ │ -00006860: 666f 2c20 204e 6f64 653a 204e 6573 7465 fo, Node: Neste │ │ │ │ │ -00006870: 6420 7377 6565 7073 2c20 204e 6578 743a d sweeps, Next: │ │ │ │ │ -00006880: 2050 6f6c 7967 6f6e 2073 7765 6570 732c Polygon sweeps, │ │ │ │ │ -00006890: 2020 5072 6576 3a20 506f 6c79 6c69 6e65 Prev: Polyline │ │ │ │ │ -000068a0: 2073 7765 6570 732c 2020 5570 3a20 5377 sweeps, Up: Sw │ │ │ │ │ -000068b0: 6570 7420 6f62 6a65 6374 730a 0a32 2e37 ept objects..2.7 │ │ │ │ │ -000068c0: 2e33 204e 6573 7465 6420 7377 6565 7073 .3 Nested sweeps │ │ │ │ │ -000068d0: 0a2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d .--------------- │ │ │ │ │ -000068e0: 2d2d 2d2d 0a0a 5768 656e 2074 6865 2063 ----..When the c │ │ │ │ │ -000068f0: 656e 7465 7220 706f 696e 7420 6f66 2072 enter point of r │ │ │ │ │ -00006900: 6f74 6174 696f 6e20 6973 206f 6d69 7474 otation is omitt │ │ │ │ │ -00006910: 6564 2c20 7468 6520 6f72 6967 696e 2069 ed, the origin i │ │ │ │ │ -00006920: 7320 6173 7375 6d65 642e 0a57 6865 6e20 s assumed..When │ │ │ │ │ -00006930: 6120 706f 696e 7420 6861 7320 6f6e 6c79 a point has only │ │ │ │ │ -00006940: 2074 776f 2063 6f6f 7264 696e 6174 6573 two coordinates │ │ │ │ │ -00006950: 2c20 7468 6579 2061 7265 2074 616b 656e , they are taken │ │ │ │ │ -00006960: 2061 7320 7820 616e 6420 792c 2077 6974 as x and y, wit │ │ │ │ │ -00006970: 680a 7a3d 3020 6173 7375 6d65 642e 2020 h.z=0 assumed. │ │ │ │ │ -00006980: 4120 746f 726f 6964 2069 7320 7468 6572 A toroid is ther │ │ │ │ │ -00006990: 6566 6f72 6520 6f62 7461 696e 6564 2077 efore obtained w │ │ │ │ │ -000069a0: 6974 6820 7468 6973 2063 6f64 652e 0a20 ith this code.. │ │ │ │ │ -000069b0: 2064 6566 206e 5f74 6f72 6f69 645f 7365 def n_toroid_se │ │ │ │ │ -000069c0: 6773 2032 3020 2020 6465 6620 6e5f 6369 gs 20 def n_ci │ │ │ │ │ -000069d0: 7263 6c65 5f73 6567 7320 3136 0a20 2064 rcle_segs 16. d │ │ │ │ │ -000069e0: 6566 2072 5f6d 696e 6f72 2031 2020 2020 ef r_minor 1 │ │ │ │ │ -000069f0: 2020 2020 2020 6465 6620 725f 6d61 6a6f def r_majo │ │ │ │ │ -00006a00: 7220 312e 350a 2020 7377 6565 7020 7b20 r 1.5. sweep { │ │ │ │ │ -00006a10: 6e5f 746f 726f 6964 5f73 6567 732c 2072 n_toroid_segs, r │ │ │ │ │ -00006a20: 6f74 6174 6528 3336 3020 2f20 6e5f 746f otate(360 / n_to │ │ │ │ │ -00006a30: 726f 6964 5f73 6567 732c 205b 302c 312c roid_segs, [0,1, │ │ │ │ │ -00006a40: 305d 2920 7d0a 2020 2020 7377 6565 7020 0]) }. sweep │ │ │ │ │ -00006a50: 7b20 6e5f 6369 7263 6c65 5f73 6567 732c { n_circle_segs, │ │ │ │ │ -00006a60: 2072 6f74 6174 6528 3336 3020 2f20 6e5f rotate(360 / n_ │ │ │ │ │ -00006a70: 6369 7263 6c65 5f73 6567 732c 2028 725f circle_segs, (r_ │ │ │ │ │ -00006a80: 6d61 6a6f 722c 302c 3029 2920 7d20 0a20 major,0,0)) } . │ │ │ │ │ -00006a90: 2020 2020 2028 725f 6d61 6a6f 7220 2b20 (r_major + │ │ │ │ │ -00006aa0: 725f 6d69 6e6f 722c 2030 290a 2020 2046 r_minor, 0). F │ │ │ │ │ -00006ab0: 6f72 2069 6e74 7569 7469 6f6e 2c20 7468 or intuition, th │ │ │ │ │ -00006ac0: 6520 6964 6561 206f 6620 7468 6520 636f e idea of the co │ │ │ │ │ -00006ad0: 6465 2069 7320 746f 2073 6b65 7463 6820 de is to sketch │ │ │ │ │ -00006ae0: 6120 6369 7263 6c65 2074 6f20 7468 650a a circle to the. │ │ │ │ │ -00006af0: 7269 6768 7420 6f66 2074 6865 206f 7269 right of the ori │ │ │ │ │ -00006b00: 6769 6e20 696e 2074 6865 2078 792d 706c gin in the xy-pl │ │ │ │ │ -00006b10: 616e 652c 2074 6865 6e20 726f 7461 7465 ane, then rotate │ │ │ │ │ -00006b20: 2074 6861 7420 6369 7263 6c65 2022 6f75 that circle "ou │ │ │ │ │ -00006b30: 7420 6f66 2074 6865 0a70 6c61 6e65 2220 t of the.plane" │ │ │ │ │ -00006b40: 6162 6f75 7420 7468 6520 792d 6178 6973 about the y-axis │ │ │ │ │ -00006b50: 2074 6f20 6d61 6b65 2074 6865 2066 696e to make the fin │ │ │ │ │ -00006b60: 616c 2066 6967 7572 652e 2020 5468 6973 al figure. This │ │ │ │ │ -00006b70: 2070 726f 6475 6365 7320 7468 650a 666f produces the.fo │ │ │ │ │ -00006b80: 6c6c 6f77 696e 672e 2020 2841 2076 6965 llowing. (A vie │ │ │ │ │ -00006b90: 7720 726f 7461 7469 6f6e 2061 6e64 2073 w rotation and s │ │ │ │ │ -00006ba0: 6f6d 6520 6178 6573 2068 6176 6520 6265 ome axes have be │ │ │ │ │ -00006bb0: 656e 2061 6464 6564 2e29 0a0a 0008 5b69 en added.)....[i │ │ │ │ │ -00006bc0: 6d61 6765 2073 7263 3d22 6578 3039 302e mage src="ex090. │ │ │ │ │ -00006bd0: 706e 6722 2074 6578 743d 2249 6d61 6765 png" text="Image │ │ │ │ │ -00006be0: 2065 7830 3930 206f 6d69 7474 6564 2069 ex090 omitted i │ │ │ │ │ -00006bf0: 6e20 7465 7874 2076 6572 7369 6f6e 206f n text version o │ │ │ │ │ -00006c00: 6620 7468 6973 2064 6f63 756d 656e 742e f this document. │ │ │ │ │ -00006c10: 2200 085d 0a0a 2020 2054 6869 7320 6578 "..].. This ex │ │ │ │ │ -00006c20: 616d 706c 6520 616c 736f 2073 686f 7773 ample also shows │ │ │ │ │ -00006c30: 2074 6861 7420 7468 6520 7377 6570 7420 that the swept │ │ │ │ │ -00006c40: 6f62 6a65 6374 206d 6179 2069 7473 656c object may itsel │ │ │ │ │ -00006c50: 6620 6265 2061 6e6f 7468 6572 0ae2 8098 f be another.... │ │ │ │ │ -00006c60: 7377 6565 70e2 8099 2e20 2049 6e20 6661 sweep.... In fa │ │ │ │ │ -00006c70: 6374 2c20 6974 206d 6179 2062 6520 5f61 ct, it may be _a │ │ │ │ │ -00006c80: 6e79 5f20 e280 9873 6b65 7463 68e2 8099 ny_ ...sketch... │ │ │ │ │ -00006c90: 2065 7870 7265 7373 696f 6e20 7468 6174 expression that │ │ │ │ │ -00006ca0: 2072 6573 756c 7473 2069 6e20 610a 6c69 results in a.li │ │ │ │ │ -00006cb0: 7374 206f 6620 6f6e 6520 6f72 206d 6f72 st of one or mor │ │ │ │ │ -00006cc0: 6520 706f 696e 7473 206f 722c 2061 6c74 e points or, alt │ │ │ │ │ -00006cd0: 6572 6e61 7465 6c79 2c20 6120 6c69 7374 ernately, a list │ │ │ │ │ -00006ce0: 206f 6620 6f6e 6520 6f72 206d 6f72 650a of one or more. │ │ │ │ │ -00006cf0: 706f 6c79 6c69 6e65 7320 616e 6420 706f polylines and po │ │ │ │ │ -00006d00: 6c79 676f 6e73 2e20 2054 6865 206c 6174 lygons. The lat │ │ │ │ │ -00006d10: 7465 7220 6b69 6e64 206f 6620 6c69 7374 ter kind of list │ │ │ │ │ -00006d20: 2063 616e 2062 6520 6372 6561 7465 6420 can be created │ │ │ │ │ -00006d30: 7769 7468 2061 0a7b 207d 2d65 6e63 6c6f with a.{ }-enclo │ │ │ │ │ -00006d40: 7365 6420 626c 6f63 6b2c 2070 6572 6861 sed block, perha │ │ │ │ │ -00006d50: 7073 2066 6f6c 6c6f 7769 6e67 2061 2070 ps following a p │ │ │ │ │ -00006d60: 7574 206f 7220 7265 7065 6174 2e0a 0a1f ut or repeat.... │ │ │ │ │ -00006d70: 0a46 696c 653a 2073 6b65 7463 682e 696e .File: sketch.in │ │ │ │ │ -00006d80: 666f 2c20 204e 6f64 653a 2050 6f6c 7967 fo, Node: Polyg │ │ │ │ │ -00006d90: 6f6e 2073 7765 6570 732c 2020 4e65 7874 on sweeps, Next │ │ │ │ │ -00006da0: 3a20 506f 6c79 6c69 6e65 2073 7765 6570 : Polyline sweep │ │ │ │ │ -00006db0: 7320 7769 7468 2063 6c6f 7375 7265 2c20 s with closure, │ │ │ │ │ -00006dc0: 2050 7265 763a 204e 6573 7465 6420 7377 Prev: Nested sw │ │ │ │ │ -00006dd0: 6565 7073 2c20 2055 703a 2053 7765 7074 eeps, Up: Swept │ │ │ │ │ -00006de0: 206f 626a 6563 7473 0a0a 322e 372e 3420 objects..2.7.4 │ │ │ │ │ -00006df0: 506f 6c79 676f 6e20 7377 6565 7073 0a2d Polygon sweeps.- │ │ │ │ │ -00006e00: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ -00006e10: 2d2d 2d0a 0a53 7765 6570 696e 6720 6120 ---..Sweeping a │ │ │ │ │ -00006e20: 706f 6c79 676f 6e20 6372 6561 7465 7320 polygon creates │ │ │ │ │ -00006e30: 6120 636c 6f73 6564 2073 7572 6661 6365 a closed surface │ │ │ │ │ -00006e40: 2077 6974 6820 706f 6c79 676f 6e73 2061 with polygons a │ │ │ │ │ -00006e50: 7420 7468 6520 656e 6473 2c0a 7768 6963 t the ends,.whic │ │ │ │ │ -00006e60: 6820 6172 6520 6a75 7374 2063 6f70 6965 h are just copie │ │ │ │ │ -00006e70: 7320 6f66 2074 6865 206f 7269 6769 6e61 s of the origina │ │ │ │ │ -00006e80: 6c2c 2061 7070 726f 7072 6961 7465 6c79 l, appropriately │ │ │ │ │ -00006e90: 2070 6f73 6974 696f 6e65 642e 2020 2a4e positioned. *N │ │ │ │ │ -00006ea0: 6f74 650a 536f 6c69 6420 636f 696c 2065 ote.Solid coil e │ │ │ │ │ -00006eb0: 7861 6d70 6c65 3a3a 2e20 204f 7074 696f xample::. Optio │ │ │ │ │ -00006ec0: 6e73 206f 6e20 7468 6520 7377 6570 7420 ns on the swept │ │ │ │ │ -00006ed0: 706f 6c79 676f 6e2c 2069 6620 7468 6579 polygon, if they │ │ │ │ │ -00006ee0: 2065 7869 7374 2c20 6172 650a 6170 706c exist, are.appl │ │ │ │ │ -00006ef0: 6965 6420 746f 2074 6865 2065 6e64 732e ied to the ends. │ │ │ │ │ -00006f00: 2020 4f74 6865 7277 6973 6520 7468 6520 Otherwise the │ │ │ │ │ -00006f10: 7377 6565 7020 6f70 7469 6f6e 7320 6172 sweep options ar │ │ │ │ │ -00006f20: 6520 7573 6564 2074 6872 6f75 6768 6f75 e used throughou │ │ │ │ │ -00006f30: 742e 0a0a 1f0a 4669 6c65 3a20 736b 6574 t.....File: sket │ │ │ │ │ -00006f40: 6368 2e69 6e66 6f2c 2020 4e6f 6465 3a20 ch.info, Node: │ │ │ │ │ -00006f50: 506f 6c79 6c69 6e65 2073 7765 6570 7320 Polyline sweeps │ │ │ │ │ -00006f60: 7769 7468 2063 6c6f 7375 7265 2c20 204e with closure, N │ │ │ │ │ -00006f70: 6578 743a 2041 6666 696e 6520 6172 6974 ext: Affine arit │ │ │ │ │ -00006f80: 686d 6574 6963 2c20 2050 7265 763a 2050 hmetic, Prev: P │ │ │ │ │ -00006f90: 6f6c 7967 6f6e 2073 7765 6570 732c 2020 olygon sweeps, │ │ │ │ │ -00006fa0: 5570 3a20 5377 6570 7420 6f62 6a65 6374 Up: Swept object │ │ │ │ │ -00006fb0: 730a 0a32 2e37 2e35 2050 6f6c 796c 696e s..2.7.5 Polylin │ │ │ │ │ -00006fc0: 6520 7377 6565 7073 2077 6974 6820 636c e sweeps with cl │ │ │ │ │ -00006fd0: 6f73 7572 650a 2d2d 2d2d 2d2d 2d2d 2d2d osure.---------- │ │ │ │ │ +000021c0: 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d ================ │ │ │ │ │ +000021d0: 0a0a 5468 6520 6772 6f75 7020 6874 7470 ..The group http │ │ │ │ │ +000021e0: 3a2f 2f67 726f 7570 732e 676f 6f67 6c65 ://groups.google │ │ │ │ │ +000021f0: 2e63 6f6d 2f67 726f 7570 2f73 6b65 7463 .com/group/sketc │ │ │ │ │ +00002200: 682d 7573 6572 7320 6973 2074 6865 2062 h-users is the b │ │ │ │ │ +00002210: 6573 7420 706c 6163 650a 746f 2072 6570 est place.to rep │ │ │ │ │ +00002220: 6f72 7420 6275 6773 2061 6e64 206d 616b ort bugs and mak │ │ │ │ │ +00002230: 6520 696d 7072 6f76 656d 656e 7473 2e20 e improvements. │ │ │ │ │ +00002240: 2041 2073 6563 6f6e 6420 6d65 7468 6f64 A second method │ │ │ │ │ +00002250: 2074 6861 7420 7769 6c6c 0a70 726f 6261 that will.proba │ │ │ │ │ +00002260: 626c 7920 7072 6f64 7563 6520 6120 736c bly produce a sl │ │ │ │ │ +00002270: 6f77 6572 2072 6573 706f 6e73 6520 6973 ower response is │ │ │ │ │ +00002280: 2065 6d61 696c 2074 6f20 736b 6574 6368 email to sketch │ │ │ │ │ +00002290: 4066 726f 6e74 6965 726e 6574 2e6e 6574 @frontiernet.net │ │ │ │ │ +000022a0: 2e0a 5765 2077 696c 6c20 7472 7920 746f ..We will try to │ │ │ │ │ +000022b0: 2072 6573 706f 6e64 2c20 6275 7420 6361 respond, but ca │ │ │ │ │ +000022c0: 6e27 7420 7072 6f6d 6973 652e 2020 496e n't promise. In │ │ │ │ │ +000022d0: 2061 6e79 2065 7665 6e74 2c20 646f 6e27 any event, don' │ │ │ │ │ +000022e0: 7420 6265 0a6f 6666 656e 6465 6420 6966 t be.offended if │ │ │ │ │ +000022f0: 2061 2072 6570 6c79 2069 7320 6e6f 7420 a reply is not │ │ │ │ │ +00002300: 666f 7274 6863 6f6d 696e 672e 2020 5765 forthcoming. We │ │ │ │ │ +00002310: 2772 6520 6a75 7374 2062 7573 7920 616e 're just busy an │ │ │ │ │ +00002320: 6420 7769 6c6c 2067 6574 2074 6f0a 796f d will get to.yo │ │ │ │ │ +00002330: 7572 2073 7567 6765 7374 696f 6e20 6576 ur suggestion ev │ │ │ │ │ +00002340: 656e 7475 616c 6c79 2e0a 0a20 2020 466f entually... Fo │ │ │ │ │ +00002350: 7220 6275 6773 2c20 6174 7461 6368 2061 r bugs, attach a │ │ │ │ │ +00002360: 20e2 8098 736b 6574 6368 e280 9920 696e ...sketch... in │ │ │ │ │ +00002370: 7075 7420 6669 6c65 2074 6861 7420 6361 put file that ca │ │ │ │ │ +00002380: 7573 6573 2074 6865 2062 6164 2062 6568 uses the bad beh │ │ │ │ │ +00002390: 6176 696f 722e 0a45 6d62 6564 2063 6f6d avior..Embed com │ │ │ │ │ +000023a0: 6d65 6e74 7320 7468 6174 2065 7870 6c61 ments that expla │ │ │ │ │ +000023b0: 696e 2077 6861 7420 746f 206c 6f6f 6b20 in what to look │ │ │ │ │ +000023c0: 666f 7220 696e 2074 6865 2062 6568 6176 for in the behav │ │ │ │ │ +000023d0: 696f 7220 6f66 20e2 8098 736b 6574 6368 ior of ...sketch │ │ │ │ │ +000023e0: e280 990a 6f72 2069 7473 206f 7574 7075 ....or its outpu │ │ │ │ │ +000023f0: 742e 0a0a 2020 2041 2072 6563 6f6d 6d65 t... A recomme │ │ │ │ │ +00002400: 6e64 6174 696f 6e20 666f 7220 696d 7072 ndation for impr │ │ │ │ │ +00002410: 6f76 656d 656e 7420 6672 6f6d 206f 6e65 ovement from one │ │ │ │ │ +00002420: 2075 6e6b 6e6f 776e 2070 6572 736f 6e20 unknown person │ │ │ │ │ +00002430: 636f 756e 7473 2061 730a 6f6e 6520 766f counts as.one vo │ │ │ │ │ +00002440: 7465 2e20 2057 6520 7573 6520 6f76 6572 te. We use over │ │ │ │ │ +00002450: 616c 6c20 766f 7465 2074 616c 6c69 6573 all vote tallies │ │ │ │ │ +00002460: 2074 6f20 6465 6369 6465 2077 6861 7420 to decide what │ │ │ │ │ +00002470: 746f 2064 6f20 6e65 7874 2061 730a 7265 to do next as.re │ │ │ │ │ +00002480: 736f 7572 6365 7320 7065 726d 6974 2e20 sources permit. │ │ │ │ │ +00002490: 2057 6520 7265 7365 7276 6520 7468 6520 We reserve the │ │ │ │ │ +000024a0: 7269 6768 7420 746f 2061 7373 6967 6e20 right to assign │ │ │ │ │ +000024b0: 616e 7920 6e75 6d62 6572 206f 6620 766f any number of vo │ │ │ │ │ +000024c0: 7465 7320 746f 0a73 7567 6765 7374 696f tes to.suggestio │ │ │ │ │ +000024d0: 6e73 2066 726f 6d20 7065 6f70 6c65 2077 ns from people w │ │ │ │ │ +000024e0: 686f 2068 6176 6520 6265 656e 2068 656c ho have been hel │ │ │ │ │ +000024f0: 7066 756c 2061 6e64 2073 7570 706f 7274 pful and support │ │ │ │ │ +00002500: 6976 6520 696e 2074 6865 0a70 6173 742e ive in the.past. │ │ │ │ │ +00002510: 0a0a 1f0a 4669 6c65 3a20 736b 6574 6368 ....File: sketch │ │ │ │ │ +00002520: 2e69 6e66 6f2c 2020 4e6f 6465 3a20 436f .info, Node: Co │ │ │ │ │ +00002530: 6e74 7269 6275 7469 6f6e 732c 2020 5072 ntributions, Pr │ │ │ │ │ +00002540: 6576 3a20 5265 706f 7274 696e 6720 6275 ev: Reporting bu │ │ │ │ │ +00002550: 6773 2c20 2055 703a 2041 626f 7574 2073 gs, Up: About s │ │ │ │ │ +00002560: 6b65 7463 680a 0a31 2e32 2043 6f6e 7472 ketch..1.2 Contr │ │ │ │ │ +00002570: 6962 7574 696f 6e73 0a3d 3d3d 3d3d 3d3d ibutions.======= │ │ │ │ │ +00002580: 3d3d 3d3d 3d3d 3d3d 3d3d 0a0a 4966 2079 ==========..If y │ │ │ │ │ +00002590: 6f75 2069 6e74 656e 6420 746f 2069 6d70 ou intend to imp │ │ │ │ │ +000025a0: 6c65 6d65 6e74 2061 6e20 656e 6861 6e63 lement an enhanc │ │ │ │ │ +000025b0: 656d 656e 7420 6f66 2079 6f75 7220 6f77 ement of your ow │ │ │ │ │ +000025c0: 6e2c 2074 6861 7427 7320 7465 7272 6966 n, that's terrif │ │ │ │ │ +000025d0: 6963 210a 436f 6e73 6964 6572 2063 6f6c ic!.Consider col │ │ │ │ │ +000025e0: 6c61 626f 7261 7469 6e67 2077 6974 6820 laborating with │ │ │ │ │ +000025f0: 7573 2066 6972 7374 2074 6f20 7365 6520 us first to see │ │ │ │ │ +00002600: 6966 2077 6527 7265 2061 6c72 6561 6479 if we're already │ │ │ │ │ +00002610: 2077 6f72 6b69 6e67 206f 6e0a 796f 7572 working on.your │ │ │ │ │ +00002620: 2069 6465 6120 6f72 2069 6620 7765 2063 idea or if we c │ │ │ │ │ +00002630: 616e 2075 7365 2079 6f75 7220 776f 726b an use your work │ │ │ │ │ +00002640: 2069 6e20 7468 6520 6f66 6669 6369 616c in the official │ │ │ │ │ +00002650: 2072 656c 6561 7365 2e0a 0a00 085b 696d release.....[im │ │ │ │ │ +00002660: 6167 6520 7372 633d 2265 7830 3030 2e70 age src="ex000.p │ │ │ │ │ +00002670: 6e67 2220 7465 7874 3d22 496d 6167 6520 ng" text="Image │ │ │ │ │ +00002680: 6578 3030 3020 6f6d 6974 7465 6420 696e ex000 omitted in │ │ │ │ │ +00002690: 2074 6578 7420 7665 7273 696f 6e20 6f66 text version of │ │ │ │ │ +000026a0: 2074 6869 7320 646f 6375 6d65 6e74 2e22 this document." │ │ │ │ │ +000026b0: 0008 5d0a 0a1f 0a46 696c 653a 2073 6b65 ..]....File: ske │ │ │ │ │ +000026c0: 7463 682e 696e 666f 2c20 204e 6f64 653a tch.info, Node: │ │ │ │ │ +000026d0: 2049 6e74 726f 6475 6374 696f 6e20 6279 Introduction by │ │ │ │ │ +000026e0: 2065 7861 6d70 6c65 2c20 204e 6578 743a example, Next: │ │ │ │ │ +000026f0: 2049 6e70 7574 206c 616e 6775 6167 652c Input language, │ │ │ │ │ +00002700: 2020 5072 6576 3a20 4162 6f75 7420 736b Prev: About sk │ │ │ │ │ +00002710: 6574 6368 2c20 2055 703a 2054 6f70 0a0a etch, Up: Top.. │ │ │ │ │ +00002720: 3220 496e 7472 6f64 7563 7469 6f6e 2062 2 Introduction b │ │ │ │ │ +00002730: 7920 6578 616d 706c 650a 2a2a 2a2a 2a2a y example.****** │ │ │ │ │ +00002740: 2a2a 2a2a 2a2a 2a2a 2a2a 2a2a 2a2a 2a2a **************** │ │ │ │ │ +00002750: 2a2a 2a0a 0a54 6865 20e2 8098 736b 6574 ***..The ...sket │ │ │ │ │ +00002760: 6368 e280 9920 696e 7075 7420 6c61 6e67 ch... input lang │ │ │ │ │ +00002770: 7561 6765 2077 696c 6c20 7365 656d 2066 uage will seem f │ │ │ │ │ +00002780: 616d 696c 6961 7220 746f 2075 7365 7273 amiliar to users │ │ │ │ │ +00002790: 206f 6620 7468 650a e280 9850 5354 7269 of the....PSTri │ │ │ │ │ +000027a0: 636b 73e2 8099 2070 6163 6b61 6765 2066 cks... package f │ │ │ │ │ +000027b0: 6f72 204c 6154 6558 2e20 2054 6865 2066 or LaTeX. The f │ │ │ │ │ +000027c0: 6f6c 6c6f 7769 6e67 2070 726f 6772 616d ollowing program │ │ │ │ │ +000027d0: 2064 7261 7773 2061 2074 7269 616e 6775 draws a triangu │ │ │ │ │ +000027e0: 6c61 720a 706f 6c79 676f 6e20 7069 6572 lar.polygon pier │ │ │ │ │ +000027f0: 6365 6420 6279 2061 206c 696e 652e 0a20 ced by a line.. │ │ │ │ │ +00002800: 2070 6f6c 7967 6f6e 2830 2c30 2c31 2928 polygon(0,0,1)( │ │ │ │ │ +00002810: 312c 302c 3029 2830 2c31 2c30 290a 2020 1,0,0)(0,1,0). │ │ │ │ │ +00002820: 6c69 6e65 282d 312c 2d31 2c2d 3129 2832 line(-1,-1,-1)(2 │ │ │ │ │ +00002830: 2c32 2c32 290a 5468 6520 636f 6f72 6469 ,2,2).The coordi │ │ │ │ │ +00002840: 6e61 7465 2073 7973 7465 6d20 6973 2061 nate system is a │ │ │ │ │ +00002850: 2073 7461 6e64 6172 6420 7269 6768 742d standard right- │ │ │ │ │ +00002860: 6861 6e64 6564 2043 6172 7465 7369 616e handed Cartesian │ │ │ │ │ +00002870: 206f 6e65 2e0a 0a00 085b 696d 6167 6520 one.....[image │ │ │ │ │ +00002880: 7372 633d 2265 7830 3130 2e70 6e67 2220 src="ex010.png" │ │ │ │ │ +00002890: 7465 7874 3d22 496d 6167 6520 6578 3031 text="Image ex01 │ │ │ │ │ +000028a0: 3020 6f6d 6974 7465 6420 696e 2074 6578 0 omitted in tex │ │ │ │ │ +000028b0: 7420 7665 7273 696f 6e20 6f66 2074 6869 t version of thi │ │ │ │ │ +000028c0: 7320 646f 6375 6d65 6e74 2e22 0008 5d0a s document."..]. │ │ │ │ │ +000028d0: 0a2a 204d 656e 753a 0a0a 2a20 4865 6c6c .* Menu:..* Hell │ │ │ │ │ +000028e0: 6f20 776f 726c 643a 3a20 2020 2020 2020 o world:: │ │ │ │ │ +000028f0: 2020 2020 2020 2020 2020 5369 6d70 6c65 Simple │ │ │ │ │ +00002900: 7374 2070 6f73 7369 626c 6520 e280 9873 st possible ...s │ │ │ │ │ +00002910: 6b65 7463 68e2 8099 2070 726f 6772 616d ketch... program │ │ │ │ │ +00002920: 2e0a 2a20 4472 6177 696e 6720 6f70 7469 ..* Drawing opti │ │ │ │ │ +00002930: 6f6e 733a 3a20 2020 2020 2020 2020 2020 ons:: │ │ │ │ │ +00002940: 2020 436f 6e74 726f 6c6c 696e 6720 6f62 Controlling ob │ │ │ │ │ +00002950: 6a65 6374 2061 7070 6561 7261 6e63 652e ject appearance. │ │ │ │ │ +00002960: 0a2a 2044 7261 7769 6e67 2061 2073 6f6c .* Drawing a sol │ │ │ │ │ +00002970: 6964 3a3a 2020 2020 2020 2020 2020 2020 id:: │ │ │ │ │ +00002980: 2044 7261 7769 6e67 2061 6e20 6f62 6a65 Drawing an obje │ │ │ │ │ +00002990: 6374 2077 6974 6820 3364 2061 7070 6561 ct with 3d appea │ │ │ │ │ +000029a0: 7261 6e63 652e 0a2a 2053 7065 6369 616c rance..* Special │ │ │ │ │ +000029b0: 206f 626a 6563 7473 3a3a 2020 2020 2020 objects:: │ │ │ │ │ +000029c0: 2020 2020 2020 204c 6179 696e 6720 5465 Laying Te │ │ │ │ │ +000029d0: 5820 6f76 6572 2c20 696e 2c20 6f72 2075 X over, in, or u │ │ │ │ │ +000029e0: 6e64 6572 2064 7261 7769 6e67 732e 0a2a nder drawings..* │ │ │ │ │ +000029f0: 204f 626a 6563 7420 7472 616e 7366 6f72 Object transfor │ │ │ │ │ +00002a00: 6d73 3a3a 2020 2020 2020 2020 2020 2052 ms:: R │ │ │ │ │ +00002a10: 6f74 6174 652c 2074 7261 6e73 6c61 7465 otate, translate │ │ │ │ │ +00002a20: 2c20 7363 616c 652c 2061 6e64 206f 7468 , scale, and oth │ │ │ │ │ +00002a30: 6572 732e 0a2a 2052 6570 6561 7465 6420 ers..* Repeated │ │ │ │ │ +00002a40: 6f62 6a65 6374 733a 3a20 2020 2020 2020 objects:: │ │ │ │ │ +00002a50: 2020 2020 204d 616b 696e 6720 7472 616e Making tran │ │ │ │ │ +00002a60: 7366 6f72 6d65 6420 636f 7069 6573 2e0a sformed copies.. │ │ │ │ │ +00002a70: 2a20 5377 6570 7420 6f62 6a65 6374 733a * Swept objects: │ │ │ │ │ +00002a80: 3a20 2020 2020 2020 2020 2020 2020 2020 : │ │ │ │ │ +00002a90: 5377 6565 7069 6e67 206f 626a 6563 7473 Sweeping objects │ │ │ │ │ +00002aa0: 2069 6e20 7370 6163 6520 746f 206d 616b in space to mak │ │ │ │ │ +00002ab0: 6520 6e65 7720 7368 6170 6573 2e0a 0a1f e new shapes.... │ │ │ │ │ +00002ac0: 0a46 696c 653a 2073 6b65 7463 682e 696e .File: sketch.in │ │ │ │ │ +00002ad0: 666f 2c20 204e 6f64 653a 2048 656c 6c6f fo, Node: Hello │ │ │ │ │ +00002ae0: 2077 6f72 6c64 2c20 204e 6578 743a 2044 world, Next: D │ │ │ │ │ +00002af0: 7261 7769 6e67 206f 7074 696f 6e73 2c20 rawing options, │ │ │ │ │ +00002b00: 2050 7265 763a 2049 6e74 726f 6475 6374 Prev: Introduct │ │ │ │ │ +00002b10: 696f 6e20 6279 2065 7861 6d70 6c65 2c20 ion by example, │ │ │ │ │ +00002b20: 2055 703a 2049 6e74 726f 6475 6374 696f Up: Introductio │ │ │ │ │ +00002b30: 6e20 6279 2065 7861 6d70 6c65 0a0a 322e n by example..2. │ │ │ │ │ +00002b40: 3120 4865 6c6c 6f20 776f 726c 640a 3d3d 1 Hello world.== │ │ │ │ │ +00002b50: 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d 3d0a 0a54 =============..T │ │ │ │ │ +00002b60: 6865 20e2 8098 736b 6574 6368 e280 9920 he ...sketch... │ │ │ │ │ +00002b70: 7072 6f67 7261 6d20 6162 6f76 6520 6973 program above is │ │ │ │ │ +00002b80: 206e 6561 726c 7920 7468 6520 7369 6d70 nearly the simp │ │ │ │ │ +00002b90: 6c65 7374 206f 6e65 2070 6f73 7369 626c lest one possibl │ │ │ │ │ +00002ba0: 652c 2074 6865 0a65 7175 6976 616c 656e e, the.equivalen │ │ │ │ │ +00002bb0: 7420 6f66 2061 2022 6865 6c6c 6f20 776f t of a "hello wo │ │ │ │ │ +00002bc0: 726c 6422 2070 726f 6772 616d 2079 6f75 rld" program you │ │ │ │ │ +00002bd0: 206d 6967 6874 2066 696e 6420 6174 2074 might find at t │ │ │ │ │ +00002be0: 6865 2073 7461 7274 206f 6620 610a 7072 he start of a.pr │ │ │ │ │ +00002bf0: 6f67 7261 6d6d 696e 6720 6c61 6e67 7561 ogramming langua │ │ │ │ │ +00002c00: 6765 2074 6578 742e 2020 4966 2069 7420 ge text. If it │ │ │ │ │ +00002c10: 6973 2073 6176 6564 2069 6e20 7468 6520 is saved in the │ │ │ │ │ +00002c20: 6669 6c65 20e2 8098 7369 6d70 6c65 2e73 file ...simple.s │ │ │ │ │ +00002c30: 6be2 8099 2c20 7468 656e 0a74 6865 2063 k..., then.the c │ │ │ │ │ +00002c40: 6f6d 6d61 6e64 0a20 2073 6b65 7463 6820 ommand. sketch │ │ │ │ │ +00002c50: 7369 6d70 6c65 2e73 6b20 2d6f 2073 696d simple.sk -o sim │ │ │ │ │ +00002c60: 706c 652e 7465 780a 6372 6561 7465 7320 ple.tex.creates │ │ │ │ │ +00002c70: 6120 6669 6c65 20e2 8098 7369 6d70 6c65 a file ...simple │ │ │ │ │ +00002c80: 2e74 6578 e280 9920 636f 6e74 6169 6e69 .tex... containi │ │ │ │ │ +00002c90: 6e67 20e2 8098 5053 5472 6963 6b73 e280 ng ...PSTricks.. │ │ │ │ │ +00002ca0: 9920 636f 6d6d 616e 6473 2074 6f20 6472 . commands to dr │ │ │ │ │ +00002cb0: 6177 2074 6865 7365 0a6f 626a 6563 7473 aw these.objects │ │ │ │ │ +00002cc0: 206f 6e20 7061 7065 722e 2020 5468 6520 on paper. The │ │ │ │ │ +00002cd0: 636f 6e74 656e 7473 206f 6620 e280 9873 contents of ...s │ │ │ │ │ +00002ce0: 696d 706c 652e 7465 78e2 8099 206c 6f6f imple.tex... loo │ │ │ │ │ +00002cf0: 6b20 6c69 6b65 2074 6869 732e 0a20 205c k like this.. \ │ │ │ │ │ +00002d00: 6265 6769 6e7b 7073 7069 6374 7572 657d begin{pspicture} │ │ │ │ │ +00002d10: 282d 312c 2d31 2928 322c 3229 0a20 205c (-1,-1)(2,2). \ │ │ │ │ │ +00002d20: 7073 7456 6572 627b 3120 7365 746c 696e pstVerb{1 setlin │ │ │ │ │ +00002d30: 656a 6f69 6e7d 0a20 205c 7073 6c69 6e65 ejoin}. \psline │ │ │ │ │ +00002d40: 282d 312c 2d31 2928 2e33 3333 2c2e 3333 (-1,-1)(.333,.33 │ │ │ │ │ +00002d50: 3329 0a20 205c 7073 706f 6c79 676f 6e5b 3). \pspolygon[ │ │ │ │ │ +00002d60: 6669 6c6c 7374 796c 653d 736f 6c69 642c fillstyle=solid, │ │ │ │ │ +00002d70: 6669 6c6c 636f 6c6f 723d 7768 6974 655d fillcolor=white] │ │ │ │ │ +00002d80: 2830 2c30 2928 312c 3029 2830 2c31 290a (0,0)(1,0)(0,1). │ │ │ │ │ +00002d90: 2020 5c70 736c 696e 6528 2e33 3333 2c2e \psline(.333,. │ │ │ │ │ +00002da0: 3333 3329 2832 2c32 290a 2020 5c65 6e64 333)(2,2). \end │ │ │ │ │ +00002db0: 7b70 7370 6963 7475 7265 7d0a 5468 6520 {pspicture}.The │ │ │ │ │ +00002dc0: 6869 6464 656e 2073 7572 6661 6365 2061 hidden surface a │ │ │ │ │ +00002dd0: 6c67 6f72 6974 686d 206f 6620 e280 9873 lgorithm of ...s │ │ │ │ │ +00002de0: 6b65 7463 68e2 8099 2068 6173 2073 706c ketch... has spl │ │ │ │ │ +00002df0: 6974 2074 6865 206c 696e 6520 696e 746f it the line into │ │ │ │ │ +00002e00: 2074 776f 0a70 6965 6365 7320 616e 6420 two.pieces and │ │ │ │ │ +00002e10: 6f72 6465 7265 6420 7468 6520 7468 7265 ordered the thre │ │ │ │ │ +00002e20: 6520 7265 7375 6c74 696e 6720 6f62 6a65 e resulting obje │ │ │ │ │ +00002e30: 6374 7320 736f 2074 6861 7420 7468 6520 cts so that the │ │ │ │ │ +00002e40: 636f 7272 6563 740a 706f 7274 696f 6e20 correct.portion │ │ │ │ │ +00002e50: 6f66 2074 6865 206c 696e 6520 6973 2068 of the line is h │ │ │ │ │ +00002e60: 6964 6465 6e2e 0a0a 2020 2049 6620 796f idden... If yo │ │ │ │ │ +00002e70: 7527 7665 206e 6f74 6963 6564 2074 6861 u've noticed tha │ │ │ │ │ +00002e80: 7420 7468 6520 7072 6f6a 6563 7469 6f6e t the projection │ │ │ │ │ +00002e90: 2077 6520 6172 6520 7573 696e 6720 7365 we are using se │ │ │ │ │ +00002ea0: 656d 7320 6571 7569 7661 6c65 6e74 0a74 ems equivalent.t │ │ │ │ │ +00002eb0: 6f20 6572 6173 696e 6720 7468 6520 7a2d o erasing the z- │ │ │ │ │ +00002ec0: 636f 6f72 6469 6e61 7465 206f 6620 7468 coordinate of th │ │ │ │ │ +00002ed0: 6520 7468 7265 652d 6469 6d65 6e73 696f e three-dimensio │ │ │ │ │ +00002ee0: 6e61 6c20 696e 7075 7420 706f 696e 7473 nal input points │ │ │ │ │ +00002ef0: 2c20 7061 740a 796f 7572 7365 6c66 206f , pat.yourself o │ │ │ │ │ +00002f00: 6e20 7468 6520 6261 636b 2e20 2059 6f75 n the back. You │ │ │ │ │ +00002f10: 2061 7265 2063 6f72 7265 6374 2e20 2054 are correct. T │ │ │ │ │ +00002f20: 6869 7320 6973 2063 616c 6c65 6420 6120 his is called a │ │ │ │ │ +00002f30: e280 9c70 6172 616c 6c65 6c0a 7072 6f6a ...parallel.proj │ │ │ │ │ +00002f40: 6563 7469 6f6e e280 9d2e 2020 5468 6520 ection.... The │ │ │ │ │ +00002f50: 7a2d 636f 6f72 6469 6e61 7465 2061 7869 z-coordinate axi │ │ │ │ │ +00002f60: 7320 6973 2070 6f69 6e74 696e 6720 7374 s is pointing st │ │ │ │ │ +00002f70: 7261 6967 6874 206f 7574 206f 6620 7468 raight out of th │ │ │ │ │ +00002f80: 650a 7061 7065 7220 6174 2075 732c 2077 e.paper at us, w │ │ │ │ │ +00002f90: 6869 6c65 2074 6865 2078 2d20 616e 6420 hile the x- and │ │ │ │ │ +00002fa0: 792d 6178 6573 2070 6f69 6e74 2074 6f20 y-axes point to │ │ │ │ │ +00002fb0: 7468 6520 7269 6768 7420 616e 6420 7570 the right and up │ │ │ │ │ +00002fc0: 2061 7320 7573 7561 6c2e 0a0a 2020 2054 as usual... T │ │ │ │ │ +00002fd0: 6865 2072 6573 756c 7469 6e67 2070 6963 he resulting pic │ │ │ │ │ +00002fe0: 7475 7265 2066 696c 6520 6361 6e20 6265 ture file can be │ │ │ │ │ +00002ff0: 2069 6e63 6c75 6465 6420 696e 2061 204c included in a L │ │ │ │ │ +00003000: 6154 6558 2064 6f63 756d 656e 7420 7769 aTeX document wi │ │ │ │ │ +00003010: 7468 0a5c 696e 7075 747b 7369 6d70 6c65 th.\input{simple │ │ │ │ │ +00003020: 7d2e 2020 416c 7465 726e 6174 656c 792c }. Alternately, │ │ │ │ │ +00003030: 2061 6464 696e 6720 7468 6520 636f 6d6d adding the comm │ │ │ │ │ +00003040: 616e 6420 6c69 6e65 206f 7074 696f 6e20 and line option │ │ │ │ │ +00003050: e280 982d 54e2 8099 2831 290a 6361 7573 ...-T...(1).caus │ │ │ │ │ +00003060: 6573 2074 6865 20e2 8098 7073 7069 6374 es the ...pspict │ │ │ │ │ +00003070: 7572 65e2 8099 2074 6f20 6265 2077 7261 ure... to be wra │ │ │ │ │ +00003080: 7070 6564 2069 6e20 6120 7368 6f72 7420 pped in a short │ │ │ │ │ +00003090: 6275 7420 636f 6d70 6c65 7465 2064 6f63 but complete doc │ │ │ │ │ +000030a0: 756d 656e 742c 0a72 6561 6479 2074 6f20 ument,.ready to │ │ │ │ │ +000030b0: 7275 6e20 7468 6f75 6768 204c 6154 6558 run though LaTeX │ │ │ │ │ +000030c0: 2e20 2049 6e20 6120 6669 6e69 7368 6564 . In a finished │ │ │ │ │ +000030d0: 2c20 7479 7065 7365 7420 646f 6375 6d65 , typeset docume │ │ │ │ │ +000030e0: 6e74 2c20 7468 6520 7069 6374 7572 650a nt, the picture. │ │ │ │ │ +000030f0: 6c6f 6f6b 7320 6c69 6b65 2074 6869 732e looks like this. │ │ │ │ │ +00003100: 2020 2854 6865 2061 7865 7320 6861 7665 (The axes have │ │ │ │ │ +00003110: 2062 6565 6e20 6164 6465 6420 696e 206c been added in l │ │ │ │ │ +00003120: 6967 6874 2067 7261 792e 290a 0a00 085b ight gray.)....[ │ │ │ │ │ +00003130: 696d 6167 6520 7372 633d 2265 7830 3230 image src="ex020 │ │ │ │ │ +00003140: 2e70 6e67 2220 7465 7874 3d22 496d 6167 .png" text="Imag │ │ │ │ │ +00003150: 6520 6578 3032 3020 6f6d 6974 7465 6420 e ex020 omitted │ │ │ │ │ +00003160: 696e 2074 6578 7420 7665 7273 696f 6e20 in text version │ │ │ │ │ +00003170: 6f66 2074 6869 7320 646f 6375 6d65 6e74 of this document │ │ │ │ │ +00003180: 2e22 0008 5d0a 0a49 7420 6973 2069 6d70 ."..]..It is imp │ │ │ │ │ +00003190: 6f72 7461 6e74 2074 6f20 6b6e 6f77 2074 ortant to know t │ │ │ │ │ +000031a0: 6861 7420 6f6e 6c79 2074 6865 2022 6f75 hat only the "ou │ │ │ │ │ +000031b0: 7473 6964 6522 206f 6620 6120 706f 6c79 tside" of a poly │ │ │ │ │ +000031c0: 676f 6e20 6973 206e 6f72 6d61 6c6c 790a gon is normally. │ │ │ │ │ +000031d0: 6472 6177 6e2e 2020 5468 6520 e280 9c6f drawn. The ...o │ │ │ │ │ +000031e0: 7574 7369 6465 e280 9d20 6973 2077 6865 utside... is whe │ │ │ │ │ +000031f0: 7265 2074 6865 2076 6572 7469 6365 7320 re the vertices │ │ │ │ │ +00003200: 6769 7665 6e20 696e 2074 6865 20e2 8098 given in the ... │ │ │ │ │ +00003210: 706f 6c79 676f 6ee2 8099 0a63 6f6d 6d61 polygon....comma │ │ │ │ │ +00003220: 6e64 2061 7070 6561 7220 696e 205f 636f nd appear in _co │ │ │ │ │ +00003230: 756e 7465 722d 636c 6f63 6b77 6973 655f unter-clockwise_ │ │ │ │ │ +00003240: 206f 7264 6572 2e20 2054 6875 732c 2069 order. Thus, i │ │ │ │ │ +00003250: 6620 7468 6520 636f 6d6d 616e 6420 6162 f the command ab │ │ │ │ │ +00003260: 6f76 650a 6861 6420 6265 656e 0a20 2070 ove.had been. p │ │ │ │ │ +00003270: 6f6c 7967 6f6e 2830 2c31 2c30 2928 312c olygon(0,1,0)(1, │ │ │ │ │ +00003280: 302c 3029 2830 2c30 2c31 290a 7468 6520 0,0)(0,0,1).the │ │ │ │ │ +00003290: 706f 6c79 676f 6e20 776f 756c 6420 6e6f polygon would no │ │ │ │ │ +000032a0: 7420 6170 7065 6172 2069 6e20 7468 6520 t appear in the │ │ │ │ │ +000032b0: 7069 6374 7572 6520 6174 2061 6c6c 2e20 picture at all. │ │ │ │ │ +000032c0: 2049 7420 776f 756c 6420 6861 7665 2062 It would have b │ │ │ │ │ +000032d0: 6565 6e0a e280 9c63 756c 6c65 64e2 809d een....culled... │ │ │ │ │ +000032e0: 2066 726f 6d20 7468 6520 7363 656e 652e from the scene. │ │ │ │ │ +000032f0: 2020 5468 6973 2063 756c 6c69 6e67 2062 This culling b │ │ │ │ │ +00003300: 6568 6176 696f 7220 6d61 7920 7365 656d ehavior may seem │ │ │ │ │ +00003310: 2073 7472 616e 6765 2c20 6275 740a 7374 strange, but.st │ │ │ │ │ +00003320: 6179 2074 756e 6564 2e0a 0a20 2020 2d2d ay tuned... -- │ │ │ │ │ +00003330: 2d2d 2d2d 2d2d 2d2d 2046 6f6f 746e 6f74 -------- Footnot │ │ │ │ │ +00003340: 6573 202d 2d2d 2d2d 2d2d 2d2d 2d0a 0a20 es ----------.. │ │ │ │ │ +00003350: 2020 2831 2920 4f72 2066 6f72 2045 7572 (1) Or for Eur │ │ │ │ │ +00003360: 6f70 6561 6e20 7573 6572 7320 6f66 2041 opean users of A │ │ │ │ │ +00003370: 3420 7369 7a65 2070 6170 6572 2c20 e280 4 size paper, .. │ │ │ │ │ +00003380: 982d 5465 e280 992e 0a0a 1f0a 4669 6c65 .-Te........File │ │ │ │ │ +00003390: 3a20 736b 6574 6368 2e69 6e66 6f2c 2020 : sketch.info, │ │ │ │ │ +000033a0: 4e6f 6465 3a20 4472 6177 696e 6720 6f70 Node: Drawing op │ │ │ │ │ +000033b0: 7469 6f6e 732c 2020 4e65 7874 3a20 4472 tions, Next: Dr │ │ │ │ │ +000033c0: 6177 696e 6720 6120 736f 6c69 642c 2020 awing a solid, │ │ │ │ │ +000033d0: 5072 6576 3a20 4865 6c6c 6f20 776f 726c Prev: Hello worl │ │ │ │ │ +000033e0: 642c 2020 5570 3a20 496e 7472 6f64 7563 d, Up: Introduc │ │ │ │ │ +000033f0: 7469 6f6e 2062 7920 6578 616d 706c 650a tion by example. │ │ │ │ │ +00003400: 0a32 2e32 204f 7074 696f 6e73 0a3d 3d3d .2.2 Options.=== │ │ │ │ │ +00003410: 3d3d 3d3d 3d3d 3d3d 0a0a 4d61 6e79 20e2 ========..Many . │ │ │ │ │ +00003420: 8098 5053 5472 6963 6b73 e280 9920 616e ..PSTricks... an │ │ │ │ │ +00003430: 6420 e280 9854 696b 5a2f 5047 46e2 8099 d ...TikZ/PGF... │ │ │ │ │ +00003440: 206f 7074 696f 6e73 2077 6f72 6b20 6a75 options work ju │ │ │ │ │ +00003450: 7374 2066 696e 6520 696e 20e2 8098 736b st fine in ...sk │ │ │ │ │ +00003460: 6574 6368 e280 992e 2020 4966 0a67 656e etch.... If.gen │ │ │ │ │ +00003470: 6572 6174 696e 6720 e280 9850 5354 7269 erating ...PSTri │ │ │ │ │ +00003480: 636b 73e2 8099 2c20 7468 6520 636f 6465 cks..., the code │ │ │ │ │ +00003490: 0a20 2070 6f6c 7967 6f6e 5b66 696c 6c63 . polygon[fillc │ │ │ │ │ +000034a0: 6f6c 6f72 3d6c 6967 6874 6772 6179 2c6c olor=lightgray,l │ │ │ │ │ +000034b0: 696e 6577 6964 7468 3d33 7074 5d28 302c inewidth=3pt](0, │ │ │ │ │ +000034c0: 302c 3129 2831 2c30 2c30 2928 302c 312c 0,1)(1,0,0)(0,1, │ │ │ │ │ +000034d0: 3029 0a20 206c 696e 655b 6c69 6e65 7374 0). line[linest │ │ │ │ │ +000034e0: 796c 653d 646f 7474 6564 5d28 2d31 2c2d yle=dotted](-1,- │ │ │ │ │ +000034f0: 312c 2d31 2928 322c 322c 3229 0a70 726f 1,-1)(2,2,2).pro │ │ │ │ │ +00003500: 6475 6365 730a 0a00 085b 696d 6167 6520 duces....[image │ │ │ │ │ +00003510: 7372 633d 2265 7830 3330 2e70 6e67 2220 src="ex030.png" │ │ │ │ │ +00003520: 7465 7874 3d22 496d 6167 6520 6578 3033 text="Image ex03 │ │ │ │ │ +00003530: 3020 6f6d 6974 7465 6420 696e 2074 6578 0 omitted in tex │ │ │ │ │ +00003540: 7420 7665 7273 696f 6e20 6f66 2074 6869 t version of thi │ │ │ │ │ +00003550: 7320 646f 6375 6d65 6e74 2e22 0008 5d0a s document."..]. │ │ │ │ │ +00003560: 0a20 2020 546f 2070 726f 6475 6365 20e2 . To produce . │ │ │ │ │ +00003570: 8098 5469 6b5a 2f50 4746 e280 992c 2074 ..TikZ/PGF..., t │ │ │ │ │ +00003580: 6865 2063 6f72 7265 7370 6f6e 6469 6e67 he corresponding │ │ │ │ │ +00003590: 2063 6f64 6520 6973 0a20 2070 6f6c 7967 code is. polyg │ │ │ │ │ +000035a0: 6f6e 5b66 696c 6c3d 6c69 6768 7467 7261 on[fill=lightgra │ │ │ │ │ +000035b0: 792c 6c69 6e65 2077 6964 7468 3d33 7074 y,line width=3pt │ │ │ │ │ +000035c0: 5d28 302c 302c 3129 2831 2c30 2c30 2928 ](0,0,1)(1,0,0)( │ │ │ │ │ +000035d0: 302c 312c 3029 0a20 206c 696e 655b 7374 0,1,0). line[st │ │ │ │ │ +000035e0: 796c 653d 646f 7474 6564 5d28 2d31 2c2d yle=dotted](-1,- │ │ │ │ │ +000035f0: 312c 2d31 2928 322c 322c 3229 0a20 2067 1,-1)(2,2,2). g │ │ │ │ │ +00003600: 6c6f 6261 6c20 7b20 6c61 6e67 7561 6765 lobal { language │ │ │ │ │ +00003610: 2074 696b 7a20 7d0a 5468 6520 6669 6e61 tikz }.The fina │ │ │ │ │ +00003620: 6c20 e280 9867 6c6f 6261 6ce2 8099 2069 l ...global... i │ │ │ │ │ +00003630: 6e73 7472 7563 7473 20e2 8098 736b 6574 nstructs ...sket │ │ │ │ │ +00003640: 6368 e280 9920 746f 2070 726f 6475 6365 ch... to produce │ │ │ │ │ +00003650: 20e2 8098 5469 6b5a 2f50 4746 e280 9920 ...TikZ/PGF... │ │ │ │ │ +00003660: 636f 6465 2061 730a 6f75 7470 7574 2072 code as.output r │ │ │ │ │ +00003670: 6174 6865 7220 7468 616e 2074 6865 2064 ather than the d │ │ │ │ │ +00003680: 6566 6175 6c74 2c20 e280 9850 5354 7269 efault, ...PSTri │ │ │ │ │ +00003690: 636b 73e2 8099 2e20 204e 6f74 6520 7468 cks.... Note th │ │ │ │ │ +000036a0: 6174 20e2 8098 706f 6c79 676f 6ee2 8099 at ...polygon... │ │ │ │ │ +000036b0: 2066 696c 6c0a 636f 6c6f 7220 616e 6420 fill.color and │ │ │ │ │ +000036c0: e280 986c 696e 65e2 8099 2073 7479 6c65 ...line... style │ │ │ │ │ +000036d0: 206f 7074 696f 6e73 2062 6f74 6820 636f options both co │ │ │ │ │ +000036e0: 6e66 6f72 6d20 746f 20e2 8098 5469 6b5a nform to ...TikZ │ │ │ │ │ +000036f0: e280 9920 7379 6e74 6178 2072 756c 6573 ... syntax rules │ │ │ │ │ +00003700: 2e20 2054 6865 0a72 6573 756c 7469 6e67 . The.resulting │ │ │ │ │ +00003710: 20e2 8098 5469 6b5a 2f50 4746 e280 9920 ...TikZ/PGF... │ │ │ │ │ +00003720: 6f75 7470 7574 2069 730a 2020 5c62 6567 output is. \beg │ │ │ │ │ +00003730: 696e 7b74 696b 7a70 6963 7475 7265 7d5b in{tikzpicture}[ │ │ │ │ │ +00003740: 6a6f 696e 3d72 6f75 6e64 5d0a 2020 5c64 join=round]. \d │ │ │ │ │ +00003750: 7261 775b 646f 7474 6564 5d28 2d31 2c2d raw[dotted](-1,- │ │ │ │ │ +00003760: 3129 2d2d 282e 3333 332c 2e33 3333 293b 1)--(.333,.333); │ │ │ │ │ +00003770: 0a20 205c 6669 6c6c 6472 6177 5b66 696c . \filldraw[fil │ │ │ │ │ +00003780: 6c3d 6c69 6768 7467 7261 792c 6c69 6e65 l=lightgray,line │ │ │ │ │ +00003790: 2077 6964 7468 3d33 7074 5d28 302c 3029 width=3pt](0,0) │ │ │ │ │ +000037a0: 2d2d 2831 2c30 292d 2d28 302c 3129 2d2d --(1,0)--(0,1)-- │ │ │ │ │ +000037b0: 6379 636c 653b 0a20 205c 6472 6177 5b64 cycle;. \draw[d │ │ │ │ │ +000037c0: 6f74 7465 645d 282e 3333 332c 2e33 3333 otted](.333,.333 │ │ │ │ │ +000037d0: 292d 2d28 322c 3229 3b0a 2020 5c65 6e64 )--(2,2);. \end │ │ │ │ │ +000037e0: 7b74 696b 7a70 6963 7475 7265 7d0a 5468 {tikzpicture}.Th │ │ │ │ │ +000037f0: 6520 7265 6d61 696e 696e 6720 6578 616d e remaining exam │ │ │ │ │ +00003800: 706c 6573 206f 6620 7468 6973 206d 616e ples of this man │ │ │ │ │ +00003810: 7561 6c20 6172 6520 696e 2050 5354 7269 ual are in PSTri │ │ │ │ │ +00003820: 636b 7320 7374 796c 652e 0a0a 1f0a 4669 cks style.....Fi │ │ │ │ │ +00003830: 6c65 3a20 736b 6574 6368 2e69 6e66 6f2c le: sketch.info, │ │ │ │ │ +00003840: 2020 4e6f 6465 3a20 4472 6177 696e 6720 Node: Drawing │ │ │ │ │ +00003850: 6120 736f 6c69 642c 2020 4e65 7874 3a20 a solid, Next: │ │ │ │ │ +00003860: 5370 6563 6961 6c20 6f62 6a65 6374 732c Special objects, │ │ │ │ │ +00003870: 2020 5072 6576 3a20 4472 6177 696e 6720 Prev: Drawing │ │ │ │ │ +00003880: 6f70 7469 6f6e 732c 2020 5570 3a20 496e options, Up: In │ │ │ │ │ +00003890: 7472 6f64 7563 7469 6f6e 2062 7920 6578 troduction by ex │ │ │ │ │ +000038a0: 616d 706c 650a 0a32 2e33 2044 7261 7769 ample..2.3 Drawi │ │ │ │ │ +000038b0: 6e67 2061 2073 6f6c 6964 0a3d 3d3d 3d3d ng a solid.===== │ │ │ │ │ +000038c0: 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d 0a0a ==============.. │ │ │ │ │ +000038d0: 4c65 7427 7320 7472 7920 736f 6d65 7468 Let's try someth │ │ │ │ │ +000038e0: 696e 6720 6d6f 7265 2065 7863 6974 696e ing more excitin │ │ │ │ │ +000038f0: 672e 2020 e280 9853 6b65 7463 68e2 8099 g. ...Sketch... │ │ │ │ │ +00003900: 2068 6173 206e 6f20 6e6f 7469 6f6e 206f has no notion o │ │ │ │ │ +00003910: 6620 6120 736f 6c69 642c 0a62 7574 2070 f a solid,.but p │ │ │ │ │ +00003920: 6f6c 7967 6f6e 616c 20e2 809c 6661 6365 olygonal ...face │ │ │ │ │ +00003930: 73e2 809d 2063 616e 2062 6520 7573 6564 s... can be used │ │ │ │ │ +00003940: 2074 6f20 7265 7072 6573 656e 7420 7468 to represent th │ │ │ │ │ +00003950: 6520 626f 756e 6461 7279 206f 6620 6120 e boundary of a │ │ │ │ │ +00003960: 736f 6c69 642e 0a54 6f20 7468 6520 7072 solid..To the pr │ │ │ │ │ +00003970: 6576 696f 7573 2065 7861 6d70 6c65 2c20 evious example, │ │ │ │ │ +00003980: 6c65 7427 7320 6164 6420 7468 7265 6520 let's add three │ │ │ │ │ +00003990: 6d6f 7265 2074 7269 616e 6775 6c61 7220 more triangular │ │ │ │ │ +000039a0: 706f 6c79 676f 6e73 2074 6f0a 6d61 6b65 polygons to.make │ │ │ │ │ +000039b0: 2074 6865 2066 6163 6573 206f 6620 616e the faces of an │ │ │ │ │ +000039c0: 2069 7272 6567 756c 6172 2074 6574 7261 irregular tetra │ │ │ │ │ +000039d0: 6865 6472 6f6e 2e0a 2020 2520 7665 7274 hedron.. % vert │ │ │ │ │ +000039e0: 6963 6573 206f 6620 7468 6520 7465 7472 ices of the tetr │ │ │ │ │ +000039f0: 6168 6564 726f 6e0a 2020 6465 6620 7031 ahedron. def p1 │ │ │ │ │ +00003a00: 2028 302c 302c 3129 2064 6566 2070 3220 (0,0,1) def p2 │ │ │ │ │ +00003a10: 2831 2c30 2c30 290a 2020 6465 6620 7033 (1,0,0). def p3 │ │ │ │ │ +00003a20: 2028 302c 312c 3029 2064 6566 2070 3420 (0,1,0) def p4 │ │ │ │ │ +00003a30: 282d 2e33 2c2d 2e35 2c2d 2e38 290a 0a20 (-.3,-.5,-.8).. │ │ │ │ │ +00003a40: 2025 2066 6163 6573 206f 6620 7468 6520 % faces of the │ │ │ │ │ +00003a50: 7465 7472 6168 6564 726f 6e2e 0a20 2070 tetrahedron.. p │ │ │ │ │ +00003a60: 6f6c 7967 6f6e 2870 3129 2870 3229 2870 olygon(p1)(p2)(p │ │ │ │ │ +00003a70: 3329 2025 206f 7269 6769 6e61 6c20 6672 3) % original fr │ │ │ │ │ +00003a80: 6f6e 7420 706f 6c79 676f 6e0a 2020 706f ont polygon. po │ │ │ │ │ +00003a90: 6c79 676f 6e28 7031 2928 7034 2928 7032 lygon(p1)(p4)(p2 │ │ │ │ │ +00003aa0: 2920 2520 626f 7474 6f6d 0a20 2070 6f6c ) % bottom. pol │ │ │ │ │ +00003ab0: 7967 6f6e 2870 3129 2870 3329 2870 3429 ygon(p1)(p3)(p4) │ │ │ │ │ +00003ac0: 2025 206c 6566 740a 2020 706f 6c79 676f % left. polygo │ │ │ │ │ +00003ad0: 6e28 7033 2928 7032 2928 7034 2920 2520 n(p3)(p2)(p4) % │ │ │ │ │ +00003ae0: 7265 6172 0a0a 2020 2520 6c69 6e65 2074 rear.. % line t │ │ │ │ │ +00003af0: 6f20 7069 6572 6365 2074 6865 2074 6574 o pierce the tet │ │ │ │ │ +00003b00: 7261 6865 6472 6f6e 0a20 206c 696e 655b rahedron. line[ │ │ │ │ │ +00003b10: 6c69 6e65 636f 6c6f 723d 7265 645d 282d linecolor=red](- │ │ │ │ │ +00003b20: 312c 2d31 2c2d 3129 2832 2c32 2c32 290a 1,-1,-1)(2,2,2). │ │ │ │ │ +00003b30: 5468 6973 2065 7861 6d70 6c65 2075 7365 This example use │ │ │ │ │ +00003b40: 7320 e280 9c64 6566 696e 6974 696f 6e73 s ...definitions │ │ │ │ │ +00003b50: e280 9d2c 2077 6869 6368 2062 6567 696e ..., which begin │ │ │ │ │ +00003b60: 2077 6974 6820 e280 9864 6566 e280 992e with ...def.... │ │ │ │ │ +00003b70: 2020 5468 6573 6520 e280 9c64 6566 696e These ...defin │ │ │ │ │ +00003b80: 65e2 809d 0a6f 7220 6769 7665 206e 616d e....or give nam │ │ │ │ │ +00003b90: 6573 2074 6f20 706f 696e 7473 2c20 7768 es to points, wh │ │ │ │ │ +00003ba0: 6963 6820 6172 6520 7468 656e 2061 7661 ich are then ava │ │ │ │ │ +00003bb0: 696c 6162 6c65 2061 7320 e280 9c72 6566 ilable as ...ref │ │ │ │ │ +00003bc0: 6572 656e 6365 73e2 809d 2062 790a 656e erences... by.en │ │ │ │ │ +00003bd0: 636c 6f73 696e 6720 7468 6520 6e61 6d65 closing the name │ │ │ │ │ +00003be0: 7320 696e 2070 6172 656e 7468 6573 6573 s in parentheses │ │ │ │ │ +00003bf0: 2c20 652e 672e 2028 666f 6f29 2e20 2054 , e.g. (foo). T │ │ │ │ │ +00003c00: 6865 2070 6172 656e 7468 6573 6573 2064 he parentheses d │ │ │ │ │ +00003c10: 656e 6f74 650a 7468 6174 2074 6865 206e enote.that the n │ │ │ │ │ +00003c20: 616d 6573 2072 6566 6572 2074 6f20 706f ames refer to po │ │ │ │ │ +00003c30: 696e 7473 3b20 7468 6579 2061 7265 2072 ints; they are r │ │ │ │ │ +00003c40: 6571 7569 7265 642e 2020 5468 6572 6520 equired. There │ │ │ │ │ +00003c50: 6361 6e20 6265 206e 6f0a 7768 6974 6520 can be no.white │ │ │ │ │ +00003c60: 7370 6163 6520 6265 7477 6565 6e20 7468 space between th │ │ │ │ │ +00003c70: 656d 2061 6e64 2074 6865 206e 616d 652e em and the name. │ │ │ │ │ +00003c80: 0a0a 2020 2041 7320 796f 7520 6361 6e20 .. As you can │ │ │ │ │ +00003c90: 7365 652c 2063 6f6d 6d65 6e74 7320 7374 see, comments st │ │ │ │ │ +00003ca0: 6172 7420 7769 7468 2025 2061 7320 696e art with % as in │ │ │ │ │ +00003cb0: 2054 6558 2061 6e64 2065 7874 656e 6420 TeX and extend │ │ │ │ │ +00003cc0: 746f 2074 6865 2065 6e64 0a6f 6620 7468 to the end.of th │ │ │ │ │ +00003cd0: 6520 6c69 6e65 2028 7468 6f75 6768 2023 e line (though # │ │ │ │ │ +00003ce0: 2077 696c 6c20 776f 726b 2061 7320 7765 will work as we │ │ │ │ │ +00003cf0: 6c6c 292e 2020 5768 6974 6520 7370 6163 ll). White spac │ │ │ │ │ +00003d00: 652c 2069 6e63 6c75 6469 6e67 0a73 7061 e, including.spa │ │ │ │ │ +00003d10: 6365 732c 2074 6162 7320 616e 6420 626c ces, tabs and bl │ │ │ │ │ +00003d20: 616e 6b20 6c69 6e65 732c 2068 6173 206e ank lines, has n │ │ │ │ │ +00003d30: 6f20 6566 6665 6374 2069 6e20 7468 6520 o effect in the │ │ │ │ │ +00003d40: e280 9873 6b65 7463 68e2 8099 206c 616e ...sketch... lan │ │ │ │ │ +00003d50: 6775 6167 652e 0a0a 0008 5b69 6d61 6765 guage.....[image │ │ │ │ │ +00003d60: 2073 7263 3d22 6578 3034 302e 706e 6722 src="ex040.png" │ │ │ │ │ +00003d70: 2074 6578 743d 2249 6d61 6765 2065 7830 text="Image ex0 │ │ │ │ │ +00003d80: 3430 206f 6d69 7474 6564 2069 6e20 7465 40 omitted in te │ │ │ │ │ +00003d90: 7874 2076 6572 7369 6f6e 206f 6620 7468 xt version of th │ │ │ │ │ +00003da0: 6973 2064 6f63 756d 656e 742e 2200 085d is document."..] │ │ │ │ │ +00003db0: 0a0a 4966 2077 6520 6c6f 6f6b 2069 6e73 ..If we look ins │ │ │ │ │ +00003dc0: 6964 6520 7468 6520 5465 5820 6669 6c65 ide the TeX file │ │ │ │ │ +00003dd0: 2070 726f 6475 6365 6420 6279 20e2 8098 produced by ... │ │ │ │ │ +00003de0: 736b 6574 6368 e280 992c 2074 6865 7265 sketch..., there │ │ │ │ │ +00003df0: 2077 696c 6c20 6265 206f 6e6c 790a 7468 will be only.th │ │ │ │ │ +00003e00: 7265 6520 706f 6c79 676f 6e73 2e20 2054 ree polygons. T │ │ │ │ │ +00003e10: 6865 2066 6f75 7274 6820 6861 7320 6265 he fourth has be │ │ │ │ │ +00003e20: 656e 2063 756c 6c65 6420 6265 6361 7573 en culled becaus │ │ │ │ │ +00003e30: 6520 6974 2069 7320 6120 2262 6163 6b20 e it is a "back │ │ │ │ │ +00003e40: 6661 6365 220a 6f66 2074 6865 2074 6574 face".of the tet │ │ │ │ │ +00003e50: 7261 6865 6472 6f6e 2c20 696e 7669 7369 rahedron, invisi │ │ │ │ │ +00003e60: 626c 6520 746f 206f 7572 2076 6965 772e ble to our view. │ │ │ │ │ +00003e70: 2020 4974 2069 7320 756e 6e65 6365 7373 It is unnecess │ │ │ │ │ +00003e80: 6172 792c 2061 6e64 2073 6f20 6974 0a69 ary, and so it.i │ │ │ │ │ +00003e90: 7320 7265 6d6f 7665 642e 0a0a 2020 2049 s removed... I │ │ │ │ │ +00003ea0: 6e20 736f 6d65 2064 7261 7769 6e67 732c n some drawings, │ │ │ │ │ +00003eb0: 2070 6f6c 7967 6f6e 7320 6163 7420 6173 polygons act as │ │ │ │ │ +00003ec0: 207a 6572 6f2d 7468 6963 6b6e 6573 7320 zero-thickness │ │ │ │ │ +00003ed0: 736f 6c69 6420 7375 7266 6163 6573 2077 solid surfaces w │ │ │ │ │ +00003ee0: 6974 680a 626f 7468 2073 6964 6573 2076 ith.both sides v │ │ │ │ │ +00003ef0: 6973 6962 6c65 2072 6174 6865 7220 7468 isible rather th │ │ │ │ │ +00003f00: 616e 2061 7320 7468 6520 6661 6365 7320 an as the faces │ │ │ │ │ +00003f10: 6f66 2073 6f6c 6964 206f 626a 6563 7473 of solid objects │ │ │ │ │ +00003f20: 2c20 7768 6572 6520 6261 636b 0a66 6163 , where back.fac │ │ │ │ │ +00003f30: 6573 2063 616e 2062 6520 6375 6c6c 6564 es can be culled │ │ │ │ │ +00003f40: 2e20 2046 6f72 207a 6572 6f2d 7468 6963 . For zero-thic │ │ │ │ │ +00003f50: 6b6e 6573 7320 736f 6c69 6473 2c20 6375 kness solids, cu │ │ │ │ │ +00003f60: 6c6c 696e 6720 6973 2061 2070 726f 626c lling is a probl │ │ │ │ │ +00003f70: 656d 2e0a 4f6e 6520 736f 6c75 7469 6f6e em..One solution │ │ │ │ │ +00003f80: 2069 7320 746f 2075 7365 2061 2070 6169 is to use a pai │ │ │ │ │ +00003f90: 7220 6f66 20e2 8098 736b 6574 6368 e280 r of ...sketch.. │ │ │ │ │ +00003fa0: 9920 706f 6c79 676f 6e73 2066 6f72 2065 . polygons for e │ │ │ │ │ +00003fb0: 6163 680a 7a65 726f 2d74 6869 636b 6e65 ach.zero-thickne │ │ │ │ │ +00003fc0: 7373 2066 6163 652c 2069 6465 6e74 6963 ss face, identic │ │ │ │ │ +00003fd0: 616c 2065 7863 6570 7420 7769 7468 206f al except with o │ │ │ │ │ +00003fe0: 7070 6f73 6974 6520 7665 7274 6578 206f pposite vertex o │ │ │ │ │ +00003ff0: 7264 6572 732e 2020 5468 6973 0a69 7320 rders. This.is │ │ │ │ │ +00004000: 756e 7769 656c 6479 2061 6e64 2065 7870 unwieldy and exp │ │ │ │ │ +00004010: 656e 7369 7665 2e20 2041 2062 6574 7465 ensive. A bette │ │ │ │ │ +00004020: 7220 7761 7920 6973 2074 6f20 7365 7420 r way is to set │ │ │ │ │ +00004030: 7468 6520 e280 9873 6b65 7463 68e2 8099 the ...sketch... │ │ │ │ │ +00004040: 2069 6e74 6572 6e61 6c0a 6f70 7469 6f6e internal.option │ │ │ │ │ +00004050: 20e2 8098 6375 6c6c e280 9920 746f 20e2 ...cull... to . │ │ │ │ │ +00004060: 8098 6661 6c73 65e2 8099 2069 6e20 7468 ..false... in th │ │ │ │ │ +00004070: 6520 7573 7561 6c20 e280 9850 5354 7269 e usual ...PSTri │ │ │ │ │ +00004080: 636b 73e2 8099 206d 616e 6e65 722e 0a20 cks... manner.. │ │ │ │ │ +00004090: 2070 6f6c 7967 6f6e 5b63 756c 6c3d 6661 polygon[cull=fa │ │ │ │ │ +000040a0: 6c73 655d 2870 3129 2870 3229 2870 3329 lse](p1)(p2)(p3) │ │ │ │ │ +000040b0: 0a54 6865 2066 6f6c 6c6f 7769 6e67 2073 .The following s │ │ │ │ │ +000040c0: 686f 7773 2074 6865 2073 616d 6520 6865 hows the same he │ │ │ │ │ +000040d0: 6c69 7820 7368 6170 6520 6472 6177 6e20 lix shape drawn │ │ │ │ │ +000040e0: 6669 7273 7420 7769 7468 2063 756c 6c3d first with cull= │ │ │ │ │ +000040f0: 7472 7565 2028 7468 650a 6465 6661 756c true (the.defaul │ │ │ │ │ +00004100: 7429 2061 6e64 2074 6865 6e20 6375 6c6c t) and then cull │ │ │ │ │ +00004110: 3d66 616c 7365 2e0a 0a00 085b 696d 6167 =false.....[imag │ │ │ │ │ +00004120: 6520 7372 633d 2265 7830 3435 2e70 6e67 e src="ex045.png │ │ │ │ │ +00004130: 2220 7465 7874 3d22 496d 6167 6520 6578 " text="Image ex │ │ │ │ │ +00004140: 3034 3520 6f6d 6974 7465 6420 696e 2074 045 omitted in t │ │ │ │ │ +00004150: 6578 7420 7665 7273 696f 6e20 6f66 2074 ext version of t │ │ │ │ │ +00004160: 6869 7320 646f 6375 6d65 6e74 2e22 0008 his document.".. │ │ │ │ │ +00004170: 5d0a 0a57 6527 6c6c 2073 6f6f 6e20 7365 ]..We'll soon se │ │ │ │ │ +00004180: 6520 686f 7720 746f 2070 726f 6475 6365 e how to produce │ │ │ │ │ +00004190: 2074 6865 7365 2068 656c 6978 6573 2077 these helixes w │ │ │ │ │ +000041a0: 6974 6820 6120 6665 7720 6c69 6e65 7320 ith a few lines │ │ │ │ │ +000041b0: 6f66 20e2 8098 736b 6574 6368 e280 990a of ...sketch.... │ │ │ │ │ +000041c0: 6c61 6e67 7561 6765 2063 6f64 652e 0a0a language code... │ │ │ │ │ +000041d0: 2020 2049 7420 6d61 7920 6265 2074 656d It may be tem │ │ │ │ │ +000041e0: 7074 696e 6720 746f 2074 7572 6e20 6375 pting to turn cu │ │ │ │ │ +000041f0: 6c6c 696e 6720 6f66 6620 6772 6174 7569 lling off gratui │ │ │ │ │ +00004200: 746f 7573 6c79 2073 6f20 7468 6174 2076 tously so that v │ │ │ │ │ +00004210: 6572 7465 780a 6f72 6465 7220 6361 6e20 ertex.order can │ │ │ │ │ +00004220: 6265 2069 676e 6f72 6564 2e20 2054 6869 be ignored. Thi │ │ │ │ │ +00004230: 7320 6973 206e 6f74 2061 2067 6f6f 6420 s is not a good │ │ │ │ │ +00004240: 6964 6561 2062 6563 6175 7365 206f 7574 idea because out │ │ │ │ │ +00004250: 7075 7420 6669 6c65 2073 697a 650a 616e put file size.an │ │ │ │ │ +00004260: 6420 5465 5820 616e 6420 506f 7374 7363 d TeX and Postsc │ │ │ │ │ +00004270: 7269 7074 2070 726f 6365 7373 696e 6720 ript processing │ │ │ │ │ +00004280: 7469 6d65 2062 6f74 6820 6465 7065 6e64 time both depend │ │ │ │ │ +00004290: 206f 6e20 7468 6520 6e75 6d62 6572 206f on the number o │ │ │ │ │ +000042a0: 660a 6f75 7470 7574 2070 6f6c 7967 6f6e f.output polygon │ │ │ │ │ +000042b0: 732e 2020 4375 6c6c 696e 6720 7573 7561 s. Culling usua │ │ │ │ │ +000042c0: 6c6c 7920 696d 7072 6f76 6573 2070 6572 lly improves per │ │ │ │ │ +000042d0: 666f 726d 616e 6365 2062 7920 6120 6661 formance by a fa │ │ │ │ │ +000042e0: 6374 6f72 206f 660a 7477 6f2e 2020 4f6e ctor of.two. On │ │ │ │ │ +000042f0: 2074 6865 206f 7468 6572 2068 616e 642c the other hand, │ │ │ │ │ +00004300: 2067 6c6f 6261 6c6c 7920 7365 7474 696e globally settin │ │ │ │ │ +00004310: 6720 e280 9863 756c 6c3d 6661 6c73 65e2 g ...cull=false. │ │ │ │ │ +00004320: 8099 2069 7320 7265 6173 6f6e 6162 6c65 .. is reasonable │ │ │ │ │ +00004330: 0a77 6869 6c65 2064 6562 7567 6769 6e67 .while debugging │ │ │ │ │ +00004340: 2e20 2053 6565 202a 6e6f 7465 2047 6c6f . See *note Glo │ │ │ │ │ +00004350: 6261 6c20 6f70 7469 6f6e 733a 3a20 616e bal options:: an │ │ │ │ │ +00004360: 6420 2a6e 6f74 6520 4c69 6d69 7473 206f d *note Limits o │ │ │ │ │ +00004370: 6e20 6572 726f 720a 6465 7465 6374 696f n error.detectio │ │ │ │ │ +00004380: 6e3a 3a2e 0a0a 1f0a 4669 6c65 3a20 736b n::.....File: sk │ │ │ │ │ +00004390: 6574 6368 2e69 6e66 6f2c 2020 4e6f 6465 etch.info, Node │ │ │ │ │ +000043a0: 3a20 5370 6563 6961 6c20 6f62 6a65 6374 : Special object │ │ │ │ │ +000043b0: 732c 2020 4e65 7874 3a20 4f62 6a65 6374 s, Next: Object │ │ │ │ │ +000043c0: 2074 7261 6e73 666f 726d 732c 2020 5072 transforms, Pr │ │ │ │ │ +000043d0: 6576 3a20 4472 6177 696e 6720 6120 736f ev: Drawing a so │ │ │ │ │ +000043e0: 6c69 642c 2020 5570 3a20 496e 7472 6f64 lid, Up: Introd │ │ │ │ │ +000043f0: 7563 7469 6f6e 2062 7920 6578 616d 706c uction by exampl │ │ │ │ │ +00004400: 650a 0a32 2e34 2053 7065 6369 616c 206f e..2.4 Special o │ │ │ │ │ +00004410: 626a 6563 7473 0a3d 3d3d 3d3d 3d3d 3d3d bjects.========= │ │ │ │ │ +00004420: 3d3d 3d3d 3d3d 3d3d 3d3d 0a0a 5765 2063 ==========..We c │ │ │ │ │ +00004430: 616e 2061 6464 206c 6162 656c 7320 746f an add labels to │ │ │ │ │ +00004440: 2061 2064 7261 7769 6e67 2062 7920 7573 a drawing by us │ │ │ │ │ +00004450: 696e 6720 7370 6563 6961 6c20 6f62 6a65 ing special obje │ │ │ │ │ +00004460: 6374 732c 2077 6869 6368 2070 726f 7669 cts, which provi │ │ │ │ │ +00004470: 6465 2061 0a77 6179 2074 6f20 656d 6265 de a.way to embe │ │ │ │ │ +00004480: 6420 7261 7720 4c61 5465 5820 616e 6420 d raw LaTeX and │ │ │ │ │ +00004490: e280 9850 5354 7269 636b 73e2 8099 2063 ...PSTricks... c │ │ │ │ │ +000044a0: 6f64 652e 2020 4164 6469 6e67 2074 6869 ode. Adding thi │ │ │ │ │ +000044b0: 7320 746f 2074 6865 0a74 6574 7261 6865 s to the.tetrahe │ │ │ │ │ +000044c0: 6472 6f6e 2064 6f65 7320 7468 6520 7472 dron does the tr │ │ │ │ │ +000044d0: 6963 6b2e 0a20 2073 7065 6369 616c 207c ick.. special | │ │ │ │ │ +000044e0: 5c66 6f6f 746e 6f74 6573 697a 650a 2020 \footnotesize. │ │ │ │ │ +000044f0: 2020 2020 2020 2020 205c 7570 7574 7b32 \uput{2 │ │ │ │ │ +00004500: 7074 7d5b 7572 5d23 317b 2450 3124 7d0a pt}[ur]#1{$P1$}. │ │ │ │ │ +00004510: 2020 2020 2020 2020 2020 205c 7570 7574 \uput │ │ │ │ │ +00004520: 5b72 5d23 327b 2450 3224 7d0a 2020 2020 [r]#2{$P2$}. │ │ │ │ │ +00004530: 2020 2020 2020 205c 7570 7574 5b75 5d23 \uput[u]# │ │ │ │ │ +00004540: 337b 2450 3324 7d0a 2020 2020 2020 2020 3{$P3$}. │ │ │ │ │ +00004550: 2020 205c 7570 7574 5b64 5d23 347b 2450 \uput[d]#4{$P │ │ │ │ │ +00004560: 3424 7d7c 0a20 2020 2028 7031 2928 7032 4$}|. (p1)(p2 │ │ │ │ │ +00004570: 2928 7033 2928 7034 290a 4865 7265 2069 )(p3)(p4).Here i │ │ │ │ │ +00004580: 7320 7468 6520 7265 7375 6c74 2e0a 0a00 s the result.... │ │ │ │ │ +00004590: 085b 696d 6167 6520 7372 633d 2265 7830 .[image src="ex0 │ │ │ │ │ +000045a0: 3432 2e70 6e67 2220 7465 7874 3d22 496d 42.png" text="Im │ │ │ │ │ +000045b0: 6167 6520 6578 3034 3220 6f6d 6974 7465 age ex042 omitte │ │ │ │ │ +000045c0: 6420 696e 2074 6578 7420 7665 7273 696f d in text versio │ │ │ │ │ +000045d0: 6e20 6f66 2074 6869 7320 646f 6375 6d65 n of this docume │ │ │ │ │ +000045e0: 6e74 2e22 0008 5d0a 0a20 2020 5468 6572 nt."..].. Ther │ │ │ │ │ +000045f0: 6520 6172 6520 7365 7665 7261 6c20 6465 e are several de │ │ │ │ │ +00004600: 7461 696c 7320 746f 206e 6f74 6520 6865 tails to note he │ │ │ │ │ +00004610: 7265 2e20 2046 6972 7374 2c20 7468 6520 re. First, the │ │ │ │ │ +00004620: 7175 6f74 696e 670a 636f 6e76 656e 7469 quoting.conventi │ │ │ │ │ +00004630: 6f6e 2066 6f72 2074 6865 2072 6177 2063 on for the raw c │ │ │ │ │ +00004640: 6f64 6520 6973 2073 696d 696c 6172 2074 ode is similar t │ │ │ │ │ +00004650: 6f20 7468 6520 4c61 5465 5820 5c76 6572 o the LaTeX \ver │ │ │ │ │ +00004660: 6220 636f 6d6d 616e 642e 2020 5468 650a b command. The. │ │ │ │ │ +00004670: 6669 7273 7420 6e6f 6e2d 7768 6974 6520 first non-white │ │ │ │ │ +00004680: 7370 6163 6520 6368 6172 6163 7465 7220 space character │ │ │ │ │ +00004690: 666f 6c6c 6f77 696e 6720 7370 6563 6961 following specia │ │ │ │ │ +000046a0: 6c20 6973 2075 6e64 6572 7374 6f6f 6420 l is understood │ │ │ │ │ +000046b0: 746f 2062 650a 7468 6520 7175 6f74 6520 to be.the quote │ │ │ │ │ +000046c0: 6368 6172 6163 7465 722c 2069 6e20 7468 character, in th │ │ │ │ │ +000046d0: 6973 2063 6173 6520 e280 987c e280 992e is case ...|.... │ │ │ │ │ +000046e0: 2020 5468 6520 7261 7720 7465 7874 2063 The raw text c │ │ │ │ │ +000046f0: 6f6e 7469 6e75 6573 2075 6e74 696c 0a74 ontinues until.t │ │ │ │ │ +00004700: 6869 7320 6368 6172 6163 7465 7220 7265 his character re │ │ │ │ │ +00004710: 6375 7273 2e0a 0a20 2020 5365 636f 6e64 curs... Second │ │ │ │ │ +00004720: 2c20 7468 6520 6172 6775 6d65 6e74 2072 , the argument r │ │ │ │ │ +00004730: 6566 6572 656e 6365 7320 2331 2c20 2332 eferences #1, #2 │ │ │ │ │ +00004740: 2c20 2333 2c20 616e 6420 2334 2072 6566 , #3, and #4 ref │ │ │ │ │ +00004750: 6572 2074 6f20 706f 696e 742c 0a76 6563 er to point,.vec │ │ │ │ │ +00004760: 746f 722c 206f 7220 7363 616c 6172 2076 tor, or scalar v │ │ │ │ │ +00004770: 616c 7565 7320 696e 2074 6865 206c 6973 alues in the lis │ │ │ │ │ +00004780: 7420 7468 6174 2066 6f6c 6c6f 772e 2020 t that follow. │ │ │ │ │ +00004790: 5468 6973 2069 7320 7369 6d69 6c61 7220 This is similar │ │ │ │ │ +000047a0: 746f 0a54 6558 206d 6163 726f 2073 796e to.TeX macro syn │ │ │ │ │ +000047b0: 7461 782e 2020 5468 6520 7472 616e 7366 tax. The transf │ │ │ │ │ +000047c0: 6f72 6d65 6420 616e 6420 7477 6f2d 6469 ormed and two-di │ │ │ │ │ +000047d0: 6d65 6e73 696f 6e61 6c20 7072 6f6a 6563 mensional projec │ │ │ │ │ +000047e0: 7469 6f6e 7320 6f66 0a74 6865 7365 2074 tions of.these t │ │ │ │ │ +000047f0: 6872 6565 2d64 696d 656e 7369 6f6e 616c hree-dimensional │ │ │ │ │ +00004800: 2070 6f69 6e74 7320 6172 6520 7375 6273 points are subs │ │ │ │ │ +00004810: 7469 7475 7465 6420 696e 2074 6865 2066 tituted in the f │ │ │ │ │ +00004820: 696e 616c 206f 7574 7075 742e 2020 416e inal output. An │ │ │ │ │ +00004830: 0a61 7267 756d 656e 7420 7265 6665 7265 .argument refere │ │ │ │ │ +00004840: 6e63 6520 6f66 2074 6865 2066 6f72 6d20 nce of the form │ │ │ │ │ +00004850: 2331 2d32 2069 7320 7265 706c 6163 6564 #1-2 is replaced │ │ │ │ │ +00004860: 2077 6974 6820 7468 6520 616e 676c 6520 with the angle │ │ │ │ │ +00004870: 696e 0a64 6567 7265 6573 206f 6620 7468 in.degrees of th │ │ │ │ │ +00004880: 6520 7477 6f2d 6469 6d65 6e73 696f 6e61 e two-dimensiona │ │ │ │ │ +00004890: 6c20 7665 6374 6f72 2074 6861 7420 636f l vector that co │ │ │ │ │ +000048a0: 6e6e 6563 7473 2074 6865 2070 726f 6a65 nnects the proje │ │ │ │ │ +000048b0: 6374 696f 6e73 206f 660a 7468 6520 7477 ctions of.the tw │ │ │ │ │ +000048c0: 6f20 7265 7370 6563 7469 7665 2061 7267 o respective arg │ │ │ │ │ +000048d0: 756d 656e 7420 706f 696e 7473 2c20 6865 ument points, he │ │ │ │ │ +000048e0: 7265 2023 3120 616e 6420 2332 2e20 2054 re #1 and #2. T │ │ │ │ │ +000048f0: 6865 2073 7562 7374 6974 7574 6564 0a61 he substituted.a │ │ │ │ │ +00004900: 6e67 6c65 2069 7320 656e 636c 6f73 6564 ngle is enclosed │ │ │ │ │ +00004910: 2069 6e20 6375 726c 7920 6272 6163 6573 in curly braces │ │ │ │ │ +00004920: 20e2 8098 7b20 7de2 8099 2e20 2057 6865 ...{ }.... Whe │ │ │ │ │ +00004930: 6e20 e280 9854 696b 5a2f 5047 46e2 8099 n ...TikZ/PGF... │ │ │ │ │ +00004940: 206f 7574 7075 7420 6973 0a62 6569 6e67 output is.being │ │ │ │ │ +00004950: 2067 656e 6572 6174 6564 2c20 7468 6520 generated, the │ │ │ │ │ +00004960: 616e 676c 6520 6973 2072 6f75 6e64 6564 angle is rounded │ │ │ │ │ +00004970: 2074 6f20 7468 6520 6e65 6172 6573 7420 to the nearest │ │ │ │ │ +00004980: 6465 6772 6565 2062 6563 6175 7365 0a6e degree because.n │ │ │ │ │ +00004990: 6f6e 2d69 6e74 6567 6572 2061 6e67 6c65 on-integer angle │ │ │ │ │ +000049a0: 7320 6172 6520 6e6f 7420 616c 6c6f 7765 s are not allowe │ │ │ │ │ +000049b0: 6420 6279 20e2 8098 5469 6b5a 2f50 4746 d by ...TikZ/PGF │ │ │ │ │ +000049c0: e280 9920 7072 696d 6974 6976 6573 2e0a ... primitives.. │ │ │ │ │ +000049d0: 0a20 2020 4173 206f 6620 5665 7273 696f . As of Versio │ │ │ │ │ +000049e0: 6e20 302e 3320 6f66 20e2 8098 736b 6574 n 0.3 of ...sket │ │ │ │ │ +000049f0: 6368 e280 992c 2073 7065 6369 616c 2061 ch..., special a │ │ │ │ │ +00004a00: 7267 756d 656e 7473 206d 6179 2062 6520 rguments may be │ │ │ │ │ +00004a10: 7363 616c 6172 7320 6f72 0a76 6563 746f scalars or.vecto │ │ │ │ │ +00004a20: 7273 2069 6e20 6164 6469 7469 6f6e 2074 rs in addition t │ │ │ │ │ +00004a30: 6f20 706f 696e 7473 2e20 2052 6566 6572 o points. Refer │ │ │ │ │ +00004a40: 656e 6365 7320 746f 2073 6361 6c61 7220 ences to scalar │ │ │ │ │ +00004a50: 6172 6775 6d65 6e74 7320 6172 650a 6d65 arguments are.me │ │ │ │ │ +00004a60: 7265 6c79 2072 6570 6c61 6365 6420 7769 rely replaced wi │ │ │ │ │ +00004a70: 7468 2061 206e 756d 6265 7220 666f 726d th a number form │ │ │ │ │ +00004a80: 6174 7465 6420 6a75 7374 2061 7320 616e atted just as an │ │ │ │ │ +00004a90: 7920 706f 696e 7420 636f 6f72 6469 6e61 y point coordina │ │ │ │ │ +00004aa0: 7465 2e0a 5265 6665 7265 6e63 6573 2074 te..References t │ │ │ │ │ +00004ab0: 6f20 7665 6374 6f72 7320 6265 636f 6d65 o vectors become │ │ │ │ │ +00004ac0: 2074 776f 2d64 696d 656e 7369 6f6e 616c two-dimensional │ │ │ │ │ +00004ad0: 2070 6f69 6e74 732e 2020 5468 6520 7469 points. The ti │ │ │ │ │ +00004ae0: 636b 206f 7065 7261 746f 720a 7468 6174 ck operator.that │ │ │ │ │ +00004af0: 2073 656c 6563 7473 2069 6e64 6976 6964 selects individ │ │ │ │ │ +00004b00: 7561 6c20 636f 6d70 6f6e 656e 7473 206f ual components o │ │ │ │ │ +00004b10: 6620 706f 696e 7473 2061 6e64 2076 6563 f points and vec │ │ │ │ │ +00004b20: 746f 7273 2065 6c73 6577 6865 7265 2069 tors elsewhere i │ │ │ │ │ +00004b30: 6e0a e280 9873 6b65 7463 68e2 8099 2028 n....sketch... ( │ │ │ │ │ +00004b40: 7365 6520 666f 7220 6578 616d 706c 6520 see for example │ │ │ │ │ +00004b50: 2a6e 6f74 6520 4166 6669 6e65 2061 7269 *note Affine ari │ │ │ │ │ +00004b60: 7468 6d65 7469 633a 3a29 2063 616e 2061 thmetic::) can a │ │ │ │ │ +00004b70: 6c73 6f20 6265 2061 7070 6c69 6564 0a74 lso be applied.t │ │ │ │ │ +00004b80: 6f20 706f 696e 7420 616e 6420 7665 6374 o point and vect │ │ │ │ │ +00004b90: 6f72 2061 7267 756d 656e 7420 7265 6665 or argument refe │ │ │ │ │ +00004ba0: 7265 6e63 6573 2e20 2041 6c6c 2074 6872 rences. All thr │ │ │ │ │ +00004bb0: 6565 2064 696d 656e 7369 6f6e 7320 6f66 ee dimensions of │ │ │ │ │ +00004bc0: 2061 0a74 7261 6e73 666f 726d 6564 2070 a.transformed p │ │ │ │ │ +00004bd0: 6f69 6e74 206f 7220 7665 6374 6f72 2063 oint or vector c │ │ │ │ │ +00004be0: 616e 2061 6c73 6f20 6265 2073 7562 7374 an also be subst │ │ │ │ │ +00004bf0: 6974 7565 6420 7769 7468 20e2 8098 2733 itued with ...'3 │ │ │ │ │ +00004c00: e280 992e 2020 5365 6520 2a6e 6f74 650a .... See *note. │ │ │ │ │ +00004c10: 5370 6563 6961 6c73 3a3a 2066 6f72 2064 Specials:: for d │ │ │ │ │ +00004c20: 6574 6169 6c73 2e0a 0a20 2020 4279 2064 etails... By d │ │ │ │ │ +00004c30: 6566 6175 6c74 2c20 e280 9873 7065 6369 efault, ...speci │ │ │ │ │ +00004c40: 616c e280 9920 6f62 6a65 6374 7320 6172 al... objects ar │ │ │ │ │ +00004c50: 6520 7072 696e 7465 6420 6c61 7374 2c20 e printed last, │ │ │ │ │ +00004c60: 6f76 6572 6c61 7969 6e67 2061 6c6c 206f overlaying all o │ │ │ │ │ +00004c70: 7468 6572 0a6f 626a 6563 7473 2069 6e20 ther.objects in │ │ │ │ │ +00004c80: 7468 6520 7363 656e 652e 2020 4966 2079 the scene. If y │ │ │ │ │ +00004c90: 6f75 2073 7065 6369 6679 2074 6865 2069 ou specify the i │ │ │ │ │ +00004ca0: 6e74 6572 6e61 6c20 6f70 7469 6f6e 20e2 nternal option . │ │ │ │ │ +00004cb0: 8098 6c61 793d 696e e280 992c 2074 6865 ..lay=in..., the │ │ │ │ │ +00004cc0: 0a68 6964 6465 6e20 7375 7266 6163 6520 .hidden surface │ │ │ │ │ +00004cd0: 616c 676f 7269 7468 6d20 636f 6e73 6964 algorithm consid │ │ │ │ │ +00004ce0: 6572 7320 7468 6520 656e 7469 7265 2073 ers the entire s │ │ │ │ │ +00004cf0: 7065 6369 616c 206f 626a 6563 7420 746f pecial object to │ │ │ │ │ +00004d00: 2062 6520 7468 650a 6669 7273 7420 706f be the.first po │ │ │ │ │ +00004d10: 696e 7420 2823 3129 2069 6e20 7468 6520 int (#1) in the │ │ │ │ │ +00004d20: 6172 6775 6d65 6e74 206c 6973 742e 2020 argument list. │ │ │ │ │ +00004d30: 4966 2074 6861 7420 706f 696e 7420 6973 If that point is │ │ │ │ │ +00004d40: 2062 6568 696e 6420 286f 660a 736d 616c behind (of.smal │ │ │ │ │ +00004d50: 6c65 7220 7a2d 636f 6d70 6f6e 656e 7420 ler z-component │ │ │ │ │ +00004d60: 7468 616e 2920 616e 7920 6472 6177 6162 than) any drawab │ │ │ │ │ +00004d70: 6c65 2c20 7468 656e 2074 6865 2065 6e74 le, then the ent │ │ │ │ │ +00004d80: 6972 6520 7370 6563 6961 6c20 6f62 6a65 ire special obje │ │ │ │ │ +00004d90: 6374 0a69 7320 6472 6177 6e20 6265 666f ct.is drawn befo │ │ │ │ │ +00004da0: 7265 2074 6861 7420 6472 6177 6162 6c65 re that drawable │ │ │ │ │ +00004db0: 2c20 736f 2074 6865 2064 7261 7761 626c , so the drawabl │ │ │ │ │ +00004dc0: 6520 6f62 7363 7572 6573 2070 6172 7473 e obscures parts │ │ │ │ │ +00004dd0: 206f 6620 7468 650a 7370 6563 6961 6c20 of the.special │ │ │ │ │ +00004de0: 6f62 6a65 6374 2074 6861 7420 6f76 6572 object that over │ │ │ │ │ +00004df0: 6c61 7073 2069 742e 2020 496e 206f 7572 laps it. In our │ │ │ │ │ +00004e00: 2065 7861 6d70 6c65 2c20 7031 2069 7320 example, p1 is │ │ │ │ │ +00004e10: 7468 6520 6672 6f6e 742d 6d6f 7374 0a70 the front-most.p │ │ │ │ │ +00004e20: 6f69 6e74 2069 6e20 7468 6520 7363 656e oint in the scen │ │ │ │ │ +00004e30: 6520 2868 6173 2074 6865 206c 6172 6765 e (has the large │ │ │ │ │ +00004e40: 7374 207a 2d63 6f6d 706f 6e65 6e74 292c st z-component), │ │ │ │ │ +00004e50: 2073 6f20 6164 6469 6e67 20e2 8098 6c61 so adding ...la │ │ │ │ │ +00004e60: 793d 696e e280 9920 6861 730a 6e6f 2065 y=in... has.no e │ │ │ │ │ +00004e70: 6666 6563 742e 0a0a 2020 2057 6974 6820 ffect... With │ │ │ │ │ +00004e80: 6f70 7469 6f6e 20e2 8098 6c61 793d 756e option ...lay=un │ │ │ │ │ +00004e90: 6465 72e2 8099 2c20 6120 7370 6563 6961 der..., a specia │ │ │ │ │ +00004ea0: 6c20 6973 2064 7261 776e 205f 6265 666f l is drawn _befo │ │ │ │ │ +00004eb0: 7265 5f2c 2068 656e 6365 2061 7070 6561 re_, hence appea │ │ │ │ │ +00004ec0: 7273 0a5f 756e 6465 725f 2061 6e79 206f rs._under_ any o │ │ │ │ │ +00004ed0: 6620 7468 6520 6f62 6a65 6374 7320 6861 f the objects ha │ │ │ │ │ +00004ee0: 6e64 6c65 6420 6279 2074 6865 2068 6964 ndled by the hid │ │ │ │ │ +00004ef0: 6465 6e20 7375 7266 6163 6520 616c 676f den surface algo │ │ │ │ │ +00004f00: 7269 7468 6d2e 0a54 6869 7320 6973 2068 rithm..This is h │ │ │ │ │ +00004f10: 6f77 2074 6865 206c 6967 6874 2067 7261 ow the light gra │ │ │ │ │ +00004f20: 7920 6178 6573 2077 6572 6520 6164 6465 y axes were adde │ │ │ │ │ +00004f30: 6420 746f 2074 6865 2022 6865 6c6c 6f20 d to the "hello │ │ │ │ │ +00004f40: 776f 726c 6422 2065 7861 6d70 6c65 0a2a world" example.* │ │ │ │ │ +00004f50: 6e6f 7465 2048 656c 6c6f 2077 6f72 6c64 note Hello world │ │ │ │ │ +00004f60: 3a3a 2e0a 0a20 2020 5370 6563 6961 6c20 ::... Special │ │ │ │ │ +00004f70: 6f62 6a65 6374 7320 6172 6520 706f 7765 objects are powe │ │ │ │ │ +00004f80: 7266 756c 2c20 7769 7468 206d 616e 7920 rful, with many │ │ │ │ │ +00004f90: 706f 7373 6962 6c65 2075 7365 732e 0a0a possible uses... │ │ │ │ │ +00004fa0: 1f0a 4669 6c65 3a20 736b 6574 6368 2e69 ..File: sketch.i │ │ │ │ │ +00004fb0: 6e66 6f2c 2020 4e6f 6465 3a20 4f62 6a65 nfo, Node: Obje │ │ │ │ │ +00004fc0: 6374 2074 7261 6e73 666f 726d 732c 2020 ct transforms, │ │ │ │ │ +00004fd0: 4e65 7874 3a20 5265 7065 6174 6564 206f Next: Repeated o │ │ │ │ │ +00004fe0: 626a 6563 7473 2c20 2050 7265 763a 2053 bjects, Prev: S │ │ │ │ │ +00004ff0: 7065 6369 616c 206f 626a 6563 7473 2c20 pecial objects, │ │ │ │ │ +00005000: 2055 703a 2049 6e74 726f 6475 6374 696f Up: Introductio │ │ │ │ │ +00005010: 6e20 6279 2065 7861 6d70 6c65 0a0a 322e n by example..2. │ │ │ │ │ +00005020: 3520 5472 616e 7366 6f72 6d73 0a3d 3d3d 5 Transforms.=== │ │ │ │ │ +00005030: 3d3d 3d3d 3d3d 3d3d 3d3d 3d0a 0a4e 6f77 ===========..Now │ │ │ │ │ +00005040: 206c 6574 2773 2061 6464 2061 2073 6563 let's add a sec │ │ │ │ │ +00005050: 6f6e 6420 636f 7079 206f 6620 7468 6520 ond copy of the │ │ │ │ │ +00005060: 7069 6572 6365 6420 7465 7472 6168 6564 pierced tetrahed │ │ │ │ │ +00005070: 726f 6e2e 2020 5765 276c 6c20 726f 7461 ron. We'll rota │ │ │ │ │ +00005080: 7465 0a74 6865 2063 6f70 7920 3930 2064 te.the copy 90 d │ │ │ │ │ +00005090: 6567 7265 6573 2061 626f 7574 2074 6865 egrees about the │ │ │ │ │ +000050a0: 2078 2d61 7869 7320 7769 7468 2074 6865 x-axis with the │ │ │ │ │ +000050b0: 206f 7269 6769 6e20 6173 20e2 809c 6365 origin as ...ce │ │ │ │ │ +000050c0: 6e74 6572 206f 660a 726f 7461 7469 6f6e nter of.rotation │ │ │ │ │ +000050d0: e280 9d20 736f 2077 6520 6361 6e20 7365 ... so we can se │ │ │ │ │ +000050e0: 6520 7468 6520 6261 636b 2c20 7468 656e e the back, then │ │ │ │ │ +000050f0: 2074 7261 6e73 6c61 7465 2069 7420 746f translate it to │ │ │ │ │ +00005100: 2074 6865 2072 6967 6874 2d2d 696e 2074 the right--in t │ │ │ │ │ +00005110: 6865 0a70 6f73 6974 6976 6520 782d 6469 he.positive x-di │ │ │ │ │ +00005120: 7265 6374 696f 6e2d 2d73 6f20 6974 2064 rection--so it d │ │ │ │ │ +00005130: 6f65 736e 2774 2063 6f6c 6c69 6465 2077 oesn't collide w │ │ │ │ │ +00005140: 6974 6820 7468 6520 6f72 6967 696e 616c ith the original │ │ │ │ │ +00005150: 2e20 2054 6f20 6865 6c70 0a75 7320 7365 . To help.us se │ │ │ │ │ +00005160: 6520 7768 6174 2773 2067 6f69 6e67 206f e what's going o │ │ │ │ │ +00005170: 6e2c 206d 616b 6520 7468 6520 6261 636b n, make the back │ │ │ │ │ +00005180: 2073 6964 6520 6772 6179 2e0a 2020 6465 side gray.. de │ │ │ │ │ +00005190: 6620 7069 6572 6365 645f 7465 7472 6168 f pierced_tetrah │ │ │ │ │ +000051a0: 6564 726f 6e20 7b0a 2020 2020 6465 6620 edron {. def │ │ │ │ │ +000051b0: 7031 2028 302c 302c 3129 2064 6566 2070 p1 (0,0,1) def p │ │ │ │ │ +000051c0: 3220 2831 2c30 2c30 290a 2020 2020 6465 2 (1,0,0). de │ │ │ │ │ +000051d0: 6620 7033 2028 302c 312c 3029 2064 6566 f p3 (0,1,0) def │ │ │ │ │ +000051e0: 2070 3420 282d 2e33 2c2d 2e35 2c2d 2e38 p4 (-.3,-.5,-.8 │ │ │ │ │ +000051f0: 290a 2020 2020 706f 6c79 676f 6e28 7031 ). polygon(p1 │ │ │ │ │ +00005200: 2928 7032 2928 7033 2920 2020 2020 2020 )(p2)(p3) │ │ │ │ │ +00005210: 2020 2020 2020 2020 2020 2020 2020 2025 % │ │ │ │ │ +00005220: 206f 7269 6769 6e61 6c0a 2020 2020 706f original. po │ │ │ │ │ +00005230: 6c79 676f 6e28 7031 2928 7034 2928 7032 lygon(p1)(p4)(p2 │ │ │ │ │ +00005240: 2920 2020 2020 2020 2020 2020 2020 2020 ) │ │ │ │ │ +00005250: 2020 2020 2020 2025 2062 6f74 746f 6d0a % bottom. │ │ │ │ │ +00005260: 2020 2020 706f 6c79 676f 6e28 7031 2928 polygon(p1)( │ │ │ │ │ +00005270: 7033 2928 7034 2920 2020 2020 2020 2020 p3)(p4) │ │ │ │ │ +00005280: 2020 2020 2020 2020 2020 2020 2025 206c % l │ │ │ │ │ +00005290: 6566 740a 2020 2020 706f 6c79 676f 6e5b eft. polygon[ │ │ │ │ │ +000052a0: 6669 6c6c 636f 6c6f 723d 6c69 6768 7467 fillcolor=lightg │ │ │ │ │ +000052b0: 7261 795d 2870 3329 2870 3229 2870 3429 ray](p3)(p2)(p4) │ │ │ │ │ +000052c0: 2025 2072 6561 720a 2020 2020 6c69 6e65 % rear. line │ │ │ │ │ +000052d0: 5b6c 696e 6563 6f6c 6f72 3d72 6564 5d28 [linecolor=red]( │ │ │ │ │ +000052e0: 2d31 2c2d 312c 2d31 2928 322c 322c 3229 -1,-1,-1)(2,2,2) │ │ │ │ │ +000052f0: 0a20 207d 0a20 207b 7069 6572 6365 645f . }. {pierced_ │ │ │ │ │ +00005300: 7465 7472 6168 6564 726f 6e7d 2020 2520 tetrahedron} % │ │ │ │ │ +00005310: 7465 7472 6168 6564 726f 6e20 696e 206f tetrahedron in o │ │ │ │ │ +00005320: 7269 6769 6e61 6c20 706f 7369 7469 6f6e riginal position │ │ │ │ │ +00005330: 0a20 2070 7574 207b 2072 6f74 6174 6528 . put { rotate( │ │ │ │ │ +00005340: 3930 2c20 2830 2c30 2c30 292c 205b 312c 90, (0,0,0), [1, │ │ │ │ │ +00005350: 302c 305d 2920 2520 636f 7079 2069 6e20 0,0]) % copy in │ │ │ │ │ +00005360: 6e65 7720 706f 7369 7469 6f6e 0a20 2020 new position. │ │ │ │ │ +00005370: 2020 2020 2074 6865 6e20 7472 616e 736c then transl │ │ │ │ │ +00005380: 6174 6528 5b32 2e35 2c30 2c30 5d29 207d ate([2.5,0,0]) } │ │ │ │ │ +00005390: 207b 7069 6572 6365 645f 7465 7472 6168 {pierced_tetrah │ │ │ │ │ +000053a0: 6564 726f 6e7d 0a48 6572 6520 7468 6520 edron}.Here the │ │ │ │ │ +000053b0: 656e 7469 7265 2063 6f64 6520 6f66 2074 entire code of t │ │ │ │ │ +000053c0: 6865 2070 7265 7669 6f75 7320 6578 616d he previous exam │ │ │ │ │ +000053d0: 706c 6520 6861 7320 6265 656e 2077 7261 ple has been wra │ │ │ │ │ +000053e0: 7070 6564 2069 6e20 610a 6465 6669 6e69 pped in a.defini │ │ │ │ │ +000053f0: 7469 6f6e 2062 7920 666f 726d 696e 6720 tion by forming │ │ │ │ │ +00005400: 6120 e280 9c62 6c6f 636b e280 9d20 7769 a ...block... wi │ │ │ │ │ +00005410: 7468 2062 7261 6365 7320 2861 2073 696e th braces (a sin │ │ │ │ │ +00005420: 676c 6520 6974 656d 2077 6f75 6c64 206e gle item would n │ │ │ │ │ +00005430: 6f74 0a6e 6565 6420 7468 656d 292e 2020 ot.need them). │ │ │ │ │ +00005440: 5468 6520 706f 696e 7420 6465 6669 6e69 The point defini │ │ │ │ │ +00005450: 7469 6f6e 7320 6e65 7374 6564 2069 6e73 tions nested ins │ │ │ │ │ +00005460: 6964 6520 7468 6520 6272 6163 6573 2061 ide the braces a │ │ │ │ │ +00005470: 7265 0ae2 809c 6c65 7869 6361 6c6c 7920 re....lexically │ │ │ │ │ +00005480: 7363 6f70 6564 e280 9d2e 2020 5468 6569 scoped.... Thei │ │ │ │ │ +00005490: 7220 6d65 616e 696e 6720 6578 7465 6e64 r meaning extend │ │ │ │ │ +000054a0: 7320 6f6e 6c79 2074 6f20 7468 6520 656e s only to the en │ │ │ │ │ +000054b0: 6420 6f66 2074 6865 2062 6c6f 636b 2e0a d of the block.. │ │ │ │ │ +000054c0: 5468 6520 6f75 7465 7220 6465 6620 6973 The outer def is │ │ │ │ │ +000054d0: 2063 616c 6c65 6420 6120 e280 9c64 7261 called a ...dra │ │ │ │ │ +000054e0: 7761 626c 65e2 809d 2064 6566 696e 6974 wable... definit │ │ │ │ │ +000054f0: 696f 6e20 6265 6361 7573 6520 6974 2064 ion because it d │ │ │ │ │ +00005500: 6573 6372 6962 6573 0a73 6f6d 6574 6869 escribes.somethi │ │ │ │ │ +00005510: 6e67 2074 6861 7420 6361 6e20 6265 2064 ng that can be d │ │ │ │ │ +00005520: 7261 776e 2e0a 0a20 2020 4120 6472 6177 rawn... A draw │ │ │ │ │ +00005530: 6162 6c65 2064 6566 696e 6974 696f 6e20 able definition │ │ │ │ │ +00005540: 6279 2069 7473 656c 6620 6361 7573 6573 by itself causes │ │ │ │ │ +00005550: 206e 6f74 6869 6e67 2074 6f20 6861 7070 nothing to happ │ │ │ │ │ +00005560: 656e 2075 6e74 696c 2069 7473 0a6e 616d en until its.nam │ │ │ │ │ +00005570: 6520 6973 2072 6566 6572 656e 6365 642e e is referenced. │ │ │ │ │ +00005580: 2020 4472 6177 6162 6c65 2072 6566 6572 Drawable refer │ │ │ │ │ +00005590: 656e 6365 7320 6d75 7374 2062 6520 656e ences must be en │ │ │ │ │ +000055a0: 636c 6f73 6564 2069 6e20 6375 726c 790a closed in curly. │ │ │ │ │ +000055b0: 6272 6163 6573 2c20 652e 672e 207b 666f braces, e.g. {fo │ │ │ │ │ +000055c0: 6f7d 2c20 7769 7468 206e 6f20 696e 7465 o}, with no inte │ │ │ │ │ +000055d0: 7276 656e 696e 6720 7768 6974 6520 7370 rvening white sp │ │ │ │ │ +000055e0: 6163 652e 2020 496e 2074 6865 2063 6f64 ace. In the cod │ │ │ │ │ +000055f0: 6520 6162 6f76 652c 0a74 6865 2066 6972 e above,.the fir │ │ │ │ │ +00005600: 7374 2072 6566 6572 656e 6365 207b 7069 st reference {pi │ │ │ │ │ +00005610: 6572 6365 645f 7465 7472 6168 6564 726f erced_tetrahedro │ │ │ │ │ +00005620: 6e7d 2069 7320 6120 706c 6169 6e20 6f6e n} is a plain on │ │ │ │ │ +00005630: 652e 2020 4974 7320 6566 6665 6374 2069 e. Its effect i │ │ │ │ │ +00005640: 730a 6d65 7265 6c79 2074 6f20 6475 706c s.merely to dupl │ │ │ │ │ +00005650: 6963 6174 6520 7468 6520 6561 726c 6965 icate the earlie │ │ │ │ │ +00005660: 7220 6472 6177 696e 672e 2020 416c 6d6f r drawing. Almo │ │ │ │ │ +00005670: 7374 2061 6e79 2073 6572 6965 7320 6f66 st any series of │ │ │ │ │ +00005680: 20e2 8098 736b 6574 6368 e280 990a 636f ...sketch....co │ │ │ │ │ +00005690: 6d6d 616e 6473 2073 7475 6666 206d 6179 mmands stuff may │ │ │ │ │ +000056a0: 2062 6520 7265 706c 6163 6564 2077 6974 be replaced wit │ │ │ │ │ +000056b0: 6820 6465 6620 666f 6f20 7b20 7374 7566 h def foo { stuf │ │ │ │ │ +000056c0: 6620 7d20 7b66 6f6f 7d20 7769 7468 6f75 f } {foo} withou │ │ │ │ │ +000056d0: 740a 6368 616e 6769 6e67 2069 7473 206d t.changing its m │ │ │ │ │ +000056e0: 6561 6e69 6e67 2e0a 0a20 2020 5468 6520 eaning... The │ │ │ │ │ +000056f0: 7075 7420 636f 6d6d 616e 6420 7375 7070 put command supp │ │ │ │ │ +00005700: 6c69 6573 2061 2073 6563 6f6e 6420 7265 lies a second re │ │ │ │ │ +00005710: 6665 7265 6e63 652c 2074 6869 7320 7469 ference, this ti │ │ │ │ │ +00005720: 6d65 2077 6974 6820 610a e280 9c74 7261 me with a....tra │ │ │ │ │ +00005730: 6e73 666f 726d e280 9d20 6170 706c 6965 nsform... applie │ │ │ │ │ +00005740: 6420 6669 7273 742e 2020 5468 6520 726f d first. The ro │ │ │ │ │ +00005750: 7461 7465 2074 7261 6e73 666f 726d 2074 tate transform t │ │ │ │ │ +00005760: 7572 6e73 2074 6865 2074 6574 7261 6865 urns the tetrahe │ │ │ │ │ +00005770: 6472 6f6e 0a39 3020 6465 6772 6565 7320 dron.90 degrees │ │ │ │ │ +00005780: 6162 6f75 7420 7468 6520 6f72 6967 696e about the origin │ │ │ │ │ +00005790: 2e20 2054 6865 2061 7869 7320 6f66 2072 . The axis of r │ │ │ │ │ +000057a0: 6f74 6174 696f 6e20 6973 2074 6865 2076 otation is the v │ │ │ │ │ +000057b0: 6563 746f 720a 5b31 2c30 2c30 5d2e 2020 ector.[1,0,0]. │ │ │ │ │ +000057c0: 4279 2074 6865 20e2 809c 7269 6768 7420 By the ...right │ │ │ │ │ +000057d0: 6861 6e64 2072 756c 65e2 809d 2c20 7468 hand rule..., th │ │ │ │ │ +000057e0: 6973 2063 6175 7365 7320 7468 6520 746f is causes the to │ │ │ │ │ +000057f0: 7020 6f66 2074 6865 0a74 6574 7261 6865 p of the.tetrahe │ │ │ │ │ +00005800: 6472 6f6e 2074 6f20 726f 7461 7465 2074 dron to rotate t │ │ │ │ │ +00005810: 6f77 6172 6420 7468 6520 7669 6577 6572 oward the viewer │ │ │ │ │ +00005820: 2061 6e64 2074 6865 2062 6f74 746f 6d20 and the bottom │ │ │ │ │ +00005830: 6177 6179 2e20 2054 6865 2072 756c 650a away. The rule. │ │ │ │ │ +00005840: 7265 6365 6976 6573 2069 7473 206e 616d receives its nam │ │ │ │ │ +00005850: 6520 6672 6f6d 2074 6865 2066 6f6c 6c6f e from the follo │ │ │ │ │ +00005860: 7769 6e67 2064 6566 696e 6974 696f 6e3a wing definition: │ │ │ │ │ +00005870: 0a20 2020 2020 2a52 6967 6874 2068 616e . *Right han │ │ │ │ │ +00005880: 6420 7275 6c65 2e2a 2020 4966 2074 6865 d rule.* If the │ │ │ │ │ +00005890: 2072 6967 6874 2068 616e 6420 6973 2077 right hand is w │ │ │ │ │ +000058a0: 7261 7070 6564 2061 726f 756e 6420 616e rapped around an │ │ │ │ │ +000058b0: 7920 6178 6973 0a20 2020 2020 7769 7468 y axis. with │ │ │ │ │ +000058c0: 2074 6865 2074 6875 6d62 2070 6f69 6e74 the thumb point │ │ │ │ │ +000058d0: 696e 6720 696e 2074 6865 2061 7869 7320 ing in the axis │ │ │ │ │ +000058e0: 6469 7265 6374 696f 6e2c 2074 6865 6e20 direction, then │ │ │ │ │ +000058f0: 7468 6520 6669 6e67 6572 730a 2020 2020 the fingers. │ │ │ │ │ +00005900: 2063 7572 6c20 696e 2074 6865 2064 6972 curl in the dir │ │ │ │ │ +00005910: 6563 7469 6f6e 206f 6620 706f 7369 7469 ection of positi │ │ │ │ │ +00005920: 7665 2072 6f74 6174 696f 6e20 6162 6f75 ve rotation abou │ │ │ │ │ +00005930: 7420 7468 6174 2061 7869 732e 0a20 2020 t that axis.. │ │ │ │ │ +00005940: 5468 6520 7472 616e 736c 6174 6520 7472 The translate tr │ │ │ │ │ +00005950: 616e 7366 6f72 6d20 6d6f 7665 7320 7468 ansform moves th │ │ │ │ │ +00005960: 6520 7079 7261 6d69 6420 6c61 7465 7261 e pyramid latera │ │ │ │ │ +00005970: 6c6c 7920 746f 2074 6865 2072 6967 6874 lly to the right │ │ │ │ │ +00005980: 2062 790a 6164 6469 6e67 2074 6865 2076 by.adding the v │ │ │ │ │ +00005990: 6563 746f 7220 5b32 2e35 2c30 2c30 5d20 ector [2.5,0,0] │ │ │ │ │ +000059a0: 746f 2065 6163 6820 7665 7274 6578 2063 to each vertex c │ │ │ │ │ +000059b0: 6f6f 7264 696e 6174 652e 2020 5468 6520 oordinate. The │ │ │ │ │ +000059c0: 7265 7375 6c74 2069 730a 7368 6f77 6e20 result is.shown │ │ │ │ │ +000059d0: 6865 7265 2e0a 0a00 085b 696d 6167 6520 here.....[image │ │ │ │ │ +000059e0: 7372 633d 2265 7830 3530 2e70 6e67 2220 src="ex050.png" │ │ │ │ │ +000059f0: 7465 7874 3d22 496d 6167 6520 6578 3035 text="Image ex05 │ │ │ │ │ +00005a00: 3020 6f6d 6974 7465 6420 696e 2074 6578 0 omitted in tex │ │ │ │ │ +00005a10: 7420 7665 7273 696f 6e20 6f66 2074 6869 t version of thi │ │ │ │ │ +00005a20: 7320 646f 6375 6d65 6e74 2e22 0008 5d0a s document."..]. │ │ │ │ │ +00005a30: 0a1f 0a46 696c 653a 2073 6b65 7463 682e ...File: sketch. │ │ │ │ │ +00005a40: 696e 666f 2c20 204e 6f64 653a 2052 6570 info, Node: Rep │ │ │ │ │ +00005a50: 6561 7465 6420 6f62 6a65 6374 732c 2020 eated objects, │ │ │ │ │ +00005a60: 4e65 7874 3a20 5377 6570 7420 6f62 6a65 Next: Swept obje │ │ │ │ │ +00005a70: 6374 732c 2020 5072 6576 3a20 4f62 6a65 cts, Prev: Obje │ │ │ │ │ +00005a80: 6374 2074 7261 6e73 666f 726d 732c 2020 ct transforms, │ │ │ │ │ +00005a90: 5570 3a20 496e 7472 6f64 7563 7469 6f6e Up: Introduction │ │ │ │ │ +00005aa0: 2062 7920 6578 616d 706c 650a 0a32 2e36 by example..2.6 │ │ │ │ │ +00005ab0: 2052 6570 6561 7465 6420 6f62 6a65 6374 Repeated object │ │ │ │ │ +00005ac0: 730a 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d s.============== │ │ │ │ │ +00005ad0: 3d3d 3d3d 3d3d 0a0a 546f 2064 7261 7720 ======..To draw │ │ │ │ │ +00005ae0: 7365 7665 6e20 696e 7374 616e 6365 7320 seven instances │ │ │ │ │ +00005af0: 6f66 2074 6865 2074 6574 7261 6865 6472 of the tetrahedr │ │ │ │ │ +00005b00: 6f6e 2c20 6561 6368 2064 6966 6665 7269 on, each differi │ │ │ │ │ +00005b10: 6e67 2066 726f 6d20 7468 6520 6c61 7374 ng from the last │ │ │ │ │ +00005b20: 0a62 7920 7468 6520 7361 6d65 2074 7261 .by the same tra │ │ │ │ │ +00005b30: 6e73 666f 726d 2c20 7265 706c 6163 6520 nsform, replace │ │ │ │ │ +00005b40: 7468 6520 6c61 7374 2074 776f 2063 6f6d the last two com │ │ │ │ │ +00005b50: 6d61 6e64 7320 6f66 2074 6865 2070 7265 mands of the pre │ │ │ │ │ +00005b60: 7669 6f75 730a 6578 616d 706c 6520 7769 vious.example wi │ │ │ │ │ +00005b70: 7468 0a20 2072 6570 6561 7420 7b20 372c th. repeat { 7, │ │ │ │ │ +00005b80: 2072 6f74 6174 6528 3135 2c20 2830 2c30 rotate(15, (0,0 │ │ │ │ │ +00005b90: 2c30 292c 205b 312c 302c 305d 2920 2520 ,0), [1,0,0]) % │ │ │ │ │ +00005ba0: 636f 7079 2069 6e20 6e65 7720 706f 7369 copy in new posi │ │ │ │ │ +00005bb0: 7469 6f6e 0a20 2020 2020 2020 2020 2020 tion. │ │ │ │ │ +00005bc0: 2020 2074 6865 6e20 7472 616e 736c 6174 then translat │ │ │ │ │ +00005bd0: 6528 5b32 2c30 2c30 5d29 207d 207b 7069 e([2,0,0]) } {pi │ │ │ │ │ +00005be0: 6572 6365 645f 7465 7472 6168 6564 726f erced_tetrahedro │ │ │ │ │ +00005bf0: 6e7d 0a41 6e64 2074 6865 2072 6573 756c n}.And the resul │ │ │ │ │ +00005c00: 742e 2e2e 0a0a 0008 5b69 6d61 6765 2073 t.......[image s │ │ │ │ │ +00005c10: 7263 3d22 6578 3036 302e 706e 6722 2074 rc="ex060.png" t │ │ │ │ │ +00005c20: 6578 743d 2249 6d61 6765 2065 7830 3630 ext="Image ex060 │ │ │ │ │ +00005c30: 206f 6d69 7474 6564 2069 6e20 7465 7874 omitted in text │ │ │ │ │ +00005c40: 2076 6572 7369 6f6e 206f 6620 7468 6973 version of this │ │ │ │ │ +00005c50: 2064 6f63 756d 656e 742e 2200 085d 0a0a document."..].. │ │ │ │ │ +00005c60: 1f0a 4669 6c65 3a20 736b 6574 6368 2e69 ..File: sketch.i │ │ │ │ │ +00005c70: 6e66 6f2c 2020 4e6f 6465 3a20 5377 6570 nfo, Node: Swep │ │ │ │ │ +00005c80: 7420 6f62 6a65 6374 732c 2020 5072 6576 t objects, Prev │ │ │ │ │ +00005c90: 3a20 5265 7065 6174 6564 206f 626a 6563 : Repeated objec │ │ │ │ │ +00005ca0: 7473 2c20 2055 703a 2049 6e74 726f 6475 ts, Up: Introdu │ │ │ │ │ +00005cb0: 6374 696f 6e20 6279 2065 7861 6d70 6c65 ction by example │ │ │ │ │ +00005cc0: 0a0a 322e 3720 5377 6570 7420 6f62 6a65 ..2.7 Swept obje │ │ │ │ │ +00005cd0: 6374 730a 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d cts.============ │ │ │ │ │ +00005ce0: 3d3d 3d3d 3d0a 0a4d 616e 7920 6661 6d69 =====..Many fami │ │ │ │ │ +00005cf0: 6c69 6172 2073 6861 7065 7320 6361 6e20 liar shapes can │ │ │ │ │ +00005d00: 6265 2067 656e 6572 6174 6564 2062 7920 be generated by │ │ │ │ │ +00005d10: 7377 6565 7069 6e67 2073 696d 706c 6572 sweeping simpler │ │ │ │ │ +00005d20: 206f 6e65 7320 7468 726f 7567 680a 7370 ones through.sp │ │ │ │ │ +00005d30: 6163 6520 616e 6420 636f 6e73 6964 6572 ace and consider │ │ │ │ │ +00005d40: 696e 6720 7468 6520 7265 7375 6c74 696e ing the resultin │ │ │ │ │ +00005d50: 6720 7061 7468 2c20 7375 7266 6163 652c g path, surface, │ │ │ │ │ +00005d60: 206f 7220 766f 6c75 6d65 2e20 20e2 8098 or volume. ... │ │ │ │ │ +00005d70: 536b 6574 6368 e280 990a 696d 706c 656d Sketch....implem │ │ │ │ │ +00005d80: 656e 7473 2074 6869 7320 6964 6561 2069 ents this idea i │ │ │ │ │ +00005d90: 6e20 7468 6520 7377 6565 7020 636f 6d6d n the sweep comm │ │ │ │ │ +00005da0: 616e 642e 0a20 2064 6566 206e 5f73 6567 and.. def n_seg │ │ │ │ │ +00005db0: 7320 380a 2020 7377 6565 7020 7b20 6e5f s 8. sweep { n_ │ │ │ │ │ +00005dc0: 7365 6773 2c20 726f 7461 7465 2831 3830 segs, rotate(180 │ │ │ │ │ +00005dd0: 202f 206e 5f73 6567 732c 2028 302c 302c / n_segs, (0,0, │ │ │ │ │ +00005de0: 3029 2c20 5b30 2c30 2c31 5d29 207d 2028 0), [0,0,1]) } ( │ │ │ │ │ +00005df0: 312c 302c 3029 0a54 6869 7320 636f 6465 1,0,0).This code │ │ │ │ │ +00005e00: 2073 7765 6570 7320 7468 6520 706f 696e sweeps the poin │ │ │ │ │ +00005e10: 7420 2831 2c30 2c30 2920 6569 6768 7420 t (1,0,0) eight │ │ │ │ │ +00005e20: 7469 6d65 7320 6279 2072 6f74 6174 696e times by rotatin │ │ │ │ │ +00005e30: 6720 6974 2031 3830 2f38 203d 0a32 322e g it 180/8 =.22. │ │ │ │ │ +00005e40: 3520 6465 6772 6565 7320 6561 6368 2074 5 degrees each t │ │ │ │ │ +00005e50: 696d 6520 616e 6420 636f 6e6e 6563 7469 ime and connecti │ │ │ │ │ +00005e60: 6e67 2074 6865 2072 6573 756c 7469 6e67 ng the resulting │ │ │ │ │ +00005e70: 2070 6f69 6e74 7320 7769 7468 206c 696e points with lin │ │ │ │ │ +00005e80: 650a 7365 676d 656e 7473 2e20 2054 6865 e.segments. The │ │ │ │ │ +00005e90: 2064 6566 2075 7365 6420 6865 7265 2069 def used here i │ │ │ │ │ +00005ea0: 7320 6120 e280 9c73 6361 6c61 72e2 809d s a ...scalar... │ │ │ │ │ +00005eb0: 2064 6566 696e 6974 696f 6e2e 2020 5265 definition. Re │ │ │ │ │ +00005ec0: 6665 7265 6e63 6573 2074 6f0a 7363 616c ferences to.scal │ │ │ │ │ +00005ed0: 6172 7320 6861 7665 206e 6f20 656e 636c ars have no encl │ │ │ │ │ +00005ee0: 6f73 696e 6720 6272 6163 6b65 7473 2061 osing brackets a │ │ │ │ │ +00005ef0: 7420 616c 6c2e 0a0a 2a20 4d65 6e75 3a0a t all...* Menu:. │ │ │ │ │ +00005f00: 0a2a 2050 6f69 6e74 2073 7765 6570 733a .* Point sweeps: │ │ │ │ │ +00005f10: 3a20 2020 2020 2020 2020 2020 2020 2020 : │ │ │ │ │ +00005f20: 2053 7765 7074 2070 6f69 6e74 7320 6d61 Swept points ma │ │ │ │ │ +00005f30: 6b65 206c 696e 6573 2061 6e64 2070 6f6c ke lines and pol │ │ │ │ │ +00005f40: 7967 6f6e 732e 0a2a 2050 6f6c 796c 696e ygons..* Polylin │ │ │ │ │ +00005f50: 6520 7377 6565 7073 3a3a 2020 2020 2020 e sweeps:: │ │ │ │ │ +00005f60: 2020 2020 2020 2053 7765 7074 206c 696e Swept lin │ │ │ │ │ +00005f70: 6573 206d 616b 6520 7375 7266 6163 6573 es make surfaces │ │ │ │ │ +00005f80: 2e0a 2a20 4e65 7374 6564 2073 7765 6570 ..* Nested sweep │ │ │ │ │ +00005f90: 733a 3a20 2020 2020 2020 2020 2020 2020 s:: │ │ │ │ │ +00005fa0: 2020 5377 6570 7420 7377 6565 7073 2061 Swept sweeps a │ │ │ │ │ +00005fb0: 7265 2075 7365 6675 6c21 0a2a 2050 6f6c re useful!.* Pol │ │ │ │ │ +00005fc0: 7967 6f6e 2073 7765 6570 733a 3a20 2020 ygon sweeps:: │ │ │ │ │ +00005fd0: 2020 2020 2020 2020 2020 2053 7765 7074 Swept │ │ │ │ │ +00005fe0: 2070 6f6c 7967 6f6e 7320 6d61 6b65 2073 polygons make s │ │ │ │ │ +00005ff0: 6f6c 6964 732e 2e2e 0a2a 2050 6f6c 796c olids....* Polyl │ │ │ │ │ +00006000: 696e 6520 7377 6565 7073 2077 6974 6820 ine sweeps with │ │ │ │ │ +00006010: 636c 6f73 7572 653a 3a20 2061 6e64 2073 closure:: and s │ │ │ │ │ +00006020: 6f20 646f 2063 6c6f 7365 6420 706f 6c79 o do closed poly │ │ │ │ │ +00006030: 6c69 6e65 2073 7765 6570 732e 0a2a 2041 line sweeps..* A │ │ │ │ │ +00006040: 6666 696e 6520 6172 6974 686d 6574 6963 ffine arithmetic │ │ │ │ │ +00006050: 3a3a 2020 2020 2020 2020 2020 2053 6b65 :: Ske │ │ │ │ │ +00006060: 7463 6820 7573 6566 756c 206d 6174 6820 tch useful math │ │ │ │ │ +00006070: 6578 7072 6573 7369 6f6e 2e0a 2a20 4d6f expression..* Mo │ │ │ │ │ +00006080: 7265 2074 6f20 6c65 6172 6e3a 3a20 2020 re to learn:: │ │ │ │ │ +00006090: 2020 2020 2020 2020 2020 2020 4368 6563 Chec │ │ │ │ │ +000060a0: 6b20 6f75 7420 7468 6520 4d6f 6269 7573 k out the Mobius │ │ │ │ │ +000060b0: 2073 7472 6970 210a 0a1f 0a46 696c 653a strip!....File: │ │ │ │ │ +000060c0: 2073 6b65 7463 682e 696e 666f 2c20 204e sketch.info, N │ │ │ │ │ +000060d0: 6f64 653a 2050 6f69 6e74 2073 7765 6570 ode: Point sweep │ │ │ │ │ +000060e0: 732c 2020 4e65 7874 3a20 506f 6c79 6c69 s, Next: Polyli │ │ │ │ │ +000060f0: 6e65 2073 7765 6570 732c 2020 5072 6576 ne sweeps, Prev │ │ │ │ │ +00006100: 3a20 5377 6570 7420 6f62 6a65 6374 732c : Swept objects, │ │ │ │ │ +00006110: 2020 5570 3a20 5377 6570 7420 6f62 6a65 Up: Swept obje │ │ │ │ │ +00006120: 6374 730a 0a32 2e37 2e31 2050 6f69 6e74 cts..2.7.1 Point │ │ │ │ │ +00006130: 2073 7765 6570 730a 2d2d 2d2d 2d2d 2d2d sweeps.-------- │ │ │ │ │ +00006140: 2d2d 2d2d 2d2d 2d2d 2d2d 0a0a 5377 6565 ----------..Swee │ │ │ │ │ +00006150: 7069 6e67 2061 2070 6f69 6e74 206d 616b ping a point mak │ │ │ │ │ +00006160: 6573 2061 206f 6e65 2d64 696d 656e 7369 es a one-dimensi │ │ │ │ │ +00006170: 6f6e 616c 2070 6174 682c 2077 6869 6368 onal path, which │ │ │ │ │ +00006180: 2069 7320 6120 706f 6c79 6c69 6e65 2e0a is a polyline.. │ │ │ │ │ +00006190: 5369 6e63 6520 7765 2068 6176 6520 7377 Since we have sw │ │ │ │ │ +000061a0: 6570 7420 7769 7468 2061 2072 6f74 6174 ept with a rotat │ │ │ │ │ +000061b0: 696f 6e2c 2074 6865 2072 6573 756c 7420 ion, the result │ │ │ │ │ +000061c0: 6973 2061 2063 6972 6375 6c61 7220 6172 is a circular ar │ │ │ │ │ +000061d0: 632e 2020 4865 7265 0a69 7320 7768 6174 c. Here.is what │ │ │ │ │ +000061e0: 2069 7420 6c6f 6f6b 7320 6c69 6b65 2e0a it looks like.. │ │ │ │ │ +000061f0: 0a00 085b 696d 6167 6520 7372 633d 2265 ...[image src="e │ │ │ │ │ +00006200: 7830 3730 2e70 6e67 2220 7465 7874 3d22 x070.png" text=" │ │ │ │ │ +00006210: 496d 6167 6520 6578 3037 3020 6f6d 6974 Image ex070 omit │ │ │ │ │ +00006220: 7465 6420 696e 2074 6578 7420 7665 7273 ted in text vers │ │ │ │ │ +00006230: 696f 6e20 6f66 2074 6869 7320 646f 6375 ion of this docu │ │ │ │ │ +00006240: 6d65 6e74 2e22 0008 5d0a 0a20 2020 5468 ment."..].. Th │ │ │ │ │ +00006250: 6973 2069 7320 7468 6520 6669 7273 7420 is is the first │ │ │ │ │ +00006260: 6578 616d 706c 6520 7765 2068 6176 6520 example we have │ │ │ │ │ +00006270: 7365 656e 206f 6620 e280 9873 6b65 7463 seen of ...sketc │ │ │ │ │ +00006280: 68e2 8099 2061 7269 7468 6d65 7469 632e h... arithmetic. │ │ │ │ │ +00006290: 2020 5468 650a 6578 7072 6573 7369 6f6e The.expression │ │ │ │ │ +000062a0: 2031 3830 202f 206e 5f73 6567 7320 6361 180 / n_segs ca │ │ │ │ │ +000062b0: 7573 6573 2074 6865 2065 6967 6874 2072 uses the eight r │ │ │ │ │ +000062c0: 6f74 6174 696f 6e73 2074 6f20 6164 6420 otations to add │ │ │ │ │ +000062d0: 746f 2031 3830 2e20 2049 660a 796f 7527 to 180. If.you' │ │ │ │ │ +000062e0: 7265 2070 6179 696e 6720 6174 7465 6e74 re paying attent │ │ │ │ │ +000062f0: 696f 6e2c 2079 6f75 276c 6c20 6861 7665 ion, you'll have │ │ │ │ │ +00006300: 2061 6c72 6561 6479 206e 6f74 6564 2074 already noted t │ │ │ │ │ +00006310: 6861 7420 7468 6572 6520 6172 6520 5f6e hat there are _n │ │ │ │ │ +00006320: 696e 655f 0a70 6f69 6e74 732c 2070 726f ine_.points, pro │ │ │ │ │ +00006330: 6475 6369 6e67 2065 6967 6874 206c 696e ducing eight lin │ │ │ │ │ +00006340: 6520 7365 676d 656e 7473 2e0a 0a20 2020 e segments... │ │ │ │ │ +00006350: 596f 7520 6361 6e20 6361 7573 6520 7468 You can cause th │ │ │ │ │ +00006360: 6520 7377 6570 7420 706f 696e 7420 746f e swept point to │ │ │ │ │ +00006370: 2067 656e 6572 6174 6520 6120 7369 6e67 generate a sing │ │ │ │ │ +00006380: 6c65 2070 6f6c 7967 6f6e 2072 6174 6865 le polygon rathe │ │ │ │ │ +00006390: 720a 7468 616e 2061 2070 6f6c 796c 696e r.than a polylin │ │ │ │ │ +000063a0: 6520 6279 2075 7369 6e67 2074 6865 20e2 e by using the . │ │ │ │ │ +000063b0: 809c 636c 6f73 7572 6520 7461 67e2 809d ..closure tag... │ │ │ │ │ +000063c0: 203c 3e20 6166 7465 7220 7468 6520 6e75 <> after the nu │ │ │ │ │ +000063d0: 6d62 6572 206f 6620 7377 6570 740a 6f62 mber of swept.ob │ │ │ │ │ +000063e0: 6a65 6374 732e 2020 436f 6465 2061 6e64 jects. Code and │ │ │ │ │ +000063f0: 2072 6573 756c 7420 666f 6c6c 6f77 0a20 result follow. │ │ │ │ │ +00006400: 2064 6566 206e 5f73 6567 7320 380a 2020 def n_segs 8. │ │ │ │ │ +00006410: 7377 6565 7020 7b20 6e5f 7365 6773 3c3e sweep { n_segs<> │ │ │ │ │ +00006420: 2c20 726f 7461 7465 2831 3830 202f 206e , rotate(180 / n │ │ │ │ │ +00006430: 5f73 6567 732c 2028 302c 302c 3029 2c20 _segs, (0,0,0), │ │ │ │ │ +00006440: 5b30 2c30 2c31 5d29 207d 2028 312c 302c [0,0,1]) } (1,0, │ │ │ │ │ +00006450: 3029 0a00 085b 696d 6167 6520 7372 633d 0)...[image src= │ │ │ │ │ +00006460: 2265 7830 3830 2e70 6e67 2220 7465 7874 "ex080.png" text │ │ │ │ │ +00006470: 3d22 496d 6167 6520 6578 3038 3020 6f6d ="Image ex080 om │ │ │ │ │ +00006480: 6974 7465 6420 696e 2074 6578 7420 7665 itted in text ve │ │ │ │ │ +00006490: 7273 696f 6e20 6f66 2074 6869 7320 646f rsion of this do │ │ │ │ │ +000064a0: 6375 6d65 6e74 2e22 0008 5d0a 0a1f 0a46 cument."..]....F │ │ │ │ │ +000064b0: 696c 653a 2073 6b65 7463 682e 696e 666f ile: sketch.info │ │ │ │ │ +000064c0: 2c20 204e 6f64 653a 2050 6f6c 796c 696e , Node: Polylin │ │ │ │ │ +000064d0: 6520 7377 6565 7073 2c20 204e 6578 743a e sweeps, Next: │ │ │ │ │ +000064e0: 204e 6573 7465 6420 7377 6565 7073 2c20 Nested sweeps, │ │ │ │ │ +000064f0: 2050 7265 763a 2050 6f69 6e74 2073 7765 Prev: Point swe │ │ │ │ │ +00006500: 6570 732c 2020 5570 3a20 5377 6570 7420 eps, Up: Swept │ │ │ │ │ +00006510: 6f62 6a65 6374 730a 0a32 2e37 2e32 2050 objects..2.7.2 P │ │ │ │ │ +00006520: 6f6c 796c 696e 6520 7377 6565 7073 0a2d olyline sweeps.- │ │ │ │ │ +00006530: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ +00006540: 2d2d 2d2d 0a0a 5377 6565 7069 6e67 2061 ----..Sweeping a │ │ │ │ │ +00006550: 2070 6f6c 796c 696e 6520 7072 6f64 7563 polyline produc │ │ │ │ │ +00006560: 6573 2061 2073 7572 6661 6365 2063 6f6d es a surface com │ │ │ │ │ +00006570: 706f 7365 6420 6f66 206d 616e 7920 6661 posed of many fa │ │ │ │ │ +00006580: 6365 732e 2020 5468 650a 756e 6272 6f6b ces. The.unbrok │ │ │ │ │ +00006590: 656e 2068 656c 6978 2069 6e20 7468 6520 en helix in the │ │ │ │ │ +000065a0: 6578 616d 706c 6520 2a6e 6f74 6520 4865 example *note He │ │ │ │ │ +000065b0: 6c69 7820 7769 7468 2063 756c 6c20 7365 lix with cull se │ │ │ │ │ +000065c0: 7420 6661 6c73 6520 7468 656e 0a74 7275 t false then.tru │ │ │ │ │ +000065d0: 653a 3a20 6973 2070 726f 6475 6365 6420 e:: is produced │ │ │ │ │ +000065e0: 6279 2074 6869 7320 636f 6465 2028 706c by this code (pl │ │ │ │ │ +000065f0: 7573 2061 2073 7572 726f 756e 6469 6e67 us a surrounding │ │ │ │ │ +00006600: 2070 7574 2072 6f74 6174 696f 6e20 746f put rotation to │ │ │ │ │ +00006610: 206d 616b 650a 616e 2069 6e74 6572 6573 make.an interes │ │ │ │ │ +00006620: 7469 6e67 2076 6965 773b 2074 6869 7320 ting view; this │ │ │ │ │ +00006630: 6861 7320 6265 656e 206f 6d69 7474 6564 has been omitted │ │ │ │ │ +00006640: 292e 0a20 2064 6566 204b 205b 302c 302c ).. def K [0,0, │ │ │ │ │ +00006650: 315d 0a20 2073 7765 6570 5b63 756c 6c3d 1]. sweep[cull= │ │ │ │ │ +00006660: 6661 6c73 655d 207b 0a20 2020 2036 302c false] {. 60, │ │ │ │ │ +00006670: 200a 2020 2020 726f 7461 7465 2831 302c . rotate(10, │ │ │ │ │ +00006680: 2028 302c 302c 3029 2c20 5b4b 5d29 2074 (0,0,0), [K]) t │ │ │ │ │ +00006690: 6865 6e20 7472 616e 736c 6174 6528 312f hen translate(1/ │ │ │ │ │ +000066a0: 3620 2a20 5b4b 5d29 200a 2020 7d20 6c69 6 * [K]) . } li │ │ │ │ │ +000066b0: 6e65 5b6c 696e 6577 6964 7468 3d32 7074 ne[linewidth=2pt │ │ │ │ │ +000066c0: 5d28 2d31 2c30 2928 312c 3029 0a41 6761 ](-1,0)(1,0).Aga │ │ │ │ │ +000066d0: 696e 2c20 3630 2073 6567 6d65 6e74 7320 in, 60 segments │ │ │ │ │ +000066e0: 6f66 2074 6865 2068 656c 6978 2061 7265 of the helix are │ │ │ │ │ +000066f0: 2070 726f 6475 6365 6420 6279 2063 6f6e produced by con │ │ │ │ │ +00006700: 6e65 6374 696e 6720 3631 2069 6e73 7461 necting 61 insta │ │ │ │ │ +00006710: 6e63 6573 0a6f 6620 7468 6520 7377 6570 nces.of the swep │ │ │ │ │ +00006720: 7420 6c69 6e65 2e20 204f 7074 696f 6e73 t line. Options │ │ │ │ │ +00006730: 2061 7070 6c69 6564 2074 6f20 7468 6520 applied to the │ │ │ │ │ +00006740: 7377 6565 702c 2068 6572 6520 6375 6c6c sweep, here cull │ │ │ │ │ +00006750: 3d66 616c 7365 2c20 6172 650a 7472 6561 =false, are.trea │ │ │ │ │ +00006760: 7465 6420 6173 206f 7074 696f 6e73 2066 ted as options f │ │ │ │ │ +00006770: 6f72 2074 6865 2067 656e 6572 6174 6564 or the generated │ │ │ │ │ +00006780: 2070 6f6c 7967 6f6e 206f 7220 706f 6c79 polygon or poly │ │ │ │ │ +00006790: 6c69 6e65 2e20 204f 7074 696f 6e73 206f line. Options o │ │ │ │ │ +000067a0: 660a 7468 6520 7377 6570 7420 6c69 6e65 f.the swept line │ │ │ │ │ +000067b0: 2069 7473 656c 662c 2068 6572 6520 6c69 itself, here li │ │ │ │ │ +000067c0: 6e65 7769 6474 683d 3270 742c 2061 7265 newidth=2pt, are │ │ │ │ │ +000067d0: 2069 676e 6f72 6564 2c20 7468 6f75 6768 ignored, though │ │ │ │ │ +000067e0: 2077 6974 6820 610a 7761 726e 696e 672e with a.warning. │ │ │ │ │ +000067f0: 2020 5468 6973 2064 6566 2069 7320 6120 This def is a │ │ │ │ │ +00006800: e280 9c76 6563 746f 72e2 809d 2064 6566 ...vector... def │ │ │ │ │ +00006810: 696e 6974 696f 6e2c 2077 6869 6368 206d inition, which m │ │ │ │ │ +00006820: 7573 7420 6265 2072 6566 6572 656e 6365 ust be reference │ │ │ │ │ +00006830: 640a 7769 7468 2073 7175 6172 6520 6272 d.with square br │ │ │ │ │ +00006840: 6163 6b65 7473 2c20 652e 672e 205b 666f ackets, e.g. [fo │ │ │ │ │ +00006850: 6f5d 2e0a 0a1f 0a46 696c 653a 2073 6b65 o].....File: ske │ │ │ │ │ +00006860: 7463 682e 696e 666f 2c20 204e 6f64 653a tch.info, Node: │ │ │ │ │ +00006870: 204e 6573 7465 6420 7377 6565 7073 2c20 Nested sweeps, │ │ │ │ │ +00006880: 204e 6578 743a 2050 6f6c 7967 6f6e 2073 Next: Polygon s │ │ │ │ │ +00006890: 7765 6570 732c 2020 5072 6576 3a20 506f weeps, Prev: Po │ │ │ │ │ +000068a0: 6c79 6c69 6e65 2073 7765 6570 732c 2020 lyline sweeps, │ │ │ │ │ +000068b0: 5570 3a20 5377 6570 7420 6f62 6a65 6374 Up: Swept object │ │ │ │ │ +000068c0: 730a 0a32 2e37 2e33 204e 6573 7465 6420 s..2.7.3 Nested │ │ │ │ │ +000068d0: 7377 6565 7073 0a2d 2d2d 2d2d 2d2d 2d2d sweeps.--------- │ │ │ │ │ +000068e0: 2d2d 2d2d 2d2d 2d2d 2d2d 0a0a 5768 656e ----------..When │ │ │ │ │ +000068f0: 2074 6865 2063 656e 7465 7220 706f 696e the center poin │ │ │ │ │ +00006900: 7420 6f66 2072 6f74 6174 696f 6e20 6973 t of rotation is │ │ │ │ │ +00006910: 206f 6d69 7474 6564 2c20 7468 6520 6f72 omitted, the or │ │ │ │ │ +00006920: 6967 696e 2069 7320 6173 7375 6d65 642e igin is assumed. │ │ │ │ │ +00006930: 0a57 6865 6e20 6120 706f 696e 7420 6861 .When a point ha │ │ │ │ │ +00006940: 7320 6f6e 6c79 2074 776f 2063 6f6f 7264 s only two coord │ │ │ │ │ +00006950: 696e 6174 6573 2c20 7468 6579 2061 7265 inates, they are │ │ │ │ │ +00006960: 2074 616b 656e 2061 7320 7820 616e 6420 taken as x and │ │ │ │ │ +00006970: 792c 2077 6974 680a 7a3d 3020 6173 7375 y, with.z=0 assu │ │ │ │ │ +00006980: 6d65 642e 2020 4120 746f 726f 6964 2069 med. A toroid i │ │ │ │ │ +00006990: 7320 7468 6572 6566 6f72 6520 6f62 7461 s therefore obta │ │ │ │ │ +000069a0: 696e 6564 2077 6974 6820 7468 6973 2063 ined with this c │ │ │ │ │ +000069b0: 6f64 652e 0a20 2064 6566 206e 5f74 6f72 ode.. def n_tor │ │ │ │ │ +000069c0: 6f69 645f 7365 6773 2032 3020 2020 6465 oid_segs 20 de │ │ │ │ │ +000069d0: 6620 6e5f 6369 7263 6c65 5f73 6567 7320 f n_circle_segs │ │ │ │ │ +000069e0: 3136 0a20 2064 6566 2072 5f6d 696e 6f72 16. def r_minor │ │ │ │ │ +000069f0: 2031 2020 2020 2020 2020 2020 6465 6620 1 def │ │ │ │ │ +00006a00: 725f 6d61 6a6f 7220 312e 350a 2020 7377 r_major 1.5. sw │ │ │ │ │ +00006a10: 6565 7020 7b20 6e5f 746f 726f 6964 5f73 eep { n_toroid_s │ │ │ │ │ +00006a20: 6567 732c 2072 6f74 6174 6528 3336 3020 egs, rotate(360 │ │ │ │ │ +00006a30: 2f20 6e5f 746f 726f 6964 5f73 6567 732c / n_toroid_segs, │ │ │ │ │ +00006a40: 205b 302c 312c 305d 2920 7d0a 2020 2020 [0,1,0]) }. │ │ │ │ │ +00006a50: 7377 6565 7020 7b20 6e5f 6369 7263 6c65 sweep { n_circle │ │ │ │ │ +00006a60: 5f73 6567 732c 2072 6f74 6174 6528 3336 _segs, rotate(36 │ │ │ │ │ +00006a70: 3020 2f20 6e5f 6369 7263 6c65 5f73 6567 0 / n_circle_seg │ │ │ │ │ +00006a80: 732c 2028 725f 6d61 6a6f 722c 302c 3029 s, (r_major,0,0) │ │ │ │ │ +00006a90: 2920 7d20 0a20 2020 2020 2028 725f 6d61 ) } . (r_ma │ │ │ │ │ +00006aa0: 6a6f 7220 2b20 725f 6d69 6e6f 722c 2030 jor + r_minor, 0 │ │ │ │ │ +00006ab0: 290a 2020 2046 6f72 2069 6e74 7569 7469 ). For intuiti │ │ │ │ │ +00006ac0: 6f6e 2c20 7468 6520 6964 6561 206f 6620 on, the idea of │ │ │ │ │ +00006ad0: 7468 6520 636f 6465 2069 7320 746f 2073 the code is to s │ │ │ │ │ +00006ae0: 6b65 7463 6820 6120 6369 7263 6c65 2074 ketch a circle t │ │ │ │ │ +00006af0: 6f20 7468 650a 7269 6768 7420 6f66 2074 o the.right of t │ │ │ │ │ +00006b00: 6865 206f 7269 6769 6e20 696e 2074 6865 he origin in the │ │ │ │ │ +00006b10: 2078 792d 706c 616e 652c 2074 6865 6e20 xy-plane, then │ │ │ │ │ +00006b20: 726f 7461 7465 2074 6861 7420 6369 7263 rotate that circ │ │ │ │ │ +00006b30: 6c65 2022 6f75 7420 6f66 2074 6865 0a70 le "out of the.p │ │ │ │ │ +00006b40: 6c61 6e65 2220 6162 6f75 7420 7468 6520 lane" about the │ │ │ │ │ +00006b50: 792d 6178 6973 2074 6f20 6d61 6b65 2074 y-axis to make t │ │ │ │ │ +00006b60: 6865 2066 696e 616c 2066 6967 7572 652e he final figure. │ │ │ │ │ +00006b70: 2020 5468 6973 2070 726f 6475 6365 7320 This produces │ │ │ │ │ +00006b80: 7468 650a 666f 6c6c 6f77 696e 672e 2020 the.following. │ │ │ │ │ +00006b90: 2841 2076 6965 7720 726f 7461 7469 6f6e (A view rotation │ │ │ │ │ +00006ba0: 2061 6e64 2073 6f6d 6520 6178 6573 2068 and some axes h │ │ │ │ │ +00006bb0: 6176 6520 6265 656e 2061 6464 6564 2e29 ave been added.) │ │ │ │ │ +00006bc0: 0a0a 0008 5b69 6d61 6765 2073 7263 3d22 ....[image src=" │ │ │ │ │ +00006bd0: 6578 3039 302e 706e 6722 2074 6578 743d ex090.png" text= │ │ │ │ │ +00006be0: 2249 6d61 6765 2065 7830 3930 206f 6d69 "Image ex090 omi │ │ │ │ │ +00006bf0: 7474 6564 2069 6e20 7465 7874 2076 6572 tted in text ver │ │ │ │ │ +00006c00: 7369 6f6e 206f 6620 7468 6973 2064 6f63 sion of this doc │ │ │ │ │ +00006c10: 756d 656e 742e 2200 085d 0a0a 2020 2054 ument."..].. T │ │ │ │ │ +00006c20: 6869 7320 6578 616d 706c 6520 616c 736f his example also │ │ │ │ │ +00006c30: 2073 686f 7773 2074 6861 7420 7468 6520 shows that the │ │ │ │ │ +00006c40: 7377 6570 7420 6f62 6a65 6374 206d 6179 swept object may │ │ │ │ │ +00006c50: 2069 7473 656c 6620 6265 2061 6e6f 7468 itself be anoth │ │ │ │ │ +00006c60: 6572 0ae2 8098 7377 6565 70e2 8099 2e20 er....sweep.... │ │ │ │ │ +00006c70: 2049 6e20 6661 6374 2c20 6974 206d 6179 In fact, it may │ │ │ │ │ +00006c80: 2062 6520 5f61 6e79 5f20 e280 9873 6b65 be _any_ ...ske │ │ │ │ │ +00006c90: 7463 68e2 8099 2065 7870 7265 7373 696f tch... expressio │ │ │ │ │ +00006ca0: 6e20 7468 6174 2072 6573 756c 7473 2069 n that results i │ │ │ │ │ +00006cb0: 6e20 610a 6c69 7374 206f 6620 6f6e 6520 n a.list of one │ │ │ │ │ +00006cc0: 6f72 206d 6f72 6520 706f 696e 7473 206f or more points o │ │ │ │ │ +00006cd0: 722c 2061 6c74 6572 6e61 7465 6c79 2c20 r, alternately, │ │ │ │ │ +00006ce0: 6120 6c69 7374 206f 6620 6f6e 6520 6f72 a list of one or │ │ │ │ │ +00006cf0: 206d 6f72 650a 706f 6c79 6c69 6e65 7320 more.polylines │ │ │ │ │ +00006d00: 616e 6420 706f 6c79 676f 6e73 2e20 2054 and polygons. T │ │ │ │ │ +00006d10: 6865 206c 6174 7465 7220 6b69 6e64 206f he latter kind o │ │ │ │ │ +00006d20: 6620 6c69 7374 2063 616e 2062 6520 6372 f list can be cr │ │ │ │ │ +00006d30: 6561 7465 6420 7769 7468 2061 0a7b 207d eated with a.{ } │ │ │ │ │ +00006d40: 2d65 6e63 6c6f 7365 6420 626c 6f63 6b2c -enclosed block, │ │ │ │ │ +00006d50: 2070 6572 6861 7073 2066 6f6c 6c6f 7769 perhaps followi │ │ │ │ │ +00006d60: 6e67 2061 2070 7574 206f 7220 7265 7065 ng a put or repe │ │ │ │ │ +00006d70: 6174 2e0a 0a1f 0a46 696c 653a 2073 6b65 at.....File: ske │ │ │ │ │ +00006d80: 7463 682e 696e 666f 2c20 204e 6f64 653a tch.info, Node: │ │ │ │ │ +00006d90: 2050 6f6c 7967 6f6e 2073 7765 6570 732c Polygon sweeps, │ │ │ │ │ +00006da0: 2020 4e65 7874 3a20 506f 6c79 6c69 6e65 Next: Polyline │ │ │ │ │ +00006db0: 2073 7765 6570 7320 7769 7468 2063 6c6f sweeps with clo │ │ │ │ │ +00006dc0: 7375 7265 2c20 2050 7265 763a 204e 6573 sure, Prev: Nes │ │ │ │ │ +00006dd0: 7465 6420 7377 6565 7073 2c20 2055 703a ted sweeps, Up: │ │ │ │ │ +00006de0: 2053 7765 7074 206f 626a 6563 7473 0a0a Swept objects.. │ │ │ │ │ +00006df0: 322e 372e 3420 506f 6c79 676f 6e20 7377 2.7.4 Polygon sw │ │ │ │ │ +00006e00: 6565 7073 0a2d 2d2d 2d2d 2d2d 2d2d 2d2d eeps.----------- │ │ │ │ │ +00006e10: 2d2d 2d2d 2d2d 2d2d 2d0a 0a53 7765 6570 ---------..Sweep │ │ │ │ │ +00006e20: 696e 6720 6120 706f 6c79 676f 6e20 6372 ing a polygon cr │ │ │ │ │ +00006e30: 6561 7465 7320 6120 636c 6f73 6564 2073 eates a closed s │ │ │ │ │ +00006e40: 7572 6661 6365 2077 6974 6820 706f 6c79 urface with poly │ │ │ │ │ +00006e50: 676f 6e73 2061 7420 7468 6520 656e 6473 gons at the ends │ │ │ │ │ +00006e60: 2c0a 7768 6963 6820 6172 6520 6a75 7374 ,.which are just │ │ │ │ │ +00006e70: 2063 6f70 6965 7320 6f66 2074 6865 206f copies of the o │ │ │ │ │ +00006e80: 7269 6769 6e61 6c2c 2061 7070 726f 7072 riginal, appropr │ │ │ │ │ +00006e90: 6961 7465 6c79 2070 6f73 6974 696f 6e65 iately positione │ │ │ │ │ +00006ea0: 642e 2020 2a4e 6f74 650a 536f 6c69 6420 d. *Note.Solid │ │ │ │ │ +00006eb0: 636f 696c 2065 7861 6d70 6c65 3a3a 2e20 coil example::. │ │ │ │ │ +00006ec0: 204f 7074 696f 6e73 206f 6e20 7468 6520 Options on the │ │ │ │ │ +00006ed0: 7377 6570 7420 706f 6c79 676f 6e2c 2069 swept polygon, i │ │ │ │ │ +00006ee0: 6620 7468 6579 2065 7869 7374 2c20 6172 f they exist, ar │ │ │ │ │ +00006ef0: 650a 6170 706c 6965 6420 746f 2074 6865 e.applied to the │ │ │ │ │ +00006f00: 2065 6e64 732e 2020 4f74 6865 7277 6973 ends. Otherwis │ │ │ │ │ +00006f10: 6520 7468 6520 7377 6565 7020 6f70 7469 e the sweep opti │ │ │ │ │ +00006f20: 6f6e 7320 6172 6520 7573 6564 2074 6872 ons are used thr │ │ │ │ │ +00006f30: 6f75 6768 6f75 742e 0a0a 1f0a 4669 6c65 oughout.....File │ │ │ │ │ +00006f40: 3a20 736b 6574 6368 2e69 6e66 6f2c 2020 : sketch.info, │ │ │ │ │ +00006f50: 4e6f 6465 3a20 506f 6c79 6c69 6e65 2073 Node: Polyline s │ │ │ │ │ +00006f60: 7765 6570 7320 7769 7468 2063 6c6f 7375 weeps with closu │ │ │ │ │ +00006f70: 7265 2c20 204e 6578 743a 2041 6666 696e re, Next: Affin │ │ │ │ │ +00006f80: 6520 6172 6974 686d 6574 6963 2c20 2050 e arithmetic, P │ │ │ │ │ +00006f90: 7265 763a 2050 6f6c 7967 6f6e 2073 7765 rev: Polygon swe │ │ │ │ │ +00006fa0: 6570 732c 2020 5570 3a20 5377 6570 7420 eps, Up: Swept │ │ │ │ │ +00006fb0: 6f62 6a65 6374 730a 0a32 2e37 2e35 2050 objects..2.7.5 P │ │ │ │ │ +00006fc0: 6f6c 796c 696e 6520 7377 6565 7073 2077 olyline sweeps w │ │ │ │ │ +00006fd0: 6974 6820 636c 6f73 7572 650a 2d2d 2d2d ith closure.---- │ │ │ │ │ 00006fe0: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ -00006ff0: 2d2d 2d2d 2d2d 2d2d 0a0a 4120 706f 6c79 --------..A poly │ │ │ │ │ -00007000: 6c69 6e65 2073 7765 6570 2077 6974 6820 line sweep with │ │ │ │ │ -00007010: 6120 636c 6f73 7572 6520 7461 6720 6372 a closure tag cr │ │ │ │ │ -00007020: 6561 7465 7320 616e 6f74 6865 7220 6b69 eates another ki │ │ │ │ │ -00007030: 6e64 206f 6620 636c 6f73 6564 0a73 7572 nd of closed.sur │ │ │ │ │ -00007040: 6661 6365 2e20 2046 6972 7374 2c20 7468 face. First, th │ │ │ │ │ -00007050: 6520 706f 6c79 6c69 6e65 2073 6567 6d65 e polyline segme │ │ │ │ │ -00007060: 6e74 7320 6172 6520 636f 6e6e 6563 7465 nts are connecte │ │ │ │ │ -00007070: 6420 6279 2066 6163 6573 2c20 6a75 7374 d by faces, just │ │ │ │ │ -00007080: 2061 730a 7769 7468 6f75 7420 7468 6520 as.without the │ │ │ │ │ -00007090: 636c 6f73 7572 6520 7461 672e 2020 5468 closure tag. Th │ │ │ │ │ -000070a0: 656e 2c20 6561 6368 2073 6574 206f 6620 en, each set of │ │ │ │ │ -000070b0: 656e 6420 706f 696e 7473 2069 7320 6a6f end points is jo │ │ │ │ │ -000070c0: 696e 6564 2074 6f20 6d61 6b65 0a61 2070 ined to make.a p │ │ │ │ │ -000070d0: 6f6c 7967 6f6e 2c20 6f6e 6520 666f 7220 olygon, one for │ │ │ │ │ -000070e0: 6561 6368 2065 6e64 2e20 2041 2063 6f64 each end. A cod │ │ │ │ │ -000070f0: 6520 666f 7220 7365 7665 7261 6c20 7669 e for several vi │ │ │ │ │ -00007100: 6577 7320 6f66 2061 2063 796c 696e 6472 ews of a cylindr │ │ │ │ │ -00007110: 6963 616c 0a70 7269 736d 2066 6f6c 6c6f ical.prism follo │ │ │ │ │ -00007120: 7773 2e0a 2020 6465 6620 6e5f 6379 6c5f ws.. def n_cyl_ │ │ │ │ │ -00007130: 7365 6773 2032 3020 2064 6566 206e 5f76 segs 20 def n_v │ │ │ │ │ -00007140: 6965 7773 2035 2020 6465 6620 4920 5b31 iews 5 def I [1 │ │ │ │ │ -00007150: 2c30 2c30 5d0a 2020 6465 6620 656e 646f ,0,0]. def endo │ │ │ │ │ -00007160: 7074 7320 5b66 696c 6c63 6f6c 6f72 3d6c pts [fillcolor=l │ │ │ │ │ -00007170: 6967 6874 6772 6179 5d0a 2020 7265 7065 ightgray]. repe │ │ │ │ │ -00007180: 6174 207b 206e 5f76 6965 7773 2c20 726f at { n_views, ro │ │ │ │ │ -00007190: 7461 7465 2831 3830 2f6e 5f76 6965 7773 tate(180/n_views │ │ │ │ │ -000071a0: 2c20 5b49 5d29 2074 6865 6e20 7472 616e , [I]) then tran │ │ │ │ │ -000071b0: 736c 6174 6528 5b49 5d20 2a20 322e 3129 slate([I] * 2.1) │ │ │ │ │ -000071c0: 207d 200a 2020 2020 7377 6565 705b 656e } . sweep[en │ │ │ │ │ -000071d0: 646f 7074 735d 7b20 6e5f 6379 6c5f 7365 dopts]{ n_cyl_se │ │ │ │ │ -000071e0: 6773 3c3e 2c20 726f 7461 7465 2833 3630 gs<>, rotate(360 │ │ │ │ │ -000071f0: 2f6e 5f63 796c 5f73 6567 732c 205b 302c /n_cyl_segs, [0, │ │ │ │ │ -00007200: 312c 305d 2920 7d20 0a20 2020 2020 206c 1,0]) } . l │ │ │ │ │ -00007210: 696e 655b 6669 6c6c 636f 6c6f 723d 7768 ine[fillcolor=wh │ │ │ │ │ -00007220: 6974 655d 2831 2c2d 3129 2831 2c31 290a ite](1,-1)(1,1). │ │ │ │ │ -00007230: 4974 2070 726f 6475 6365 7320 7468 6973 It produces this │ │ │ │ │ -00007240: 2064 7261 7769 6e67 2e0a 0a00 085b 696d drawing.....[im │ │ │ │ │ -00007250: 6167 6520 7372 633d 2265 7831 3130 2e70 age src="ex110.p │ │ │ │ │ -00007260: 6e67 2220 7465 7874 3d22 496d 6167 6520 ng" text="Image │ │ │ │ │ -00007270: 6578 3131 3020 6f6d 6974 7465 6420 696e ex110 omitted in │ │ │ │ │ -00007280: 2074 6578 7420 7665 7273 696f 6e20 6f66 text version of │ │ │ │ │ -00007290: 2074 6869 7320 646f 6375 6d65 6e74 2e22 this document." │ │ │ │ │ -000072a0: 0008 5d0a 0a54 6865 206f 7074 696f 6e73 ..]..The options │ │ │ │ │ -000072b0: 206f 6620 7468 6520 7377 6570 7420 6c69 of the swept li │ │ │ │ │ -000072c0: 6e65 2c20 6966 2061 6e79 2c20 6172 6520 ne, if any, are │ │ │ │ │ -000072d0: 6170 706c 6965 6420 746f 2074 6865 2066 applied to the f │ │ │ │ │ -000072e0: 6163 6573 2070 726f 6475 6365 640a 6279 aces produced.by │ │ │ │ │ -000072f0: 2073 7765 6570 696e 6720 7468 6520 6c69 sweeping the li │ │ │ │ │ -00007300: 6e65 2c20 6275 7420 6e6f 7420 7468 6520 ne, but not the │ │ │ │ │ -00007310: 656e 6420 706f 6c79 676f 6e73 2e20 204f end polygons. O │ │ │ │ │ -00007320: 7468 6572 7769 7365 2c20 7468 6520 7377 therwise, the sw │ │ │ │ │ -00007330: 6565 700a 6f70 7469 6f6e 7320 6172 6520 eep.options are │ │ │ │ │ -00007340: 6170 706c 6965 6420 7468 726f 7567 686f applied througho │ │ │ │ │ -00007350: 7574 2e20 2054 6865 2064 6566 2069 6e20 ut. The def in │ │ │ │ │ -00007360: 7468 6973 2065 7861 6d70 6c65 2069 7320 this example is │ │ │ │ │ -00007370: 616e 20e2 809c 6f70 7469 6f6e e280 9d0a an ...option.... │ │ │ │ │ -00007380: 6465 6669 6e69 7469 6f6e 2e20 2052 6566 definition. Ref │ │ │ │ │ -00007390: 6572 656e 6365 7320 746f 206f 7074 696f erences to optio │ │ │ │ │ -000073a0: 6e73 206d 7573 7420 6265 2065 6e63 6c6f ns must be enclo │ │ │ │ │ -000073b0: 7365 6420 696e 2073 7175 6172 6520 6272 sed in square br │ │ │ │ │ -000073c0: 6163 6b65 7473 2c0a 652e 672e 2020 205b ackets,.e.g. [ │ │ │ │ │ -000073d0: 666f 6f5d 2e20 2059 6f75 2063 616e 2063 foo]. You can c │ │ │ │ │ -000073e0: 6f6e 6361 7465 6e61 7465 2073 6576 6572 oncatenate sever │ │ │ │ │ -000073f0: 616c 2073 6574 7320 6f66 206f 7074 696f al sets of optio │ │ │ │ │ -00007400: 6e73 2077 6974 6820 6120 7369 6e67 6c65 ns with a single │ │ │ │ │ -00007410: 0a72 6566 6572 656e 6365 2c20 652e 672e .reference, e.g. │ │ │ │ │ -00007420: 2020 205b 636f 6c6f 722c 2073 697a 652c [color, size, │ │ │ │ │ -00007430: 2073 7479 6c65 5d20 2077 6f75 6c64 2063 style] would c │ │ │ │ │ -00007440: 6175 7365 2074 6865 206f 7074 696f 6e0a ause the option. │ │ │ │ │ -00007450: 6465 6669 6e69 7469 6f6e 7320 666f 7220 definitions for │ │ │ │ │ -00007460: e280 9863 6f6c 6f72 e280 992c 20e2 8098 ...color..., ... │ │ │ │ │ -00007470: 7369 7a65 e280 992c 2061 6e64 20e2 8098 size..., and ... │ │ │ │ │ -00007480: 7374 796c 65e2 8099 2074 6f20 6170 7065 style... to appe │ │ │ │ │ -00007490: 6172 2069 6e20 7365 7175 656e 6365 2069 ar in sequence i │ │ │ │ │ -000074a0: 6e0a 7468 6520 6f75 7470 7574 2063 7265 n.the output cre │ │ │ │ │ -000074b0: 6174 6564 2062 7920 7468 6520 e280 9873 ated by the ...s │ │ │ │ │ -000074c0: 6b65 7463 68e2 8099 2063 6f6d 6d61 6e64 ketch... command │ │ │ │ │ -000074d0: 2063 6f6e 7461 696e 696e 6720 7468 6520 containing the │ │ │ │ │ -000074e0: 7265 6665 7265 6e63 652e 0a48 6170 7069 reference..Happi │ │ │ │ │ -000074f0: 6c79 2c20 7468 6520 7379 6e74 6178 206f ly, the syntax o │ │ │ │ │ -00007500: 6620 e280 9873 6b65 7463 68e2 8099 2069 f ...sketch... i │ │ │ │ │ -00007510: 7320 7375 6368 2074 6861 7420 6f70 7469 s such that opti │ │ │ │ │ -00007520: 6f6e 7320 7265 6665 7265 6e63 6573 2063 ons references c │ │ │ │ │ -00007530: 616e 0a6e 6576 6572 2062 6520 636f 6e66 an.never be conf │ │ │ │ │ -00007540: 7573 6564 2077 6974 6820 7665 6374 6f72 used with vector │ │ │ │ │ -00007550: 2072 6566 6572 656e 6365 732e 2020 5768 references. Wh │ │ │ │ │ -00007560: 696c 6520 6e6f 7420 6170 7061 7265 6e74 ile not apparent │ │ │ │ │ -00007570: 2069 6e20 7468 6973 0a65 7861 6d70 6c65 in this.example │ │ │ │ │ -00007580: 2c20 6f70 7469 6f6e 7320 7265 6665 7265 , options refere │ │ │ │ │ -00007590: 6e63 6573 2061 7265 2075 7365 6675 6c20 nces are useful │ │ │ │ │ -000075a0: 7768 656e 2064 6566 696e 696e 6720 6d61 when defining ma │ │ │ │ │ -000075b0: 6e79 206f 626a 6563 7473 2077 6974 6820 ny objects with │ │ │ │ │ -000075c0: 610a 7369 6d69 6c61 7220 6170 7065 6172 a.similar appear │ │ │ │ │ -000075d0: 616e 6365 2e0a 0a1f 0a46 696c 653a 2073 ance.....File: s │ │ │ │ │ -000075e0: 6b65 7463 682e 696e 666f 2c20 204e 6f64 ketch.info, Nod │ │ │ │ │ -000075f0: 653a 2041 6666 696e 6520 6172 6974 686d e: Affine arithm │ │ │ │ │ -00007600: 6574 6963 2c20 204e 6578 743a 204d 6f72 etic, Next: Mor │ │ │ │ │ -00007610: 6520 746f 206c 6561 726e 2c20 2050 7265 e to learn, Pre │ │ │ │ │ -00007620: 763a 2050 6f6c 796c 696e 6520 7377 6565 v: Polyline swee │ │ │ │ │ -00007630: 7073 2077 6974 6820 636c 6f73 7572 652c ps with closure, │ │ │ │ │ -00007640: 2020 5570 3a20 5377 6570 7420 6f62 6a65 Up: Swept obje │ │ │ │ │ -00007650: 6374 730a 0a32 2e37 2e36 2041 6666 696e cts..2.7.6 Affin │ │ │ │ │ -00007660: 6520 6172 6974 686d 6574 6963 0a2d 2d2d e arithmetic.--- │ │ │ │ │ -00007670: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ -00007680: 2d2d 2d2d 0a0a 5468 6520 6172 6974 686d ----..The arithm │ │ │ │ │ -00007690: 6574 6963 205b 495d 202a 2032 2e31 2061 etic [I] * 2.1 a │ │ │ │ │ -000076a0: 626f 7665 2068 696e 7473 2061 7420 6120 bove hints at a │ │ │ │ │ -000076b0: 6c61 7267 6572 2074 7275 7468 2e20 20e2 larger truth. . │ │ │ │ │ -000076c0: 8098 536b 6574 6368 e280 990a 6f70 6572 ..Sketch....oper │ │ │ │ │ -000076d0: 6174 6f72 7320 776f 726b 206f 6e20 7363 ators work on sc │ │ │ │ │ -000076e0: 616c 6172 732c 2076 6563 746f 7273 2c20 alars, vectors, │ │ │ │ │ -000076f0: 706f 696e 7473 2c20 616e 6420 7472 616e points, and tran │ │ │ │ │ -00007700: 7366 6f72 6d73 2061 6363 6f72 6469 6e67 sforms according │ │ │ │ │ -00007710: 2074 6f0a 7468 6520 6765 6e65 7261 6c20 to.the general │ │ │ │ │ -00007720: 7275 6c65 7320 6f66 20e2 809c 6166 6669 rules of ...affi │ │ │ │ │ -00007730: 6e65 2061 6c67 6562 7261 e280 9d2e 2020 ne algebra.... │ │ │ │ │ -00007740: 5468 6973 2063 616e 2062 6520 6865 6c70 This can be help │ │ │ │ │ -00007750: 6675 6c20 666f 7220 7365 7474 696e 670a ful for setting. │ │ │ │ │ -00007760: 7570 2064 6961 6772 616d 7320 7769 7468 up diagrams with │ │ │ │ │ -00007770: 2063 6f6d 7075 7465 6420 6765 6f6d 6574 computed geomet │ │ │ │ │ -00007780: 7279 2e20 2046 6f72 2065 7861 6d70 6c65 ry. For example │ │ │ │ │ -00007790: 2c20 6966 2079 6f75 2068 6176 6520 7472 , if you have tr │ │ │ │ │ -000077a0: 6961 6e67 6c65 0a76 6572 7469 6365 7320 iangle.vertices │ │ │ │ │ -000077b0: 2870 3129 2074 6872 6f75 6768 2028 7033 (p1) through (p3 │ │ │ │ │ -000077c0: 2920 616e 6420 6e65 6564 2074 6f20 6472 ) and need to dr │ │ │ │ │ -000077d0: 6177 2061 2075 6e69 7420 6e6f 726d 616c aw a unit normal │ │ │ │ │ -000077e0: 2076 6563 746f 720a 706f 696e 7469 6e67 vector.pointing │ │ │ │ │ -000077f0: 206f 7574 206f 6620 7468 6520 6365 6e74 out of the cent │ │ │ │ │ -00007800: 6572 206f 6620 7468 6520 7472 6961 6e67 er of the triang │ │ │ │ │ -00007810: 6c65 2c20 7468 6973 2063 6f64 6520 646f le, this code do │ │ │ │ │ -00007820: 6573 2074 6865 2074 7269 636b 2e0a 2020 es the trick.. │ │ │ │ │ -00007830: 6465 6620 7031 2028 312c 302c 3029 2020 def p1 (1,0,0) │ │ │ │ │ -00007840: 6465 6620 7032 2028 302c 302e 352c 3029 def p2 (0,0.5,0) │ │ │ │ │ -00007850: 2020 6465 6620 7033 2028 2d30 2e35 2c2d def p3 (-0.5,- │ │ │ │ │ -00007860: 312c 3229 0a20 2064 6566 204f 2028 302c 1,2). def O (0, │ │ │ │ │ -00007870: 302c 3029 0a20 2064 6566 204e 2075 6e69 0,0). def N uni │ │ │ │ │ -00007880: 7428 2028 2870 3329 202d 2028 7032 2929 t( ((p3) - (p2)) │ │ │ │ │ -00007890: 202a 2028 2870 3129 202d 2028 7032 2929 * ((p1) - (p2)) │ │ │ │ │ -000078a0: 2029 0a20 2064 6566 206e 3120 2828 7031 ). def n1 ((p1 │ │ │ │ │ -000078b0: 292d 284f 2920 2b20 2870 3229 2d28 4f29 )-(O) + (p2)-(O) │ │ │ │ │ -000078c0: 202b 2028 7033 292d 284f 2929 202f 2033 + (p3)-(O)) / 3 │ │ │ │ │ -000078d0: 202b 2028 4f29 0a20 2064 6566 206e 3220 + (O). def n2 │ │ │ │ │ -000078e0: 286e 3129 2b5b 4e5d 0a20 2070 6f6c 7967 (n1)+[N]. polyg │ │ │ │ │ -000078f0: 6f6e 2870 3129 2870 3229 2870 3329 0a20 on(p1)(p2)(p3). │ │ │ │ │ -00007900: 206c 696e 655b 6172 726f 7773 3d2a 2d3e line[arrows=*-> │ │ │ │ │ -00007910: 5d28 6e31 2928 6e32 290a 5468 6520 6669 ](n1)(n2).The fi │ │ │ │ │ -00007920: 7273 7420 6c69 6e65 2063 6f6d 7075 7465 rst line compute │ │ │ │ │ -00007930: 7320 7468 6520 6372 6f73 7320 7072 6f64 s the cross prod │ │ │ │ │ -00007940: 7563 7420 6f66 2074 776f 2065 6467 6520 uct of two edge │ │ │ │ │ -00007950: 7665 6374 6f72 7320 6f66 2074 6865 0a74 vectors of the.t │ │ │ │ │ -00007960: 7269 616e 676c 6520 616e 6420 7363 616c riangle and scal │ │ │ │ │ -00007970: 6573 2069 7420 746f 2075 6e69 7420 6c65 es it to unit le │ │ │ │ │ -00007980: 6e67 7468 2e20 2054 6865 2073 6563 6f6e ngth. The secon │ │ │ │ │ -00007990: 6420 636f 6d70 7574 6573 2074 6865 2061 d computes the a │ │ │ │ │ -000079a0: 7665 7261 6765 0a6f 6620 7468 6520 7665 verage.of the ve │ │ │ │ │ -000079b0: 7274 6963 6573 2e20 204e 6f74 6520 7468 rtices. Note th │ │ │ │ │ -000079c0: 6174 2073 7562 7472 6163 7469 6f6e 2061 at subtraction a │ │ │ │ │ -000079d0: 6e64 2061 6464 6974 696f 6e20 6f66 2074 nd addition of t │ │ │ │ │ -000079e0: 6865 206f 7269 6769 6e0a 6566 6665 6374 he origin.effect │ │ │ │ │ -000079f0: 6976 656c 7920 636f 6e76 6572 7420 7665 ively convert ve │ │ │ │ │ -00007a00: 6374 6f72 7320 746f 2070 6f69 6e74 7320 ctors to points │ │ │ │ │ -00007a10: 616e 6420 5f76 6963 6520 7665 7273 615f and _vice versa_ │ │ │ │ │ -00007a20: 2e20 2054 6865 206c 696e 650a 636f 6d6d . The line.comm │ │ │ │ │ -00007a30: 616e 6420 6472 6177 7320 7468 6520 6e6f and draws the no │ │ │ │ │ -00007a40: 726d 616c 2061 7420 7468 6520 636f 7272 rmal at the corr │ │ │ │ │ -00007a50: 6563 7420 7370 6f74 2e0a 0a00 085b 696d ect spot.....[im │ │ │ │ │ -00007a60: 6167 6520 7372 633d 2265 7831 3030 2e70 age src="ex100.p │ │ │ │ │ -00007a70: 6e67 2220 7465 7874 3d22 496d 6167 6520 ng" text="Image │ │ │ │ │ -00007a80: 6578 3130 3020 6f6d 6974 7465 6420 696e ex100 omitted in │ │ │ │ │ -00007a90: 2074 6578 7420 7665 7273 696f 6e20 6f66 text version of │ │ │ │ │ -00007aa0: 2074 6869 7320 646f 6375 6d65 6e74 2e22 this document." │ │ │ │ │ -00007ab0: 0008 5d0a 0a20 2020 5477 6f20 6361 7665 ..].. Two cave │ │ │ │ │ -00007ac0: 6174 7320 7265 6761 7264 696e 6720 7468 ats regarding th │ │ │ │ │ -00007ad0: 6973 2065 7861 6d70 6c65 2072 656d 6169 is example remai │ │ │ │ │ -00007ae0: 6e2e 2020 4669 7273 742c 2074 6865 206f n. First, the o │ │ │ │ │ -00007af0: 6e6c 7920 7761 7920 746f 0a75 7365 20e2 nly way to.use . │ │ │ │ │ -00007b00: 8098 5053 5472 6963 6b73 e280 992d 7374 ..PSTricks...-st │ │ │ │ │ -00007b10: 796c 6520 6172 726f 7773 2069 7320 7769 yle arrows is wi │ │ │ │ │ -00007b20: 7468 2061 7272 6f77 733d 2e20 2054 6865 th arrows=. The │ │ │ │ │ -00007b30: 2061 6c74 6572 6e61 7469 7665 2073 796e alternative syn │ │ │ │ │ -00007b40: 7461 7820 666f 720a e280 9850 5354 7269 tax for....PSTri │ │ │ │ │ -00007b50: 636b 73e2 8099 2061 7272 6f77 7320 6973 cks... arrows is │ │ │ │ │ -00007b60: 206e 6f74 2061 6c6c 6f77 6564 2069 6e20 not allowed in │ │ │ │ │ -00007b70: 736b 6574 6368 2e20 2053 6563 6f6e 642c sketch. Second, │ │ │ │ │ -00007b80: 2079 6f75 206d 6967 6874 206c 696b 6520 you might like │ │ │ │ │ -00007b90: 746f 0a65 6c69 6d69 6e61 7465 2074 6865 to.eliminate the │ │ │ │ │ -00007ba0: 2074 6869 7264 2064 6566 2061 6e64 2077 third def and w │ │ │ │ │ -00007bb0: 7269 7465 2069 6e73 7465 6164 2074 6865 rite instead the │ │ │ │ │ -00007bc0: 2066 6f6c 6c6f 7769 6e67 2e0a 2020 6c69 following.. li │ │ │ │ │ -00007bd0: 6e65 5b61 7272 6f77 733d 2a2d 3e5d 286e ne[arrows=*->](n │ │ │ │ │ -00007be0: 3129 2028 6e31 292b 5b4e 5d0a 5468 6973 1) (n1)+[N].This │ │ │ │ │ -00007bf0: 2069 7320 6e6f 7420 616c 6c6f 7765 642e is not allowed. │ │ │ │ │ -00007c00: 2020 5468 6520 706f 696e 7420 6c69 7374 The point list │ │ │ │ │ -00007c10: 7320 696e 2064 7261 7761 626c 6573 206d s in drawables m │ │ │ │ │ -00007c20: 6179 2063 6f6e 7369 7374 206f 6e6c 7920 ay consist only │ │ │ │ │ -00007c30: 6f66 0a65 7870 6c69 6369 7420 706f 696e of.explicit poin │ │ │ │ │ -00007c40: 7473 206f 7220 706f 696e 7420 7265 6665 ts or point refe │ │ │ │ │ -00007c50: 7265 6e63 6573 2e20 2059 6f75 206d 6179 rences. You may │ │ │ │ │ -00007c60: 2c20 686f 7765 7665 722c 2075 7365 2061 , however, use a │ │ │ │ │ -00007c70: 7269 7468 6d65 7469 630a 746f 2063 616c rithmetic.to cal │ │ │ │ │ -00007c80: 6375 6c61 7465 2070 6f69 6e74 2063 6f6d culate point com │ │ │ │ │ -00007c90: 706f 6e65 6e74 732e 2020 5468 6520 666f ponents. The fo │ │ │ │ │ -00007ca0: 6c6c 6f77 696e 6720 776f 726b 732c 2074 llowing works, t │ │ │ │ │ -00007cb0: 686f 7567 6820 6974 2773 2061 0a6c 6974 hough it's a.lit │ │ │ │ │ -00007cc0: 746c 6520 6375 6d62 6572 736f 6d65 2e0a tle cumbersome.. │ │ │ │ │ -00007cd0: 2020 6c69 6e65 5b61 7272 6f77 733d 2a2d line[arrows=*- │ │ │ │ │ -00007ce0: 3e5d 286e 3129 2828 6e31 2927 782b 284e >](n1)((n1)'x+(N │ │ │ │ │ -00007cf0: 2927 782c 2028 6e31 2927 792b 284e 2927 )'x, (n1)'y+(N)' │ │ │ │ │ -00007d00: 792c 2028 6e31 2927 7a2b 284e 2927 7a29 y, (n1)'z+(N)'z) │ │ │ │ │ -00007d10: 0a4f 6276 696f 7573 6c79 2c20 7468 6520 .Obviously, the │ │ │ │ │ -00007d20: e280 9c74 6963 6b20 6f70 6572 6174 6f72 ...tick operator │ │ │ │ │ -00007d30: e280 9d20 e280 9827 78e2 8099 2065 7874 ... ...'x... ext │ │ │ │ │ -00007d40: 7261 6374 7320 636f 6d70 6f6e 656e 7473 racts components │ │ │ │ │ -00007d50: 206f 6620 706f 696e 7473 2061 6e64 0a76 of points and.v │ │ │ │ │ -00007d60: 6563 746f 7273 2e0a 0a1f 0a46 696c 653a ectors.....File: │ │ │ │ │ -00007d70: 2073 6b65 7463 682e 696e 666f 2c20 204e sketch.info, N │ │ │ │ │ -00007d80: 6f64 653a 204d 6f72 6520 746f 206c 6561 ode: More to lea │ │ │ │ │ -00007d90: 726e 2c20 2050 7265 763a 2041 6666 696e rn, Prev: Affin │ │ │ │ │ -00007da0: 6520 6172 6974 686d 6574 6963 2c20 2055 e arithmetic, U │ │ │ │ │ -00007db0: 703a 2053 7765 7074 206f 626a 6563 7473 p: Swept objects │ │ │ │ │ -00007dc0: 0a0a 322e 372e 3720 4d6f 7265 2074 6f20 ..2.7.7 More to │ │ │ │ │ -00007dd0: 6c65 6172 6e0a 2d2d 2d2d 2d2d 2d2d 2d2d learn.---------- │ │ │ │ │ -00007de0: 2d2d 2d2d 2d2d 2d2d 2d0a 0a54 6869 7320 ---------..This │ │ │ │ │ -00007df0: 6973 206e 6f74 2074 6865 2065 6e64 206f is not the end o │ │ │ │ │ -00007e00: 6620 7468 6520 7374 6f72 7920 6f6e 2073 f the story on s │ │ │ │ │ -00007e10: 7765 6570 7321 2020 5765 2069 6e76 6974 weeps! We invit │ │ │ │ │ -00007e20: 6520 7468 6520 7265 6164 6572 2069 6e74 e the reader int │ │ │ │ │ -00007e30: 6f0a 7468 6520 6d61 696e 2062 6f64 7920 o.the main body │ │ │ │ │ -00007e40: 6f66 2074 6869 7320 646f 6375 6d65 6e74 of this document │ │ │ │ │ -00007e50: 6174 696f 6e20 2a6e 6f74 6520 5377 6565 ation *note Swee │ │ │ │ │ -00007e60: 7073 3a3a 2074 6f20 6c65 6172 6e20 6d6f ps:: to learn mo │ │ │ │ │ -00007e70: 7265 2e0a 0a00 085b 696d 6167 6520 7372 re.....[image sr │ │ │ │ │ -00007e80: 633d 2265 7831 3230 2e70 6e67 2220 7465 c="ex120.png" te │ │ │ │ │ -00007e90: 7874 3d22 496d 6167 6520 6578 3132 3020 xt="Image ex120 │ │ │ │ │ -00007ea0: 6f6d 6974 7465 6420 696e 2074 6578 7420 omitted in text │ │ │ │ │ -00007eb0: 7665 7273 696f 6e20 6f66 2074 6869 7320 version of this │ │ │ │ │ -00007ec0: 646f 6375 6d65 6e74 2e22 0008 5d0a 0a57 document."..]..W │ │ │ │ │ -00007ed0: 686f 206b 6e6f 7773 2077 6865 7265 2079 ho knows where y │ │ │ │ │ -00007ee0: 6f75 276c 6c20 6669 6e69 7368 3f0a 0a1f ou'll finish?... │ │ │ │ │ -00007ef0: 0a46 696c 653a 2073 6b65 7463 682e 696e .File: sketch.in │ │ │ │ │ -00007f00: 666f 2c20 204e 6f64 653a 2049 6e70 7574 fo, Node: Input │ │ │ │ │ -00007f10: 206c 616e 6775 6167 652c 2020 4e65 7874 language, Next │ │ │ │ │ -00007f20: 3a20 4275 696c 6469 6e67 2061 2064 7261 : Building a dra │ │ │ │ │ -00007f30: 7769 6e67 2c20 2050 7265 763a 2049 6e74 wing, Prev: Int │ │ │ │ │ -00007f40: 726f 6475 6374 696f 6e20 6279 2065 7861 roduction by exa │ │ │ │ │ -00007f50: 6d70 6c65 2c20 2055 703a 2054 6f70 0a0a mple, Up: Top.. │ │ │ │ │ -00007f60: 3320 496e 7075 7420 6c61 6e67 7561 6765 3 Input language │ │ │ │ │ -00007f70: 0a2a 2a2a 2a2a 2a2a 2a2a 2a2a 2a2a 2a2a .*************** │ │ │ │ │ -00007f80: 2a0a 0a54 6869 7320 6368 6170 7465 7220 *..This chapter │ │ │ │ │ -00007f90: 6465 7363 7269 6265 7320 7468 6520 e280 describes the .. │ │ │ │ │ -00007fa0: 9873 6b65 7463 68e2 8099 2069 6e70 7574 .sketch... input │ │ │ │ │ -00007fb0: 206c 616e 6775 6167 6520 696e 2064 6574 language in det │ │ │ │ │ -00007fc0: 6169 6c2e 0a0a 2a20 4d65 6e75 3a0a 0a2a ail...* Menu:..* │ │ │ │ │ -00007fd0: 204c 616e 6775 6167 6520 6261 7369 6373 Language basics │ │ │ │ │ -00007fe0: 3a3a 2020 2020 2020 2020 2020 2020 2043 :: C │ │ │ │ │ -00007ff0: 6173 652c 2073 7061 6365 2c20 636f 6d6d ase, space, comm │ │ │ │ │ -00008000: 656e 7473 2c20 696e 636c 7564 6520 6669 ents, include fi │ │ │ │ │ -00008010: 6c65 732e 0a2a 2044 7261 7761 626c 6573 les..* Drawables │ │ │ │ │ -00008020: 3a3a 2020 2020 2020 2020 2020 2020 2020 :: │ │ │ │ │ -00008030: 2020 2020 2054 6869 6e67 7320 7468 6174 Things that │ │ │ │ │ -00008040: 2063 616e 2062 6520 6472 6177 6e2e 0a2a can be drawn..* │ │ │ │ │ -00008050: 2044 6566 696e 6974 696f 6e73 3a3a 2020 Definitions:: │ │ │ │ │ -00008060: 2020 2020 2020 2020 2020 2020 2020 2047 G │ │ │ │ │ -00008070: 6976 696e 6720 7468 696e 6773 206e 616d iving things nam │ │ │ │ │ -00008080: 6573 2e0a 2a20 476c 6f62 616c 2065 6e76 es..* Global env │ │ │ │ │ -00008090: 6972 6f6e 6d65 6e74 3a3a 2020 2020 2020 ironment:: │ │ │ │ │ -000080a0: 2020 2020 4166 6665 6374 2074 6865 2065 Affect the e │ │ │ │ │ -000080b0: 6e74 6972 6520 6472 6177 696e 672e 0a0a ntire drawing... │ │ │ │ │ -000080c0: 1f0a 4669 6c65 3a20 736b 6574 6368 2e69 ..File: sketch.i │ │ │ │ │ -000080d0: 6e66 6f2c 2020 4e6f 6465 3a20 4c61 6e67 nfo, Node: Lang │ │ │ │ │ -000080e0: 7561 6765 2062 6173 6963 732c 2020 4e65 uage basics, Ne │ │ │ │ │ -000080f0: 7874 3a20 4472 6177 6162 6c65 732c 2020 xt: Drawables, │ │ │ │ │ -00008100: 5072 6576 3a20 496e 7075 7420 6c61 6e67 Prev: Input lang │ │ │ │ │ -00008110: 7561 6765 2c20 2055 703a 2049 6e70 7574 uage, Up: Input │ │ │ │ │ -00008120: 206c 616e 6775 6167 650a 0a33 2e31 2042 language..3.1 B │ │ │ │ │ -00008130: 6173 6963 730a 3d3d 3d3d 3d3d 3d3d 3d3d asics.========== │ │ │ │ │ -00008140: 0a0a e280 9853 6b65 7463 68e2 8099 2069 .....Sketch... i │ │ │ │ │ -00008150: 6e70 7574 2069 7320 706c 6169 6e20 4153 nput is plain AS │ │ │ │ │ -00008160: 4349 4920 7465 7874 2c20 7573 7561 6c6c CII text, usuall │ │ │ │ │ -00008170: 7920 7374 6f72 6564 2069 6e20 616e 2069 y stored in an i │ │ │ │ │ -00008180: 6e70 7574 2066 696c 652e 2020 4974 0a64 nput file. It.d │ │ │ │ │ -00008190: 6573 6372 6962 6573 2061 20e2 809c 7363 escribes a ...sc │ │ │ │ │ -000081a0: 656e 65e2 809d 2c20 736f 2074 6865 2073 ene..., so the s │ │ │ │ │ -000081b0: 6b65 7463 6820 6c61 6e67 7561 6765 2069 ketch language i │ │ │ │ │ -000081c0: 7320 6120 e280 9c73 6365 6e65 2064 6573 s a ...scene des │ │ │ │ │ -000081d0: 6372 6970 7469 6f6e 0a6c 616e 6775 6167 cription.languag │ │ │ │ │ -000081e0: 65e2 809d 2e20 20e2 8098 536b 6574 6368 e.... ...Sketch │ │ │ │ │ -000081f0: e280 9920 696e 7075 7420 6973 2061 6c73 ... input is als │ │ │ │ │ -00008200: 6f20 e280 9c64 6563 6c61 7261 7469 7665 o ...declarative │ │ │ │ │ -00008210: e280 9d2e 2020 4974 206d 6572 656c 7920 .... It merely │ │ │ │ │ -00008220: 6465 636c 6172 6573 0a77 6861 7420 7468 declares.what th │ │ │ │ │ -00008230: 6520 7363 656e 6520 6f75 6768 7420 746f e scene ought to │ │ │ │ │ -00008240: 206c 6f6f 6b20 6c69 6b65 2077 6865 6e20 look like when │ │ │ │ │ -00008250: 6472 6177 696e 6720 6973 2063 6f6d 706c drawing is compl │ │ │ │ │ -00008260: 6574 6520 616e 6420 7361 7973 2076 6572 ete and says ver │ │ │ │ │ -00008270: 790a 6c69 7474 6c65 2061 626f 7574 2068 y.little about h │ │ │ │ │ -00008280: 6f77 20e2 8098 736b 6574 6368 e280 9920 ow ...sketch... │ │ │ │ │ -00008290: 7368 6f75 6c64 2064 6f20 6974 7320 776f should do its wo │ │ │ │ │ -000082a0: 726b 2e20 20e2 8098 536b 6574 6368 e280 rk. ...Sketch.. │ │ │ │ │ -000082b0: 9920 636f 6d6d 616e 6473 2061 7265 206e . commands are n │ │ │ │ │ -000082c0: 6f74 0a65 7865 6375 7465 6420 7365 7175 ot.executed sequ │ │ │ │ │ -000082d0: 656e 7469 616c 6c79 2061 7320 696e 2074 entially as in t │ │ │ │ │ -000082e0: 6865 2075 7375 616c 2070 726f 6772 616d he usual program │ │ │ │ │ -000082f0: 6d69 6e67 206c 616e 6775 6167 652e 2020 ming language. │ │ │ │ │ -00008300: 5468 6579 206d 6572 656c 790a 636f 6e74 They merely.cont │ │ │ │ │ -00008310: 7269 6275 7465 2074 6f20 7468 6174 2064 ribute to that d │ │ │ │ │ -00008320: 6563 6c61 7261 7469 6f6e 2e0a 0a20 2020 eclaration... │ │ │ │ │ -00008330: 4120 6665 7720 7379 6e74 6163 7469 6320 A few syntactic │ │ │ │ │ -00008340: 6465 7461 696c 7320 6172 6520 696d 706f details are impo │ │ │ │ │ -00008350: 7274 616e 742e 2020 4361 7365 2069 7320 rtant. Case is │ │ │ │ │ -00008360: 7369 676e 6966 6963 616e 7420 696e 2074 significant in t │ │ │ │ │ -00008370: 6865 0ae2 8098 736b 6574 6368 e280 9920 he....sketch... │ │ │ │ │ -00008380: 6c61 6e67 7561 6765 2e20 2057 6974 6820 language. With │ │ │ │ │ -00008390: 6120 6665 7720 6578 6365 7074 696f 6e73 a few exceptions │ │ │ │ │ -000083a0: 2c20 7768 6974 6520 7370 6163 6520 6973 , white space is │ │ │ │ │ -000083b0: 206e 6f74 2e20 2054 6869 730a 696e 636c not. This.incl │ │ │ │ │ -000083c0: 7564 6573 206c 696e 6520 6272 6561 6b73 udes line breaks │ │ │ │ │ -000083d0: 2e20 2043 6f6d 6d65 6e74 7320 6265 6769 . Comments begi │ │ │ │ │ -000083e0: 6e20 7769 7468 20e2 8098 25e2 8099 206f n with ...%... o │ │ │ │ │ -000083f0: 7220 e280 9823 e280 9920 616e 6420 6578 r ...#... and ex │ │ │ │ │ -00008400: 7465 6e64 2074 6f20 7468 650a 656e 6420 tend to the.end │ │ │ │ │ -00008410: 6f66 2074 6865 206c 696e 652e 2020 596f of the line. Yo │ │ │ │ │ -00008420: 7520 6361 6e20 6469 7361 626c 6520 6120 u can disable a │ │ │ │ │ -00008430: 6368 756e 6b20 6f66 2073 796e 7461 6374 chunk of syntact │ │ │ │ │ -00008440: 6963 616c 6c79 2063 6f72 7265 6374 0ae2 ically correct.. │ │ │ │ │ -00008450: 8098 736b 6574 6368 e280 9920 636f 6465 ..sketch... code │ │ │ │ │ -00008460: 2062 7920 656e 636c 6f73 696e 6720 6974 by enclosing it │ │ │ │ │ -00008470: 2069 6e20 6120 e280 9864 6566 e280 992e in a ...def.... │ │ │ │ │ -00008480: 2020 5468 6572 6520 6973 2061 2073 696d There is a sim │ │ │ │ │ -00008490: 706c 6520 2269 6e63 6c75 6465 0a66 696c ple "include.fil │ │ │ │ │ -000084a0: 6522 206d 6563 6861 6e69 736d 2e20 2054 e" mechanism. T │ │ │ │ │ -000084b0: 6865 2063 6f6d 6d61 6e64 0a20 2069 6e70 he command. inp │ │ │ │ │ -000084c0: 7574 7b6f 7468 6572 6669 6c65 2e73 6b7d ut{otherfile.sk} │ │ │ │ │ -000084d0: 0a63 6175 7365 7320 7468 6520 636f 6e74 .causes the cont │ │ │ │ │ -000084e0: 656e 7473 206f 6620 e280 986f 7468 6572 ents of ...other │ │ │ │ │ -000084f0: 6669 6c65 2e73 6be2 8099 2074 6f20 6265 file.sk... to be │ │ │ │ │ -00008500: 2069 6e73 6572 7465 6420 6173 2074 686f inserted as tho │ │ │ │ │ -00008510: 7567 6820 7468 6579 2077 6572 650a 7061 ugh they were.pa │ │ │ │ │ -00008520: 7274 206f 6620 7468 6520 6375 7272 656e rt of the curren │ │ │ │ │ -00008530: 7420 6669 6c65 2e0a 0a2a 204d 656e 753a t file...* Menu: │ │ │ │ │ -00008540: 0a0a 2a20 4964 656e 7469 6669 6572 733a ..* Identifiers: │ │ │ │ │ -00008550: 3a20 2020 2020 2020 2020 2020 2020 2020 : │ │ │ │ │ -00008560: 2020 4e61 6d65 7320 666f 7220 7468 696e Names for thin │ │ │ │ │ -00008570: 6773 2e0a 2a20 4b65 7920 616e 6420 7265 gs..* Key and re │ │ │ │ │ -00008580: 7365 7276 6564 2077 6f72 6473 3a3a 2020 served words:: │ │ │ │ │ -00008590: 2020 2020 4e61 6d65 7320 796f 7520 7368 Names you sh │ │ │ │ │ -000085a0: 6f75 6c64 6e27 7420 7573 652e 0a2a 204c ouldn't use..* L │ │ │ │ │ -000085b0: 6974 6572 616c 733a 3a20 2020 2020 2020 iterals:: │ │ │ │ │ -000085c0: 2020 2020 2020 2020 2020 2020 2043 6f6e Con │ │ │ │ │ -000085d0: 7374 616e 7473 2061 6e64 2063 6f6e 7374 stants and const │ │ │ │ │ -000085e0: 7275 6374 6f72 732e 0a2a 2041 7269 7468 ructors..* Arith │ │ │ │ │ -000085f0: 6d65 7469 633a 3a20 2020 2020 2020 2020 metic:: │ │ │ │ │ -00008600: 2020 2020 2020 2020 2052 756c 6573 2066 Rules f │ │ │ │ │ -00008610: 6f72 2065 7870 7265 7373 696f 6e73 2e0a or expressions.. │ │ │ │ │ -00008620: 2a20 4f70 7469 6f6e 733a 3a20 2020 2020 * Options:: │ │ │ │ │ -00008630: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -00008640: 4d6f 6469 6679 696e 6720 6f62 6a65 6374 Modifying object │ │ │ │ │ -00008650: 2061 7070 6561 7261 6e63 652e 0a0a 1f0a appearance..... │ │ │ │ │ -00008660: 4669 6c65 3a20 736b 6574 6368 2e69 6e66 File: sketch.inf │ │ │ │ │ -00008670: 6f2c 2020 4e6f 6465 3a20 4964 656e 7469 o, Node: Identi │ │ │ │ │ -00008680: 6669 6572 732c 2020 4e65 7874 3a20 4b65 fiers, Next: Ke │ │ │ │ │ -00008690: 7920 616e 6420 7265 7365 7276 6564 2077 y and reserved w │ │ │ │ │ -000086a0: 6f72 6473 2c20 2050 7265 763a 204c 616e ords, Prev: Lan │ │ │ │ │ -000086b0: 6775 6167 6520 6261 7369 6373 2c20 2055 guage basics, U │ │ │ │ │ -000086c0: 703a 204c 616e 6775 6167 6520 6261 7369 p: Language basi │ │ │ │ │ -000086d0: 6373 0a0a 332e 312e 3120 4964 656e 7469 cs..3.1.1 Identi │ │ │ │ │ -000086e0: 6669 6572 730a 2d2d 2d2d 2d2d 2d2d 2d2d fiers.---------- │ │ │ │ │ -000086f0: 2d2d 2d2d 2d2d 2d0a 0a49 6465 6e74 6966 -------..Identif │ │ │ │ │ -00008700: 6965 7273 2069 6e20 e280 9873 6b65 7463 iers in ...sketc │ │ │ │ │ -00008710: 68e2 8099 2061 7265 2072 6566 6572 656e h... are referen │ │ │ │ │ -00008720: 6365 7320 746f 2065 6172 6c69 6572 2d64 ces to earlier-d │ │ │ │ │ -00008730: 6566 696e 6564 206f 7074 696f 6e73 2c0a efined options,. │ │ │ │ │ -00008740: 7363 616c 6172 732c 2070 6f69 6e74 732c scalars, points, │ │ │ │ │ -00008750: 2076 6563 746f 7273 2c20 7472 616e 7366 vectors, transf │ │ │ │ │ -00008760: 6f72 6d73 2c20 6472 6177 6162 6c65 732c orms, drawables, │ │ │ │ │ -00008770: 2061 6e64 2074 6167 732e 2020 4465 6669 and tags. Defi │ │ │ │ │ -00008780: 6e69 7469 6f6e 730a 6172 6520 6578 706c nitions.are expl │ │ │ │ │ -00008790: 6169 6e65 6420 696e 202a 6e6f 7465 2044 ained in *note D │ │ │ │ │ -000087a0: 6566 696e 6974 696f 6e73 3a3a 2e0a 0a20 efinitions::... │ │ │ │ │ -000087b0: 2020 416e 2069 6465 6e74 6966 6965 7220 An identifier │ │ │ │ │ -000087c0: 636f 6e73 6973 7473 206f 6620 6120 6c65 consists of a le │ │ │ │ │ -000087d0: 6164 696e 6720 6c65 7474 6572 2066 6f6c ading letter fol │ │ │ │ │ -000087e0: 6c6f 7765 6420 6279 206c 6574 7465 7273 lowed by letters │ │ │ │ │ -000087f0: 2c0a 6e75 6d62 6572 7320 616e 6420 756e ,.numbers and un │ │ │ │ │ -00008800: 6465 7273 636f 7265 732e 2020 5468 6520 derscores. The │ │ │ │ │ -00008810: 6c61 7374 2063 6861 7261 6374 6572 206d last character m │ │ │ │ │ -00008820: 6179 205f 6e6f 745f 2062 6520 616e 2075 ay _not_ be an u │ │ │ │ │ -00008830: 6e64 6572 7363 6f72 652e 0a4b 6579 776f nderscore..Keywo │ │ │ │ │ -00008840: 7264 7320 6361 6e6e 6f74 2062 6520 7573 rds cannot be us │ │ │ │ │ -00008850: 6564 2061 7320 6964 656e 7469 6669 6572 ed as identifier │ │ │ │ │ -00008860: 732c 2061 6e64 2072 6573 6572 7665 6420 s, and reserved │ │ │ │ │ -00008870: 776f 7264 7320 6f75 6768 7420 746f 2062 words ought to b │ │ │ │ │ -00008880: 650a 6176 6f69 6465 642e 2020 2a4e 6f74 e.avoided. *Not │ │ │ │ │ -00008890: 6520 4b65 7920 616e 6420 7265 7365 7276 e Key and reserv │ │ │ │ │ -000088a0: 6564 2077 6f72 6473 3a3a 2e0a 0a1f 0a46 ed words::.....F │ │ │ │ │ -000088b0: 696c 653a 2073 6b65 7463 682e 696e 666f ile: sketch.info │ │ │ │ │ -000088c0: 2c20 204e 6f64 653a 204b 6579 2061 6e64 , Node: Key and │ │ │ │ │ -000088d0: 2072 6573 6572 7665 6420 776f 7264 732c reserved words, │ │ │ │ │ -000088e0: 2020 4e65 7874 3a20 4c69 7465 7261 6c73 Next: Literals │ │ │ │ │ -000088f0: 2c20 2050 7265 763a 2049 6465 6e74 6966 , Prev: Identif │ │ │ │ │ -00008900: 6965 7273 2c20 2055 703a 204c 616e 6775 iers, Up: Langu │ │ │ │ │ -00008910: 6167 6520 6261 7369 6373 0a0a 332e 312e age basics..3.1. │ │ │ │ │ -00008920: 3220 4b65 7920 616e 6420 7265 7365 7276 2 Key and reserv │ │ │ │ │ -00008930: 6564 2077 6f72 6473 0a2d 2d2d 2d2d 2d2d ed words.------- │ │ │ │ │ +00006ff0: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 0a0a --------------.. │ │ │ │ │ +00007000: 4120 706f 6c79 6c69 6e65 2073 7765 6570 A polyline sweep │ │ │ │ │ +00007010: 2077 6974 6820 6120 636c 6f73 7572 6520 with a closure │ │ │ │ │ +00007020: 7461 6720 6372 6561 7465 7320 616e 6f74 tag creates anot │ │ │ │ │ +00007030: 6865 7220 6b69 6e64 206f 6620 636c 6f73 her kind of clos │ │ │ │ │ +00007040: 6564 0a73 7572 6661 6365 2e20 2046 6972 ed.surface. Fir │ │ │ │ │ +00007050: 7374 2c20 7468 6520 706f 6c79 6c69 6e65 st, the polyline │ │ │ │ │ +00007060: 2073 6567 6d65 6e74 7320 6172 6520 636f segments are co │ │ │ │ │ +00007070: 6e6e 6563 7465 6420 6279 2066 6163 6573 nnected by faces │ │ │ │ │ +00007080: 2c20 6a75 7374 2061 730a 7769 7468 6f75 , just as.withou │ │ │ │ │ +00007090: 7420 7468 6520 636c 6f73 7572 6520 7461 t the closure ta │ │ │ │ │ +000070a0: 672e 2020 5468 656e 2c20 6561 6368 2073 g. Then, each s │ │ │ │ │ +000070b0: 6574 206f 6620 656e 6420 706f 696e 7473 et of end points │ │ │ │ │ +000070c0: 2069 7320 6a6f 696e 6564 2074 6f20 6d61 is joined to ma │ │ │ │ │ +000070d0: 6b65 0a61 2070 6f6c 7967 6f6e 2c20 6f6e ke.a polygon, on │ │ │ │ │ +000070e0: 6520 666f 7220 6561 6368 2065 6e64 2e20 e for each end. │ │ │ │ │ +000070f0: 2041 2063 6f64 6520 666f 7220 7365 7665 A code for seve │ │ │ │ │ +00007100: 7261 6c20 7669 6577 7320 6f66 2061 2063 ral views of a c │ │ │ │ │ +00007110: 796c 696e 6472 6963 616c 0a70 7269 736d ylindrical.prism │ │ │ │ │ +00007120: 2066 6f6c 6c6f 7773 2e0a 2020 6465 6620 follows.. def │ │ │ │ │ +00007130: 6e5f 6379 6c5f 7365 6773 2032 3020 2064 n_cyl_segs 20 d │ │ │ │ │ +00007140: 6566 206e 5f76 6965 7773 2035 2020 6465 ef n_views 5 de │ │ │ │ │ +00007150: 6620 4920 5b31 2c30 2c30 5d0a 2020 6465 f I [1,0,0]. de │ │ │ │ │ +00007160: 6620 656e 646f 7074 7320 5b66 696c 6c63 f endopts [fillc │ │ │ │ │ +00007170: 6f6c 6f72 3d6c 6967 6874 6772 6179 5d0a olor=lightgray]. │ │ │ │ │ +00007180: 2020 7265 7065 6174 207b 206e 5f76 6965 repeat { n_vie │ │ │ │ │ +00007190: 7773 2c20 726f 7461 7465 2831 3830 2f6e ws, rotate(180/n │ │ │ │ │ +000071a0: 5f76 6965 7773 2c20 5b49 5d29 2074 6865 _views, [I]) the │ │ │ │ │ +000071b0: 6e20 7472 616e 736c 6174 6528 5b49 5d20 n translate([I] │ │ │ │ │ +000071c0: 2a20 322e 3129 207d 200a 2020 2020 7377 * 2.1) } . sw │ │ │ │ │ +000071d0: 6565 705b 656e 646f 7074 735d 7b20 6e5f eep[endopts]{ n_ │ │ │ │ │ +000071e0: 6379 6c5f 7365 6773 3c3e 2c20 726f 7461 cyl_segs<>, rota │ │ │ │ │ +000071f0: 7465 2833 3630 2f6e 5f63 796c 5f73 6567 te(360/n_cyl_seg │ │ │ │ │ +00007200: 732c 205b 302c 312c 305d 2920 7d20 0a20 s, [0,1,0]) } . │ │ │ │ │ +00007210: 2020 2020 206c 696e 655b 6669 6c6c 636f line[fillco │ │ │ │ │ +00007220: 6c6f 723d 7768 6974 655d 2831 2c2d 3129 lor=white](1,-1) │ │ │ │ │ +00007230: 2831 2c31 290a 4974 2070 726f 6475 6365 (1,1).It produce │ │ │ │ │ +00007240: 7320 7468 6973 2064 7261 7769 6e67 2e0a s this drawing.. │ │ │ │ │ +00007250: 0a00 085b 696d 6167 6520 7372 633d 2265 ...[image src="e │ │ │ │ │ +00007260: 7831 3130 2e70 6e67 2220 7465 7874 3d22 x110.png" text=" │ │ │ │ │ +00007270: 496d 6167 6520 6578 3131 3020 6f6d 6974 Image ex110 omit │ │ │ │ │ +00007280: 7465 6420 696e 2074 6578 7420 7665 7273 ted in text vers │ │ │ │ │ +00007290: 696f 6e20 6f66 2074 6869 7320 646f 6375 ion of this docu │ │ │ │ │ +000072a0: 6d65 6e74 2e22 0008 5d0a 0a54 6865 206f ment."..]..The o │ │ │ │ │ +000072b0: 7074 696f 6e73 206f 6620 7468 6520 7377 ptions of the sw │ │ │ │ │ +000072c0: 6570 7420 6c69 6e65 2c20 6966 2061 6e79 ept line, if any │ │ │ │ │ +000072d0: 2c20 6172 6520 6170 706c 6965 6420 746f , are applied to │ │ │ │ │ +000072e0: 2074 6865 2066 6163 6573 2070 726f 6475 the faces produ │ │ │ │ │ +000072f0: 6365 640a 6279 2073 7765 6570 696e 6720 ced.by sweeping │ │ │ │ │ +00007300: 7468 6520 6c69 6e65 2c20 6275 7420 6e6f the line, but no │ │ │ │ │ +00007310: 7420 7468 6520 656e 6420 706f 6c79 676f t the end polygo │ │ │ │ │ +00007320: 6e73 2e20 204f 7468 6572 7769 7365 2c20 ns. Otherwise, │ │ │ │ │ +00007330: 7468 6520 7377 6565 700a 6f70 7469 6f6e the sweep.option │ │ │ │ │ +00007340: 7320 6172 6520 6170 706c 6965 6420 7468 s are applied th │ │ │ │ │ +00007350: 726f 7567 686f 7574 2e20 2054 6865 2064 roughout. The d │ │ │ │ │ +00007360: 6566 2069 6e20 7468 6973 2065 7861 6d70 ef in this examp │ │ │ │ │ +00007370: 6c65 2069 7320 616e 20e2 809c 6f70 7469 le is an ...opti │ │ │ │ │ +00007380: 6f6e e280 9d0a 6465 6669 6e69 7469 6f6e on....definition │ │ │ │ │ +00007390: 2e20 2052 6566 6572 656e 6365 7320 746f . References to │ │ │ │ │ +000073a0: 206f 7074 696f 6e73 206d 7573 7420 6265 options must be │ │ │ │ │ +000073b0: 2065 6e63 6c6f 7365 6420 696e 2073 7175 enclosed in squ │ │ │ │ │ +000073c0: 6172 6520 6272 6163 6b65 7473 2c0a 652e are brackets,.e. │ │ │ │ │ +000073d0: 672e 2020 205b 666f 6f5d 2e20 2059 6f75 g. [foo]. You │ │ │ │ │ +000073e0: 2063 616e 2063 6f6e 6361 7465 6e61 7465 can concatenate │ │ │ │ │ +000073f0: 2073 6576 6572 616c 2073 6574 7320 6f66 several sets of │ │ │ │ │ +00007400: 206f 7074 696f 6e73 2077 6974 6820 6120 options with a │ │ │ │ │ +00007410: 7369 6e67 6c65 0a72 6566 6572 656e 6365 single.reference │ │ │ │ │ +00007420: 2c20 652e 672e 2020 205b 636f 6c6f 722c , e.g. [color, │ │ │ │ │ +00007430: 2073 697a 652c 2073 7479 6c65 5d20 2077 size, style] w │ │ │ │ │ +00007440: 6f75 6c64 2063 6175 7365 2074 6865 206f ould cause the o │ │ │ │ │ +00007450: 7074 696f 6e0a 6465 6669 6e69 7469 6f6e ption.definition │ │ │ │ │ +00007460: 7320 666f 7220 e280 9863 6f6c 6f72 e280 s for ...color.. │ │ │ │ │ +00007470: 992c 20e2 8098 7369 7a65 e280 992c 2061 ., ...size..., a │ │ │ │ │ +00007480: 6e64 20e2 8098 7374 796c 65e2 8099 2074 nd ...style... t │ │ │ │ │ +00007490: 6f20 6170 7065 6172 2069 6e20 7365 7175 o appear in sequ │ │ │ │ │ +000074a0: 656e 6365 2069 6e0a 7468 6520 6f75 7470 ence in.the outp │ │ │ │ │ +000074b0: 7574 2063 7265 6174 6564 2062 7920 7468 ut created by th │ │ │ │ │ +000074c0: 6520 e280 9873 6b65 7463 68e2 8099 2063 e ...sketch... c │ │ │ │ │ +000074d0: 6f6d 6d61 6e64 2063 6f6e 7461 696e 696e ommand containin │ │ │ │ │ +000074e0: 6720 7468 6520 7265 6665 7265 6e63 652e g the reference. │ │ │ │ │ +000074f0: 0a48 6170 7069 6c79 2c20 7468 6520 7379 .Happily, the sy │ │ │ │ │ +00007500: 6e74 6178 206f 6620 e280 9873 6b65 7463 ntax of ...sketc │ │ │ │ │ +00007510: 68e2 8099 2069 7320 7375 6368 2074 6861 h... is such tha │ │ │ │ │ +00007520: 7420 6f70 7469 6f6e 7320 7265 6665 7265 t options refere │ │ │ │ │ +00007530: 6e63 6573 2063 616e 0a6e 6576 6572 2062 nces can.never b │ │ │ │ │ +00007540: 6520 636f 6e66 7573 6564 2077 6974 6820 e confused with │ │ │ │ │ +00007550: 7665 6374 6f72 2072 6566 6572 656e 6365 vector reference │ │ │ │ │ +00007560: 732e 2020 5768 696c 6520 6e6f 7420 6170 s. While not ap │ │ │ │ │ +00007570: 7061 7265 6e74 2069 6e20 7468 6973 0a65 parent in this.e │ │ │ │ │ +00007580: 7861 6d70 6c65 2c20 6f70 7469 6f6e 7320 xample, options │ │ │ │ │ +00007590: 7265 6665 7265 6e63 6573 2061 7265 2075 references are u │ │ │ │ │ +000075a0: 7365 6675 6c20 7768 656e 2064 6566 696e seful when defin │ │ │ │ │ +000075b0: 696e 6720 6d61 6e79 206f 626a 6563 7473 ing many objects │ │ │ │ │ +000075c0: 2077 6974 6820 610a 7369 6d69 6c61 7220 with a.similar │ │ │ │ │ +000075d0: 6170 7065 6172 616e 6365 2e0a 0a1f 0a46 appearance.....F │ │ │ │ │ +000075e0: 696c 653a 2073 6b65 7463 682e 696e 666f ile: sketch.info │ │ │ │ │ +000075f0: 2c20 204e 6f64 653a 2041 6666 696e 6520 , Node: Affine │ │ │ │ │ +00007600: 6172 6974 686d 6574 6963 2c20 204e 6578 arithmetic, Nex │ │ │ │ │ +00007610: 743a 204d 6f72 6520 746f 206c 6561 726e t: More to learn │ │ │ │ │ +00007620: 2c20 2050 7265 763a 2050 6f6c 796c 696e , Prev: Polylin │ │ │ │ │ +00007630: 6520 7377 6565 7073 2077 6974 6820 636c e sweeps with cl │ │ │ │ │ +00007640: 6f73 7572 652c 2020 5570 3a20 5377 6570 osure, Up: Swep │ │ │ │ │ +00007650: 7420 6f62 6a65 6374 730a 0a32 2e37 2e36 t objects..2.7.6 │ │ │ │ │ +00007660: 2041 6666 696e 6520 6172 6974 686d 6574 Affine arithmet │ │ │ │ │ +00007670: 6963 0a2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ic.------------- │ │ │ │ │ +00007680: 2d2d 2d2d 2d2d 2d2d 2d2d 0a0a 5468 6520 ----------..The │ │ │ │ │ +00007690: 6172 6974 686d 6574 6963 205b 495d 202a arithmetic [I] * │ │ │ │ │ +000076a0: 2032 2e31 2061 626f 7665 2068 696e 7473 2.1 above hints │ │ │ │ │ +000076b0: 2061 7420 6120 6c61 7267 6572 2074 7275 at a larger tru │ │ │ │ │ +000076c0: 7468 2e20 20e2 8098 536b 6574 6368 e280 th. ...Sketch.. │ │ │ │ │ +000076d0: 990a 6f70 6572 6174 6f72 7320 776f 726b ..operators work │ │ │ │ │ +000076e0: 206f 6e20 7363 616c 6172 732c 2076 6563 on scalars, vec │ │ │ │ │ +000076f0: 746f 7273 2c20 706f 696e 7473 2c20 616e tors, points, an │ │ │ │ │ +00007700: 6420 7472 616e 7366 6f72 6d73 2061 6363 d transforms acc │ │ │ │ │ +00007710: 6f72 6469 6e67 2074 6f0a 7468 6520 6765 ording to.the ge │ │ │ │ │ +00007720: 6e65 7261 6c20 7275 6c65 7320 6f66 20e2 neral rules of . │ │ │ │ │ +00007730: 809c 6166 6669 6e65 2061 6c67 6562 7261 ..affine algebra │ │ │ │ │ +00007740: e280 9d2e 2020 5468 6973 2063 616e 2062 .... This can b │ │ │ │ │ +00007750: 6520 6865 6c70 6675 6c20 666f 7220 7365 e helpful for se │ │ │ │ │ +00007760: 7474 696e 670a 7570 2064 6961 6772 616d tting.up diagram │ │ │ │ │ +00007770: 7320 7769 7468 2063 6f6d 7075 7465 6420 s with computed │ │ │ │ │ +00007780: 6765 6f6d 6574 7279 2e20 2046 6f72 2065 geometry. For e │ │ │ │ │ +00007790: 7861 6d70 6c65 2c20 6966 2079 6f75 2068 xample, if you h │ │ │ │ │ +000077a0: 6176 6520 7472 6961 6e67 6c65 0a76 6572 ave triangle.ver │ │ │ │ │ +000077b0: 7469 6365 7320 2870 3129 2074 6872 6f75 tices (p1) throu │ │ │ │ │ +000077c0: 6768 2028 7033 2920 616e 6420 6e65 6564 gh (p3) and need │ │ │ │ │ +000077d0: 2074 6f20 6472 6177 2061 2075 6e69 7420 to draw a unit │ │ │ │ │ +000077e0: 6e6f 726d 616c 2076 6563 746f 720a 706f normal vector.po │ │ │ │ │ +000077f0: 696e 7469 6e67 206f 7574 206f 6620 7468 inting out of th │ │ │ │ │ +00007800: 6520 6365 6e74 6572 206f 6620 7468 6520 e center of the │ │ │ │ │ +00007810: 7472 6961 6e67 6c65 2c20 7468 6973 2063 triangle, this c │ │ │ │ │ +00007820: 6f64 6520 646f 6573 2074 6865 2074 7269 ode does the tri │ │ │ │ │ +00007830: 636b 2e0a 2020 6465 6620 7031 2028 312c ck.. def p1 (1, │ │ │ │ │ +00007840: 302c 3029 2020 6465 6620 7032 2028 302c 0,0) def p2 (0, │ │ │ │ │ +00007850: 302e 352c 3029 2020 6465 6620 7033 2028 0.5,0) def p3 ( │ │ │ │ │ +00007860: 2d30 2e35 2c2d 312c 3229 0a20 2064 6566 -0.5,-1,2). def │ │ │ │ │ +00007870: 204f 2028 302c 302c 3029 0a20 2064 6566 O (0,0,0). def │ │ │ │ │ +00007880: 204e 2075 6e69 7428 2028 2870 3329 202d N unit( ((p3) - │ │ │ │ │ +00007890: 2028 7032 2929 202a 2028 2870 3129 202d (p2)) * ((p1) - │ │ │ │ │ +000078a0: 2028 7032 2929 2029 0a20 2064 6566 206e (p2)) ). def n │ │ │ │ │ +000078b0: 3120 2828 7031 292d 284f 2920 2b20 2870 1 ((p1)-(O) + (p │ │ │ │ │ +000078c0: 3229 2d28 4f29 202b 2028 7033 292d 284f 2)-(O) + (p3)-(O │ │ │ │ │ +000078d0: 2929 202f 2033 202b 2028 4f29 0a20 2064 )) / 3 + (O). d │ │ │ │ │ +000078e0: 6566 206e 3220 286e 3129 2b5b 4e5d 0a20 ef n2 (n1)+[N]. │ │ │ │ │ +000078f0: 2070 6f6c 7967 6f6e 2870 3129 2870 3229 polygon(p1)(p2) │ │ │ │ │ +00007900: 2870 3329 0a20 206c 696e 655b 6172 726f (p3). line[arro │ │ │ │ │ +00007910: 7773 3d2a 2d3e 5d28 6e31 2928 6e32 290a ws=*->](n1)(n2). │ │ │ │ │ +00007920: 5468 6520 6669 7273 7420 6c69 6e65 2063 The first line c │ │ │ │ │ +00007930: 6f6d 7075 7465 7320 7468 6520 6372 6f73 omputes the cros │ │ │ │ │ +00007940: 7320 7072 6f64 7563 7420 6f66 2074 776f s product of two │ │ │ │ │ +00007950: 2065 6467 6520 7665 6374 6f72 7320 6f66 edge vectors of │ │ │ │ │ +00007960: 2074 6865 0a74 7269 616e 676c 6520 616e the.triangle an │ │ │ │ │ +00007970: 6420 7363 616c 6573 2069 7420 746f 2075 d scales it to u │ │ │ │ │ +00007980: 6e69 7420 6c65 6e67 7468 2e20 2054 6865 nit length. The │ │ │ │ │ +00007990: 2073 6563 6f6e 6420 636f 6d70 7574 6573 second computes │ │ │ │ │ +000079a0: 2074 6865 2061 7665 7261 6765 0a6f 6620 the average.of │ │ │ │ │ +000079b0: 7468 6520 7665 7274 6963 6573 2e20 204e the vertices. N │ │ │ │ │ +000079c0: 6f74 6520 7468 6174 2073 7562 7472 6163 ote that subtrac │ │ │ │ │ +000079d0: 7469 6f6e 2061 6e64 2061 6464 6974 696f tion and additio │ │ │ │ │ +000079e0: 6e20 6f66 2074 6865 206f 7269 6769 6e0a n of the origin. │ │ │ │ │ +000079f0: 6566 6665 6374 6976 656c 7920 636f 6e76 effectively conv │ │ │ │ │ +00007a00: 6572 7420 7665 6374 6f72 7320 746f 2070 ert vectors to p │ │ │ │ │ +00007a10: 6f69 6e74 7320 616e 6420 5f76 6963 6520 oints and _vice │ │ │ │ │ +00007a20: 7665 7273 615f 2e20 2054 6865 206c 696e versa_. The lin │ │ │ │ │ +00007a30: 650a 636f 6d6d 616e 6420 6472 6177 7320 e.command draws │ │ │ │ │ +00007a40: 7468 6520 6e6f 726d 616c 2061 7420 7468 the normal at th │ │ │ │ │ +00007a50: 6520 636f 7272 6563 7420 7370 6f74 2e0a e correct spot.. │ │ │ │ │ +00007a60: 0a00 085b 696d 6167 6520 7372 633d 2265 ...[image src="e │ │ │ │ │ +00007a70: 7831 3030 2e70 6e67 2220 7465 7874 3d22 x100.png" text=" │ │ │ │ │ +00007a80: 496d 6167 6520 6578 3130 3020 6f6d 6974 Image ex100 omit │ │ │ │ │ +00007a90: 7465 6420 696e 2074 6578 7420 7665 7273 ted in text vers │ │ │ │ │ +00007aa0: 696f 6e20 6f66 2074 6869 7320 646f 6375 ion of this docu │ │ │ │ │ +00007ab0: 6d65 6e74 2e22 0008 5d0a 0a20 2020 5477 ment."..].. Tw │ │ │ │ │ +00007ac0: 6f20 6361 7665 6174 7320 7265 6761 7264 o caveats regard │ │ │ │ │ +00007ad0: 696e 6720 7468 6973 2065 7861 6d70 6c65 ing this example │ │ │ │ │ +00007ae0: 2072 656d 6169 6e2e 2020 4669 7273 742c remain. First, │ │ │ │ │ +00007af0: 2074 6865 206f 6e6c 7920 7761 7920 746f the only way to │ │ │ │ │ +00007b00: 0a75 7365 20e2 8098 5053 5472 6963 6b73 .use ...PSTricks │ │ │ │ │ +00007b10: e280 992d 7374 796c 6520 6172 726f 7773 ...-style arrows │ │ │ │ │ +00007b20: 2069 7320 7769 7468 2061 7272 6f77 733d is with arrows= │ │ │ │ │ +00007b30: 2e20 2054 6865 2061 6c74 6572 6e61 7469 . The alternati │ │ │ │ │ +00007b40: 7665 2073 796e 7461 7820 666f 720a e280 ve syntax for... │ │ │ │ │ +00007b50: 9850 5354 7269 636b 73e2 8099 2061 7272 .PSTricks... arr │ │ │ │ │ +00007b60: 6f77 7320 6973 206e 6f74 2061 6c6c 6f77 ows is not allow │ │ │ │ │ +00007b70: 6564 2069 6e20 736b 6574 6368 2e20 2053 ed in sketch. S │ │ │ │ │ +00007b80: 6563 6f6e 642c 2079 6f75 206d 6967 6874 econd, you might │ │ │ │ │ +00007b90: 206c 696b 6520 746f 0a65 6c69 6d69 6e61 like to.elimina │ │ │ │ │ +00007ba0: 7465 2074 6865 2074 6869 7264 2064 6566 te the third def │ │ │ │ │ +00007bb0: 2061 6e64 2077 7269 7465 2069 6e73 7465 and write inste │ │ │ │ │ +00007bc0: 6164 2074 6865 2066 6f6c 6c6f 7769 6e67 ad the following │ │ │ │ │ +00007bd0: 2e0a 2020 6c69 6e65 5b61 7272 6f77 733d .. line[arrows= │ │ │ │ │ +00007be0: 2a2d 3e5d 286e 3129 2028 6e31 292b 5b4e *->](n1) (n1)+[N │ │ │ │ │ +00007bf0: 5d0a 5468 6973 2069 7320 6e6f 7420 616c ].This is not al │ │ │ │ │ +00007c00: 6c6f 7765 642e 2020 5468 6520 706f 696e lowed. The poin │ │ │ │ │ +00007c10: 7420 6c69 7374 7320 696e 2064 7261 7761 t lists in drawa │ │ │ │ │ +00007c20: 626c 6573 206d 6179 2063 6f6e 7369 7374 bles may consist │ │ │ │ │ +00007c30: 206f 6e6c 7920 6f66 0a65 7870 6c69 6369 only of.explici │ │ │ │ │ +00007c40: 7420 706f 696e 7473 206f 7220 706f 696e t points or poin │ │ │ │ │ +00007c50: 7420 7265 6665 7265 6e63 6573 2e20 2059 t references. Y │ │ │ │ │ +00007c60: 6f75 206d 6179 2c20 686f 7765 7665 722c ou may, however, │ │ │ │ │ +00007c70: 2075 7365 2061 7269 7468 6d65 7469 630a use arithmetic. │ │ │ │ │ +00007c80: 746f 2063 616c 6375 6c61 7465 2070 6f69 to calculate poi │ │ │ │ │ +00007c90: 6e74 2063 6f6d 706f 6e65 6e74 732e 2020 nt components. │ │ │ │ │ +00007ca0: 5468 6520 666f 6c6c 6f77 696e 6720 776f The following wo │ │ │ │ │ +00007cb0: 726b 732c 2074 686f 7567 6820 6974 2773 rks, though it's │ │ │ │ │ +00007cc0: 2061 0a6c 6974 746c 6520 6375 6d62 6572 a.little cumber │ │ │ │ │ +00007cd0: 736f 6d65 2e0a 2020 6c69 6e65 5b61 7272 some.. line[arr │ │ │ │ │ +00007ce0: 6f77 733d 2a2d 3e5d 286e 3129 2828 6e31 ows=*->](n1)((n1 │ │ │ │ │ +00007cf0: 2927 782b 284e 2927 782c 2028 6e31 2927 )'x+(N)'x, (n1)' │ │ │ │ │ +00007d00: 792b 284e 2927 792c 2028 6e31 2927 7a2b y+(N)'y, (n1)'z+ │ │ │ │ │ +00007d10: 284e 2927 7a29 0a4f 6276 696f 7573 6c79 (N)'z).Obviously │ │ │ │ │ +00007d20: 2c20 7468 6520 e280 9c74 6963 6b20 6f70 , the ...tick op │ │ │ │ │ +00007d30: 6572 6174 6f72 e280 9d20 e280 9827 78e2 erator... ...'x. │ │ │ │ │ +00007d40: 8099 2065 7874 7261 6374 7320 636f 6d70 .. extracts comp │ │ │ │ │ +00007d50: 6f6e 656e 7473 206f 6620 706f 696e 7473 onents of points │ │ │ │ │ +00007d60: 2061 6e64 0a76 6563 746f 7273 2e0a 0a1f and.vectors.... │ │ │ │ │ +00007d70: 0a46 696c 653a 2073 6b65 7463 682e 696e .File: sketch.in │ │ │ │ │ +00007d80: 666f 2c20 204e 6f64 653a 204d 6f72 6520 fo, Node: More │ │ │ │ │ +00007d90: 746f 206c 6561 726e 2c20 2050 7265 763a to learn, Prev: │ │ │ │ │ +00007da0: 2041 6666 696e 6520 6172 6974 686d 6574 Affine arithmet │ │ │ │ │ +00007db0: 6963 2c20 2055 703a 2053 7765 7074 206f ic, Up: Swept o │ │ │ │ │ +00007dc0: 626a 6563 7473 0a0a 322e 372e 3720 4d6f bjects..2.7.7 Mo │ │ │ │ │ +00007dd0: 7265 2074 6f20 6c65 6172 6e0a 2d2d 2d2d re to learn.---- │ │ │ │ │ +00007de0: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d0a ---------------. │ │ │ │ │ +00007df0: 0a54 6869 7320 6973 206e 6f74 2074 6865 .This is not the │ │ │ │ │ +00007e00: 2065 6e64 206f 6620 7468 6520 7374 6f72 end of the stor │ │ │ │ │ +00007e10: 7920 6f6e 2073 7765 6570 7321 2020 5765 y on sweeps! We │ │ │ │ │ +00007e20: 2069 6e76 6974 6520 7468 6520 7265 6164 invite the read │ │ │ │ │ +00007e30: 6572 2069 6e74 6f0a 7468 6520 6d61 696e er into.the main │ │ │ │ │ +00007e40: 2062 6f64 7920 6f66 2074 6869 7320 646f body of this do │ │ │ │ │ +00007e50: 6375 6d65 6e74 6174 696f 6e20 2a6e 6f74 cumentation *not │ │ │ │ │ +00007e60: 6520 5377 6565 7073 3a3a 2074 6f20 6c65 e Sweeps:: to le │ │ │ │ │ +00007e70: 6172 6e20 6d6f 7265 2e0a 0a00 085b 696d arn more.....[im │ │ │ │ │ +00007e80: 6167 6520 7372 633d 2265 7831 3230 2e70 age src="ex120.p │ │ │ │ │ +00007e90: 6e67 2220 7465 7874 3d22 496d 6167 6520 ng" text="Image │ │ │ │ │ +00007ea0: 6578 3132 3020 6f6d 6974 7465 6420 696e ex120 omitted in │ │ │ │ │ +00007eb0: 2074 6578 7420 7665 7273 696f 6e20 6f66 text version of │ │ │ │ │ +00007ec0: 2074 6869 7320 646f 6375 6d65 6e74 2e22 this document." │ │ │ │ │ +00007ed0: 0008 5d0a 0a57 686f 206b 6e6f 7773 2077 ..]..Who knows w │ │ │ │ │ +00007ee0: 6865 7265 2079 6f75 276c 6c20 6669 6e69 here you'll fini │ │ │ │ │ +00007ef0: 7368 3f0a 0a1f 0a46 696c 653a 2073 6b65 sh?....File: ske │ │ │ │ │ +00007f00: 7463 682e 696e 666f 2c20 204e 6f64 653a tch.info, Node: │ │ │ │ │ +00007f10: 2049 6e70 7574 206c 616e 6775 6167 652c Input language, │ │ │ │ │ +00007f20: 2020 4e65 7874 3a20 4275 696c 6469 6e67 Next: Building │ │ │ │ │ +00007f30: 2061 2064 7261 7769 6e67 2c20 2050 7265 a drawing, Pre │ │ │ │ │ +00007f40: 763a 2049 6e74 726f 6475 6374 696f 6e20 v: Introduction │ │ │ │ │ +00007f50: 6279 2065 7861 6d70 6c65 2c20 2055 703a by example, Up: │ │ │ │ │ +00007f60: 2054 6f70 0a0a 3320 496e 7075 7420 6c61 Top..3 Input la │ │ │ │ │ +00007f70: 6e67 7561 6765 0a2a 2a2a 2a2a 2a2a 2a2a nguage.********* │ │ │ │ │ +00007f80: 2a2a 2a2a 2a2a 2a0a 0a54 6869 7320 6368 *******..This ch │ │ │ │ │ +00007f90: 6170 7465 7220 6465 7363 7269 6265 7320 apter describes │ │ │ │ │ +00007fa0: 7468 6520 e280 9873 6b65 7463 68e2 8099 the ...sketch... │ │ │ │ │ +00007fb0: 2069 6e70 7574 206c 616e 6775 6167 6520 input language │ │ │ │ │ +00007fc0: 696e 2064 6574 6169 6c2e 0a0a 2a20 4d65 in detail...* Me │ │ │ │ │ +00007fd0: 6e75 3a0a 0a2a 204c 616e 6775 6167 6520 nu:..* Language │ │ │ │ │ +00007fe0: 6261 7369 6373 3a3a 2020 2020 2020 2020 basics:: │ │ │ │ │ +00007ff0: 2020 2020 2043 6173 652c 2073 7061 6365 Case, space │ │ │ │ │ +00008000: 2c20 636f 6d6d 656e 7473 2c20 696e 636c , comments, incl │ │ │ │ │ +00008010: 7564 6520 6669 6c65 732e 0a2a 2044 7261 ude files..* Dra │ │ │ │ │ +00008020: 7761 626c 6573 3a3a 2020 2020 2020 2020 wables:: │ │ │ │ │ +00008030: 2020 2020 2020 2020 2020 2054 6869 6e67 Thing │ │ │ │ │ +00008040: 7320 7468 6174 2063 616e 2062 6520 6472 s that can be dr │ │ │ │ │ +00008050: 6177 6e2e 0a2a 2044 6566 696e 6974 696f awn..* Definitio │ │ │ │ │ +00008060: 6e73 3a3a 2020 2020 2020 2020 2020 2020 ns:: │ │ │ │ │ +00008070: 2020 2020 2047 6976 696e 6720 7468 696e Giving thin │ │ │ │ │ +00008080: 6773 206e 616d 6573 2e0a 2a20 476c 6f62 gs names..* Glob │ │ │ │ │ +00008090: 616c 2065 6e76 6972 6f6e 6d65 6e74 3a3a al environment:: │ │ │ │ │ +000080a0: 2020 2020 2020 2020 2020 4166 6665 6374 Affect │ │ │ │ │ +000080b0: 2074 6865 2065 6e74 6972 6520 6472 6177 the entire draw │ │ │ │ │ +000080c0: 696e 672e 0a0a 1f0a 4669 6c65 3a20 736b ing.....File: sk │ │ │ │ │ +000080d0: 6574 6368 2e69 6e66 6f2c 2020 4e6f 6465 etch.info, Node │ │ │ │ │ +000080e0: 3a20 4c61 6e67 7561 6765 2062 6173 6963 : Language basic │ │ │ │ │ +000080f0: 732c 2020 4e65 7874 3a20 4472 6177 6162 s, Next: Drawab │ │ │ │ │ +00008100: 6c65 732c 2020 5072 6576 3a20 496e 7075 les, Prev: Inpu │ │ │ │ │ +00008110: 7420 6c61 6e67 7561 6765 2c20 2055 703a t language, Up: │ │ │ │ │ +00008120: 2049 6e70 7574 206c 616e 6775 6167 650a Input language. │ │ │ │ │ +00008130: 0a33 2e31 2042 6173 6963 730a 3d3d 3d3d .3.1 Basics.==== │ │ │ │ │ +00008140: 3d3d 3d3d 3d3d 0a0a e280 9853 6b65 7463 ======.....Sketc │ │ │ │ │ +00008150: 68e2 8099 2069 6e70 7574 2069 7320 706c h... input is pl │ │ │ │ │ +00008160: 6169 6e20 4153 4349 4920 7465 7874 2c20 ain ASCII text, │ │ │ │ │ +00008170: 7573 7561 6c6c 7920 7374 6f72 6564 2069 usually stored i │ │ │ │ │ +00008180: 6e20 616e 2069 6e70 7574 2066 696c 652e n an input file. │ │ │ │ │ +00008190: 2020 4974 0a64 6573 6372 6962 6573 2061 It.describes a │ │ │ │ │ +000081a0: 20e2 809c 7363 656e 65e2 809d 2c20 736f ...scene..., so │ │ │ │ │ +000081b0: 2074 6865 2073 6b65 7463 6820 6c61 6e67 the sketch lang │ │ │ │ │ +000081c0: 7561 6765 2069 7320 6120 e280 9c73 6365 uage is a ...sce │ │ │ │ │ +000081d0: 6e65 2064 6573 6372 6970 7469 6f6e 0a6c ne description.l │ │ │ │ │ +000081e0: 616e 6775 6167 65e2 809d 2e20 20e2 8098 anguage.... ... │ │ │ │ │ +000081f0: 536b 6574 6368 e280 9920 696e 7075 7420 Sketch... input │ │ │ │ │ +00008200: 6973 2061 6c73 6f20 e280 9c64 6563 6c61 is also ...decla │ │ │ │ │ +00008210: 7261 7469 7665 e280 9d2e 2020 4974 206d rative.... It m │ │ │ │ │ +00008220: 6572 656c 7920 6465 636c 6172 6573 0a77 erely declares.w │ │ │ │ │ +00008230: 6861 7420 7468 6520 7363 656e 6520 6f75 hat the scene ou │ │ │ │ │ +00008240: 6768 7420 746f 206c 6f6f 6b20 6c69 6b65 ght to look like │ │ │ │ │ +00008250: 2077 6865 6e20 6472 6177 696e 6720 6973 when drawing is │ │ │ │ │ +00008260: 2063 6f6d 706c 6574 6520 616e 6420 7361 complete and sa │ │ │ │ │ +00008270: 7973 2076 6572 790a 6c69 7474 6c65 2061 ys very.little a │ │ │ │ │ +00008280: 626f 7574 2068 6f77 20e2 8098 736b 6574 bout how ...sket │ │ │ │ │ +00008290: 6368 e280 9920 7368 6f75 6c64 2064 6f20 ch... should do │ │ │ │ │ +000082a0: 6974 7320 776f 726b 2e20 20e2 8098 536b its work. ...Sk │ │ │ │ │ +000082b0: 6574 6368 e280 9920 636f 6d6d 616e 6473 etch... commands │ │ │ │ │ +000082c0: 2061 7265 206e 6f74 0a65 7865 6375 7465 are not.execute │ │ │ │ │ +000082d0: 6420 7365 7175 656e 7469 616c 6c79 2061 d sequentially a │ │ │ │ │ +000082e0: 7320 696e 2074 6865 2075 7375 616c 2070 s in the usual p │ │ │ │ │ +000082f0: 726f 6772 616d 6d69 6e67 206c 616e 6775 rogramming langu │ │ │ │ │ +00008300: 6167 652e 2020 5468 6579 206d 6572 656c age. They merel │ │ │ │ │ +00008310: 790a 636f 6e74 7269 6275 7465 2074 6f20 y.contribute to │ │ │ │ │ +00008320: 7468 6174 2064 6563 6c61 7261 7469 6f6e that declaration │ │ │ │ │ +00008330: 2e0a 0a20 2020 4120 6665 7720 7379 6e74 ... A few synt │ │ │ │ │ +00008340: 6163 7469 6320 6465 7461 696c 7320 6172 actic details ar │ │ │ │ │ +00008350: 6520 696d 706f 7274 616e 742e 2020 4361 e important. Ca │ │ │ │ │ +00008360: 7365 2069 7320 7369 676e 6966 6963 616e se is significan │ │ │ │ │ +00008370: 7420 696e 2074 6865 0ae2 8098 736b 6574 t in the....sket │ │ │ │ │ +00008380: 6368 e280 9920 6c61 6e67 7561 6765 2e20 ch... language. │ │ │ │ │ +00008390: 2057 6974 6820 6120 6665 7720 6578 6365 With a few exce │ │ │ │ │ +000083a0: 7074 696f 6e73 2c20 7768 6974 6520 7370 ptions, white sp │ │ │ │ │ +000083b0: 6163 6520 6973 206e 6f74 2e20 2054 6869 ace is not. Thi │ │ │ │ │ +000083c0: 730a 696e 636c 7564 6573 206c 696e 6520 s.includes line │ │ │ │ │ +000083d0: 6272 6561 6b73 2e20 2043 6f6d 6d65 6e74 breaks. Comment │ │ │ │ │ +000083e0: 7320 6265 6769 6e20 7769 7468 20e2 8098 s begin with ... │ │ │ │ │ +000083f0: 25e2 8099 206f 7220 e280 9823 e280 9920 %... or ...#... │ │ │ │ │ +00008400: 616e 6420 6578 7465 6e64 2074 6f20 7468 and extend to th │ │ │ │ │ +00008410: 650a 656e 6420 6f66 2074 6865 206c 696e e.end of the lin │ │ │ │ │ +00008420: 652e 2020 596f 7520 6361 6e20 6469 7361 e. You can disa │ │ │ │ │ +00008430: 626c 6520 6120 6368 756e 6b20 6f66 2073 ble a chunk of s │ │ │ │ │ +00008440: 796e 7461 6374 6963 616c 6c79 2063 6f72 yntactically cor │ │ │ │ │ +00008450: 7265 6374 0ae2 8098 736b 6574 6368 e280 rect....sketch.. │ │ │ │ │ +00008460: 9920 636f 6465 2062 7920 656e 636c 6f73 . code by enclos │ │ │ │ │ +00008470: 696e 6720 6974 2069 6e20 6120 e280 9864 ing it in a ...d │ │ │ │ │ +00008480: 6566 e280 992e 2020 5468 6572 6520 6973 ef.... There is │ │ │ │ │ +00008490: 2061 2073 696d 706c 6520 2269 6e63 6c75 a simple "inclu │ │ │ │ │ +000084a0: 6465 0a66 696c 6522 206d 6563 6861 6e69 de.file" mechani │ │ │ │ │ +000084b0: 736d 2e20 2054 6865 2063 6f6d 6d61 6e64 sm. The command │ │ │ │ │ +000084c0: 0a20 2069 6e70 7574 7b6f 7468 6572 6669 . input{otherfi │ │ │ │ │ +000084d0: 6c65 2e73 6b7d 0a63 6175 7365 7320 7468 le.sk}.causes th │ │ │ │ │ +000084e0: 6520 636f 6e74 656e 7473 206f 6620 e280 e contents of .. │ │ │ │ │ +000084f0: 986f 7468 6572 6669 6c65 2e73 6be2 8099 .otherfile.sk... │ │ │ │ │ +00008500: 2074 6f20 6265 2069 6e73 6572 7465 6420 to be inserted │ │ │ │ │ +00008510: 6173 2074 686f 7567 6820 7468 6579 2077 as though they w │ │ │ │ │ +00008520: 6572 650a 7061 7274 206f 6620 7468 6520 ere.part of the │ │ │ │ │ +00008530: 6375 7272 656e 7420 6669 6c65 2e0a 0a2a current file...* │ │ │ │ │ +00008540: 204d 656e 753a 0a0a 2a20 4964 656e 7469 Menu:..* Identi │ │ │ │ │ +00008550: 6669 6572 733a 3a20 2020 2020 2020 2020 fiers:: │ │ │ │ │ +00008560: 2020 2020 2020 2020 4e61 6d65 7320 666f Names fo │ │ │ │ │ +00008570: 7220 7468 696e 6773 2e0a 2a20 4b65 7920 r things..* Key │ │ │ │ │ +00008580: 616e 6420 7265 7365 7276 6564 2077 6f72 and reserved wor │ │ │ │ │ +00008590: 6473 3a3a 2020 2020 2020 4e61 6d65 7320 ds:: Names │ │ │ │ │ +000085a0: 796f 7520 7368 6f75 6c64 6e27 7420 7573 you shouldn't us │ │ │ │ │ +000085b0: 652e 0a2a 204c 6974 6572 616c 733a 3a20 e..* Literals:: │ │ │ │ │ +000085c0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +000085d0: 2020 2043 6f6e 7374 616e 7473 2061 6e64 Constants and │ │ │ │ │ +000085e0: 2063 6f6e 7374 7275 6374 6f72 732e 0a2a constructors..* │ │ │ │ │ +000085f0: 2041 7269 7468 6d65 7469 633a 3a20 2020 Arithmetic:: │ │ │ │ │ +00008600: 2020 2020 2020 2020 2020 2020 2020 2052 R │ │ │ │ │ +00008610: 756c 6573 2066 6f72 2065 7870 7265 7373 ules for express │ │ │ │ │ +00008620: 696f 6e73 2e0a 2a20 4f70 7469 6f6e 733a ions..* Options: │ │ │ │ │ +00008630: 3a20 2020 2020 2020 2020 2020 2020 2020 : │ │ │ │ │ +00008640: 2020 2020 2020 4d6f 6469 6679 696e 6720 Modifying │ │ │ │ │ +00008650: 6f62 6a65 6374 2061 7070 6561 7261 6e63 object appearanc │ │ │ │ │ +00008660: 652e 0a0a 1f0a 4669 6c65 3a20 736b 6574 e.....File: sket │ │ │ │ │ +00008670: 6368 2e69 6e66 6f2c 2020 4e6f 6465 3a20 ch.info, Node: │ │ │ │ │ +00008680: 4964 656e 7469 6669 6572 732c 2020 4e65 Identifiers, Ne │ │ │ │ │ +00008690: 7874 3a20 4b65 7920 616e 6420 7265 7365 xt: Key and rese │ │ │ │ │ +000086a0: 7276 6564 2077 6f72 6473 2c20 2050 7265 rved words, Pre │ │ │ │ │ +000086b0: 763a 204c 616e 6775 6167 6520 6261 7369 v: Language basi │ │ │ │ │ +000086c0: 6373 2c20 2055 703a 204c 616e 6775 6167 cs, Up: Languag │ │ │ │ │ +000086d0: 6520 6261 7369 6373 0a0a 332e 312e 3120 e basics..3.1.1 │ │ │ │ │ +000086e0: 4964 656e 7469 6669 6572 730a 2d2d 2d2d Identifiers.---- │ │ │ │ │ +000086f0: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d0a 0a49 -------------..I │ │ │ │ │ +00008700: 6465 6e74 6966 6965 7273 2069 6e20 e280 dentifiers in .. │ │ │ │ │ +00008710: 9873 6b65 7463 68e2 8099 2061 7265 2072 .sketch... are r │ │ │ │ │ +00008720: 6566 6572 656e 6365 7320 746f 2065 6172 eferences to ear │ │ │ │ │ +00008730: 6c69 6572 2d64 6566 696e 6564 206f 7074 lier-defined opt │ │ │ │ │ +00008740: 696f 6e73 2c0a 7363 616c 6172 732c 2070 ions,.scalars, p │ │ │ │ │ +00008750: 6f69 6e74 732c 2076 6563 746f 7273 2c20 oints, vectors, │ │ │ │ │ +00008760: 7472 616e 7366 6f72 6d73 2c20 6472 6177 transforms, draw │ │ │ │ │ +00008770: 6162 6c65 732c 2061 6e64 2074 6167 732e ables, and tags. │ │ │ │ │ +00008780: 2020 4465 6669 6e69 7469 6f6e 730a 6172 Definitions.ar │ │ │ │ │ +00008790: 6520 6578 706c 6169 6e65 6420 696e 202a e explained in * │ │ │ │ │ +000087a0: 6e6f 7465 2044 6566 696e 6974 696f 6e73 note Definitions │ │ │ │ │ +000087b0: 3a3a 2e0a 0a20 2020 416e 2069 6465 6e74 ::... An ident │ │ │ │ │ +000087c0: 6966 6965 7220 636f 6e73 6973 7473 206f ifier consists o │ │ │ │ │ +000087d0: 6620 6120 6c65 6164 696e 6720 6c65 7474 f a leading lett │ │ │ │ │ +000087e0: 6572 2066 6f6c 6c6f 7765 6420 6279 206c er followed by l │ │ │ │ │ +000087f0: 6574 7465 7273 2c0a 6e75 6d62 6572 7320 etters,.numbers │ │ │ │ │ +00008800: 616e 6420 756e 6465 7273 636f 7265 732e and underscores. │ │ │ │ │ +00008810: 2020 5468 6520 6c61 7374 2063 6861 7261 The last chara │ │ │ │ │ +00008820: 6374 6572 206d 6179 205f 6e6f 745f 2062 cter may _not_ b │ │ │ │ │ +00008830: 6520 616e 2075 6e64 6572 7363 6f72 652e e an underscore. │ │ │ │ │ +00008840: 0a4b 6579 776f 7264 7320 6361 6e6e 6f74 .Keywords cannot │ │ │ │ │ +00008850: 2062 6520 7573 6564 2061 7320 6964 656e be used as iden │ │ │ │ │ +00008860: 7469 6669 6572 732c 2061 6e64 2072 6573 tifiers, and res │ │ │ │ │ +00008870: 6572 7665 6420 776f 7264 7320 6f75 6768 erved words ough │ │ │ │ │ +00008880: 7420 746f 2062 650a 6176 6f69 6465 642e t to be.avoided. │ │ │ │ │ +00008890: 2020 2a4e 6f74 6520 4b65 7920 616e 6420 *Note Key and │ │ │ │ │ +000088a0: 7265 7365 7276 6564 2077 6f72 6473 3a3a reserved words:: │ │ │ │ │ +000088b0: 2e0a 0a1f 0a46 696c 653a 2073 6b65 7463 .....File: sketc │ │ │ │ │ +000088c0: 682e 696e 666f 2c20 204e 6f64 653a 204b h.info, Node: K │ │ │ │ │ +000088d0: 6579 2061 6e64 2072 6573 6572 7665 6420 ey and reserved │ │ │ │ │ +000088e0: 776f 7264 732c 2020 4e65 7874 3a20 4c69 words, Next: Li │ │ │ │ │ +000088f0: 7465 7261 6c73 2c20 2050 7265 763a 2049 terals, Prev: I │ │ │ │ │ +00008900: 6465 6e74 6966 6965 7273 2c20 2055 703a dentifiers, Up: │ │ │ │ │ +00008910: 204c 616e 6775 6167 6520 6261 7369 6373 Language basics │ │ │ │ │ +00008920: 0a0a 332e 312e 3220 4b65 7920 616e 6420 ..3.1.2 Key and │ │ │ │ │ +00008930: 7265 7365 7276 6564 2077 6f72 6473 0a2d reserved words.- │ │ │ │ │ 00008940: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ -00008950: 2d2d 2d2d 2d0a 0a54 6865 206b 6579 776f -----..The keywo │ │ │ │ │ -00008960: 7264 7320 6f66 20e2 8098 736b 6574 6368 rds of ...sketch │ │ │ │ │ -00008970: e280 9920 6172 6520 e280 9870 6963 7475 ... are ...pictu │ │ │ │ │ -00008980: 7265 626f 78e2 8099 20e2 8098 6375 7276 rebox... ...curv │ │ │ │ │ -00008990: 65e2 8099 20e2 8098 6465 66e2 8099 20e2 e... ...def... . │ │ │ │ │ -000089a0: 8098 646f 7473 e280 9920 e280 9866 7261 ..dots... ...fra │ │ │ │ │ -000089b0: 6d65 e280 990a e280 9867 6c6f 6261 6ce2 me.......global. │ │ │ │ │ -000089c0: 8099 20e2 8098 696e 7075 74e2 8099 20e2 .. ...input... . │ │ │ │ │ -000089d0: 8098 6c69 6e65 e280 9920 e280 9870 6f6c ..line... ...pol │ │ │ │ │ -000089e0: 7967 6f6e e280 9920 e280 9870 7574 e280 ygon... ...put.. │ │ │ │ │ -000089f0: 9920 e280 9872 6570 6561 74e2 8099 20e2 . ...repeat... . │ │ │ │ │ -00008a00: 8098 7365 74e2 8099 20e2 8098 7377 6565 ..set... ...swee │ │ │ │ │ -00008a10: 70e2 8099 2061 6e64 0ae2 8098 7468 656e p... and....then │ │ │ │ │ -00008a20: e280 992e 2020 5468 6520 e280 9873 6b65 .... The ...ske │ │ │ │ │ -00008a30: 7463 68e2 8099 2070 6172 7365 7220 7769 tch... parser wi │ │ │ │ │ -00008a40: 6c6c 206e 6f74 6520 6120 7379 6e74 6178 ll note a syntax │ │ │ │ │ -00008a50: 2065 7272 6f72 2069 6620 616e 7920 6f66 error if any of │ │ │ │ │ -00008a60: 2074 6865 7365 0a61 7265 2075 7365 6420 these.are used │ │ │ │ │ -00008a70: 696e 2070 6c61 6365 206f 6620 6120 7072 in place of a pr │ │ │ │ │ -00008a80: 6f70 6572 2069 6465 6e74 6966 6965 722e oper identifier. │ │ │ │ │ -00008a90: 0a0a 2020 2049 6e20 6164 6469 7469 6f6e .. In addition │ │ │ │ │ -00008aa0: 2c20 7468 6572 6520 6172 6520 7265 7365 , there are rese │ │ │ │ │ -00008ab0: 7276 6564 2077 6f72 6473 2074 6861 7420 rved words that │ │ │ │ │ -00008ac0: 6361 6e20 6375 7272 656e 746c 7920 6265 can currently be │ │ │ │ │ -00008ad0: 2064 6566 696e 6564 0a62 7920 7468 6520 defined.by the │ │ │ │ │ -00008ae0: 7573 6572 2c20 6275 7420 7769 7468 2074 user, but with t │ │ │ │ │ -00008af0: 6865 2072 6973 6b20 7468 6174 2066 7574 he risk that fut │ │ │ │ │ -00008b00: 7572 6520 7665 7273 696f 6e73 206f 6620 ure versions of │ │ │ │ │ -00008b10: e280 9873 6b65 7463 68e2 8099 2077 696c ...sketch... wil │ │ │ │ │ -00008b20: 6c0a 7265 6a65 6374 2074 686f 7365 2064 l.reject those d │ │ │ │ │ -00008b30: 6566 696e 6974 696f 6e73 2e20 2054 6865 efinitions. The │ │ │ │ │ -00008b40: 2072 6573 6572 7665 6420 776f 7264 7320 reserved words │ │ │ │ │ -00008b50: 6172 6520 e280 9861 636f 73e2 8099 20e2 are ...acos... . │ │ │ │ │ -00008b60: 8098 6173 696e e280 9920 e280 9861 7461 ..asin... ...ata │ │ │ │ │ -00008b70: 6e32 e280 990a e280 9863 6f73 e280 9920 n2.......cos... │ │ │ │ │ -00008b80: e280 9869 6e76 6572 7365 e280 9920 e280 ...inverse... .. │ │ │ │ │ -00008b90: 9870 6572 7370 6563 7469 7665 e280 9920 .perspective... │ │ │ │ │ -00008ba0: e280 9870 726f 6a65 6374 e280 9920 e280 ...project... .. │ │ │ │ │ -00008bb0: 9872 6f74 6174 65e2 8099 20e2 8098 7363 .rotate... ...sc │ │ │ │ │ -00008bc0: 616c 65e2 8099 20e2 8098 7369 6ee2 8099 ale... ...sin... │ │ │ │ │ -00008bd0: 20e2 8098 7370 6563 6961 6ce2 8099 0ae2 ...special..... │ │ │ │ │ -00008be0: 8098 7371 7274 e280 9920 e280 9874 7261 ..sqrt... ...tra │ │ │ │ │ -00008bf0: 6e73 6c61 7465 e280 9920 e280 9875 6e69 nslate... ...uni │ │ │ │ │ -00008c00: 74e2 8099 2061 6e64 20e2 8098 7669 6577 t... and ...view │ │ │ │ │ -00008c10: e280 992e 0a0a 1f0a 4669 6c65 3a20 736b ........File: sk │ │ │ │ │ -00008c20: 6574 6368 2e69 6e66 6f2c 2020 4e6f 6465 etch.info, Node │ │ │ │ │ -00008c30: 3a20 4c69 7465 7261 6c73 2c20 204e 6578 : Literals, Nex │ │ │ │ │ -00008c40: 743a 2041 7269 7468 6d65 7469 632c 2020 t: Arithmetic, │ │ │ │ │ -00008c50: 5072 6576 3a20 4b65 7920 616e 6420 7265 Prev: Key and re │ │ │ │ │ -00008c60: 7365 7276 6564 2077 6f72 6473 2c20 2055 served words, U │ │ │ │ │ -00008c70: 703a 204c 616e 6775 6167 6520 6261 7369 p: Language basi │ │ │ │ │ -00008c80: 6373 0a0a 332e 312e 3320 4c69 7465 7261 cs..3.1.3 Litera │ │ │ │ │ -00008c90: 6c73 0a2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ls.------------- │ │ │ │ │ -00008ca0: 2d0a 0a4c 6974 6572 616c 7320 696e 20e2 -..Literals in . │ │ │ │ │ -00008cb0: 8098 736b 6574 6368 e280 9920 696e 636c ..sketch... incl │ │ │ │ │ -00008cc0: 7564 6520 7363 616c 6172 732c 2070 6f69 ude scalars, poi │ │ │ │ │ -00008cd0: 6e74 732c 2076 6563 746f 7273 2c20 616e nts, vectors, an │ │ │ │ │ -00008ce0: 6420 7472 616e 7366 6f72 6d73 2e0a 4c69 d transforms..Li │ │ │ │ │ -00008cf0: 7465 7261 6c73 2c20 616c 6f6e 6720 7769 terals, along wi │ │ │ │ │ -00008d00: 7468 2064 6566 696e 6564 206f 626a 6563 th defined objec │ │ │ │ │ -00008d10: 7420 7265 6665 7265 6e63 6573 2c20 6172 t references, ar │ │ │ │ │ -00008d20: 6520 7573 6564 2069 6e20 6172 6974 686d e used in arithm │ │ │ │ │ -00008d30: 6574 6963 0a65 7870 7265 7373 696f 6e73 etic.expressions │ │ │ │ │ -00008d40: 2e20 202a 4e6f 7465 2041 7269 7468 6d65 . *Note Arithme │ │ │ │ │ -00008d50: 7469 633a 3a2e 0a0a 2a20 4d65 6e75 3a0a tic::...* Menu:. │ │ │ │ │ -00008d60: 0a2a 2053 6361 6c61 7220 6c69 7465 7261 .* Scalar litera │ │ │ │ │ -00008d70: 6c73 3a3a 2020 2020 2020 2020 2020 2020 ls:: │ │ │ │ │ -00008d80: 204a 7573 7420 7468 6520 6e75 6d62 6572 Just the number │ │ │ │ │ -00008d90: 732e 0a2a 2050 6f69 6e74 2061 6e64 2076 s..* Point and v │ │ │ │ │ -00008da0: 6563 746f 7220 6c69 7465 7261 6c73 3a3a ector literals:: │ │ │ │ │ -00008db0: 2020 2033 6420 7175 616e 7469 7469 6573 3d quantities │ │ │ │ │ -00008dc0: 2e0a 2a20 5472 616e 7366 6f72 6d20 6c69 ..* Transform li │ │ │ │ │ -00008dd0: 7465 7261 6c73 3a3a 2020 2020 2020 2020 terals:: │ │ │ │ │ -00008de0: 2020 4d61 7472 6978 2066 6f72 6d2e 0a0a Matrix form... │ │ │ │ │ -00008df0: 1f0a 4669 6c65 3a20 736b 6574 6368 2e69 ..File: sketch.i │ │ │ │ │ -00008e00: 6e66 6f2c 2020 4e6f 6465 3a20 5363 616c nfo, Node: Scal │ │ │ │ │ -00008e10: 6172 206c 6974 6572 616c 732c 2020 4e65 ar literals, Ne │ │ │ │ │ -00008e20: 7874 3a20 506f 696e 7420 616e 6420 7665 xt: Point and ve │ │ │ │ │ -00008e30: 6374 6f72 206c 6974 6572 616c 732c 2020 ctor literals, │ │ │ │ │ -00008e40: 5072 6576 3a20 4c69 7465 7261 6c73 2c20 Prev: Literals, │ │ │ │ │ -00008e50: 2055 703a 204c 6974 6572 616c 730a 0a33 Up: Literals..3 │ │ │ │ │ -00008e60: 2e31 2e33 2e31 2053 6361 6c61 7220 6c69 .1.3.1 Scalar li │ │ │ │ │ -00008e70: 7465 7261 6c73 0a2e 2e2e 2e2e 2e2e 2e2e terals.......... │ │ │ │ │ -00008e80: 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 0a0a ................ │ │ │ │ │ -00008e90: 5363 616c 6172 206c 6974 6572 616c 7320 Scalar literals │ │ │ │ │ -00008ea0: 6172 6520 706f 7369 7469 7665 2066 6c6f are positive flo │ │ │ │ │ -00008eb0: 6174 696e 6720 706f 696e 7420 6e75 6d62 ating point numb │ │ │ │ │ -00008ec0: 6572 7320 7769 7468 2073 796e 7461 780a ers with syntax. │ │ │ │ │ -00008ed0: 6163 636f 7264 696e 6720 746f 2043 2063 according to C c │ │ │ │ │ -00008ee0: 6f6e 7665 6e74 696f 6e73 2e20 2054 6865 onventions. The │ │ │ │ │ -00008ef0: 2066 6f6c 6c6f 7769 6e67 2061 7265 2073 following are s │ │ │ │ │ -00008f00: 6f6d 6520 6578 616d 706c 6573 2e0a 2020 ome examples.. │ │ │ │ │ -00008f10: 2020 2030 2031 3030 3420 2e30 3031 2038 0 1004 .001 8 │ │ │ │ │ -00008f20: 2e33 3134 3320 332e 2031 2e36 3045 2d31 .3143 3. 1.60E-1 │ │ │ │ │ -00008f30: 3920 362e 3032 652b 3233 0a53 6361 6c61 9 6.02e+23.Scala │ │ │ │ │ -00008f40: 7220 6c69 7465 7261 6c73 206d 6179 206e r literals may n │ │ │ │ │ -00008f50: 6f74 2063 6f6e 7461 696e 2065 6d62 6564 ot contain embed │ │ │ │ │ -00008f60: 6465 6420 7370 6163 6573 2e0a 0a1f 0a46 ded spaces.....F │ │ │ │ │ -00008f70: 696c 653a 2073 6b65 7463 682e 696e 666f ile: sketch.info │ │ │ │ │ -00008f80: 2c20 204e 6f64 653a 2050 6f69 6e74 2061 , Node: Point a │ │ │ │ │ -00008f90: 6e64 2076 6563 746f 7220 6c69 7465 7261 nd vector litera │ │ │ │ │ -00008fa0: 6c73 2c20 204e 6578 743a 2054 7261 6e73 ls, Next: Trans │ │ │ │ │ -00008fb0: 666f 726d 206c 6974 6572 616c 732c 2020 form literals, │ │ │ │ │ -00008fc0: 5072 6576 3a20 5363 616c 6172 206c 6974 Prev: Scalar lit │ │ │ │ │ -00008fd0: 6572 616c 732c 2020 5570 3a20 4c69 7465 erals, Up: Lite │ │ │ │ │ -00008fe0: 7261 6c73 0a0a 332e 312e 332e 3220 506f rals..3.1.3.2 Po │ │ │ │ │ -00008ff0: 696e 7420 616e 6420 7665 6374 6f72 206c int and vector l │ │ │ │ │ -00009000: 6974 6572 616c 730a 2e2e 2e2e 2e2e 2e2e iterals......... │ │ │ │ │ +00008950: 2d2d 2d2d 2d2d 2d2d 2d2d 2d0a 0a54 6865 -----------..The │ │ │ │ │ +00008960: 206b 6579 776f 7264 7320 6f66 20e2 8098 keywords of ... │ │ │ │ │ +00008970: 736b 6574 6368 e280 9920 6172 6520 e280 sketch... are .. │ │ │ │ │ +00008980: 9870 6963 7475 7265 626f 78e2 8099 20e2 .picturebox... . │ │ │ │ │ +00008990: 8098 6375 7276 65e2 8099 20e2 8098 6465 ..curve... ...de │ │ │ │ │ +000089a0: 66e2 8099 20e2 8098 646f 7473 e280 9920 f... ...dots... │ │ │ │ │ +000089b0: e280 9866 7261 6d65 e280 990a e280 9867 ...frame.......g │ │ │ │ │ +000089c0: 6c6f 6261 6ce2 8099 20e2 8098 696e 7075 lobal... ...inpu │ │ │ │ │ +000089d0: 74e2 8099 20e2 8098 6c69 6e65 e280 9920 t... ...line... │ │ │ │ │ +000089e0: e280 9870 6f6c 7967 6f6e e280 9920 e280 ...polygon... .. │ │ │ │ │ +000089f0: 9870 7574 e280 9920 e280 9872 6570 6561 .put... ...repea │ │ │ │ │ +00008a00: 74e2 8099 20e2 8098 7365 74e2 8099 20e2 t... ...set... . │ │ │ │ │ +00008a10: 8098 7377 6565 70e2 8099 2061 6e64 0ae2 ..sweep... and.. │ │ │ │ │ +00008a20: 8098 7468 656e e280 992e 2020 5468 6520 ..then.... The │ │ │ │ │ +00008a30: e280 9873 6b65 7463 68e2 8099 2070 6172 ...sketch... par │ │ │ │ │ +00008a40: 7365 7220 7769 6c6c 206e 6f74 6520 6120 ser will note a │ │ │ │ │ +00008a50: 7379 6e74 6178 2065 7272 6f72 2069 6620 syntax error if │ │ │ │ │ +00008a60: 616e 7920 6f66 2074 6865 7365 0a61 7265 any of these.are │ │ │ │ │ +00008a70: 2075 7365 6420 696e 2070 6c61 6365 206f used in place o │ │ │ │ │ +00008a80: 6620 6120 7072 6f70 6572 2069 6465 6e74 f a proper ident │ │ │ │ │ +00008a90: 6966 6965 722e 0a0a 2020 2049 6e20 6164 ifier... In ad │ │ │ │ │ +00008aa0: 6469 7469 6f6e 2c20 7468 6572 6520 6172 dition, there ar │ │ │ │ │ +00008ab0: 6520 7265 7365 7276 6564 2077 6f72 6473 e reserved words │ │ │ │ │ +00008ac0: 2074 6861 7420 6361 6e20 6375 7272 656e that can curren │ │ │ │ │ +00008ad0: 746c 7920 6265 2064 6566 696e 6564 0a62 tly be defined.b │ │ │ │ │ +00008ae0: 7920 7468 6520 7573 6572 2c20 6275 7420 y the user, but │ │ │ │ │ +00008af0: 7769 7468 2074 6865 2072 6973 6b20 7468 with the risk th │ │ │ │ │ +00008b00: 6174 2066 7574 7572 6520 7665 7273 696f at future versio │ │ │ │ │ +00008b10: 6e73 206f 6620 e280 9873 6b65 7463 68e2 ns of ...sketch. │ │ │ │ │ +00008b20: 8099 2077 696c 6c0a 7265 6a65 6374 2074 .. will.reject t │ │ │ │ │ +00008b30: 686f 7365 2064 6566 696e 6974 696f 6e73 hose definitions │ │ │ │ │ +00008b40: 2e20 2054 6865 2072 6573 6572 7665 6420 . The reserved │ │ │ │ │ +00008b50: 776f 7264 7320 6172 6520 e280 9861 636f words are ...aco │ │ │ │ │ +00008b60: 73e2 8099 20e2 8098 6173 696e e280 9920 s... ...asin... │ │ │ │ │ +00008b70: e280 9861 7461 6e32 e280 990a e280 9863 ...atan2.......c │ │ │ │ │ +00008b80: 6f73 e280 9920 e280 9869 6e76 6572 7365 os... ...inverse │ │ │ │ │ +00008b90: e280 9920 e280 9870 6572 7370 6563 7469 ... ...perspecti │ │ │ │ │ +00008ba0: 7665 e280 9920 e280 9870 726f 6a65 6374 ve... ...project │ │ │ │ │ +00008bb0: e280 9920 e280 9872 6f74 6174 65e2 8099 ... ...rotate... │ │ │ │ │ +00008bc0: 20e2 8098 7363 616c 65e2 8099 20e2 8098 ...scale... ... │ │ │ │ │ +00008bd0: 7369 6ee2 8099 20e2 8098 7370 6563 6961 sin... ...specia │ │ │ │ │ +00008be0: 6ce2 8099 0ae2 8098 7371 7274 e280 9920 l.......sqrt... │ │ │ │ │ +00008bf0: e280 9874 7261 6e73 6c61 7465 e280 9920 ...translate... │ │ │ │ │ +00008c00: e280 9875 6e69 74e2 8099 2061 6e64 20e2 ...unit... and . │ │ │ │ │ +00008c10: 8098 7669 6577 e280 992e 0a0a 1f0a 4669 ..view........Fi │ │ │ │ │ +00008c20: 6c65 3a20 736b 6574 6368 2e69 6e66 6f2c le: sketch.info, │ │ │ │ │ +00008c30: 2020 4e6f 6465 3a20 4c69 7465 7261 6c73 Node: Literals │ │ │ │ │ +00008c40: 2c20 204e 6578 743a 2041 7269 7468 6d65 , Next: Arithme │ │ │ │ │ +00008c50: 7469 632c 2020 5072 6576 3a20 4b65 7920 tic, Prev: Key │ │ │ │ │ +00008c60: 616e 6420 7265 7365 7276 6564 2077 6f72 and reserved wor │ │ │ │ │ +00008c70: 6473 2c20 2055 703a 204c 616e 6775 6167 ds, Up: Languag │ │ │ │ │ +00008c80: 6520 6261 7369 6373 0a0a 332e 312e 3320 e basics..3.1.3 │ │ │ │ │ +00008c90: 4c69 7465 7261 6c73 0a2d 2d2d 2d2d 2d2d Literals.------- │ │ │ │ │ +00008ca0: 2d2d 2d2d 2d2d 2d0a 0a4c 6974 6572 616c -------..Literal │ │ │ │ │ +00008cb0: 7320 696e 20e2 8098 736b 6574 6368 e280 s in ...sketch.. │ │ │ │ │ +00008cc0: 9920 696e 636c 7564 6520 7363 616c 6172 . include scalar │ │ │ │ │ +00008cd0: 732c 2070 6f69 6e74 732c 2076 6563 746f s, points, vecto │ │ │ │ │ +00008ce0: 7273 2c20 616e 6420 7472 616e 7366 6f72 rs, and transfor │ │ │ │ │ +00008cf0: 6d73 2e0a 4c69 7465 7261 6c73 2c20 616c ms..Literals, al │ │ │ │ │ +00008d00: 6f6e 6720 7769 7468 2064 6566 696e 6564 ong with defined │ │ │ │ │ +00008d10: 206f 626a 6563 7420 7265 6665 7265 6e63 object referenc │ │ │ │ │ +00008d20: 6573 2c20 6172 6520 7573 6564 2069 6e20 es, are used in │ │ │ │ │ +00008d30: 6172 6974 686d 6574 6963 0a65 7870 7265 arithmetic.expre │ │ │ │ │ +00008d40: 7373 696f 6e73 2e20 202a 4e6f 7465 2041 ssions. *Note A │ │ │ │ │ +00008d50: 7269 7468 6d65 7469 633a 3a2e 0a0a 2a20 rithmetic::...* │ │ │ │ │ +00008d60: 4d65 6e75 3a0a 0a2a 2053 6361 6c61 7220 Menu:..* Scalar │ │ │ │ │ +00008d70: 6c69 7465 7261 6c73 3a3a 2020 2020 2020 literals:: │ │ │ │ │ +00008d80: 2020 2020 2020 204a 7573 7420 7468 6520 Just the │ │ │ │ │ +00008d90: 6e75 6d62 6572 732e 0a2a 2050 6f69 6e74 numbers..* Point │ │ │ │ │ +00008da0: 2061 6e64 2076 6563 746f 7220 6c69 7465 and vector lite │ │ │ │ │ +00008db0: 7261 6c73 3a3a 2020 2033 6420 7175 616e rals:: 3d quan │ │ │ │ │ +00008dc0: 7469 7469 6573 2e0a 2a20 5472 616e 7366 tities..* Transf │ │ │ │ │ +00008dd0: 6f72 6d20 6c69 7465 7261 6c73 3a3a 2020 orm literals:: │ │ │ │ │ +00008de0: 2020 2020 2020 2020 4d61 7472 6978 2066 Matrix f │ │ │ │ │ +00008df0: 6f72 6d2e 0a0a 1f0a 4669 6c65 3a20 736b orm.....File: sk │ │ │ │ │ +00008e00: 6574 6368 2e69 6e66 6f2c 2020 4e6f 6465 etch.info, Node │ │ │ │ │ +00008e10: 3a20 5363 616c 6172 206c 6974 6572 616c : Scalar literal │ │ │ │ │ +00008e20: 732c 2020 4e65 7874 3a20 506f 696e 7420 s, Next: Point │ │ │ │ │ +00008e30: 616e 6420 7665 6374 6f72 206c 6974 6572 and vector liter │ │ │ │ │ +00008e40: 616c 732c 2020 5072 6576 3a20 4c69 7465 als, Prev: Lite │ │ │ │ │ +00008e50: 7261 6c73 2c20 2055 703a 204c 6974 6572 rals, Up: Liter │ │ │ │ │ +00008e60: 616c 730a 0a33 2e31 2e33 2e31 2053 6361 als..3.1.3.1 Sca │ │ │ │ │ +00008e70: 6c61 7220 6c69 7465 7261 6c73 0a2e 2e2e lar literals.... │ │ │ │ │ +00008e80: 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e ................ │ │ │ │ │ +00008e90: 2e2e 2e2e 0a0a 5363 616c 6172 206c 6974 ......Scalar lit │ │ │ │ │ +00008ea0: 6572 616c 7320 6172 6520 706f 7369 7469 erals are positi │ │ │ │ │ +00008eb0: 7665 2066 6c6f 6174 696e 6720 706f 696e ve floating poin │ │ │ │ │ +00008ec0: 7420 6e75 6d62 6572 7320 7769 7468 2073 t numbers with s │ │ │ │ │ +00008ed0: 796e 7461 780a 6163 636f 7264 696e 6720 yntax.according │ │ │ │ │ +00008ee0: 746f 2043 2063 6f6e 7665 6e74 696f 6e73 to C conventions │ │ │ │ │ +00008ef0: 2e20 2054 6865 2066 6f6c 6c6f 7769 6e67 . The following │ │ │ │ │ +00008f00: 2061 7265 2073 6f6d 6520 6578 616d 706c are some exampl │ │ │ │ │ +00008f10: 6573 2e0a 2020 2020 2030 2031 3030 3420 es.. 0 1004 │ │ │ │ │ +00008f20: 2e30 3031 2038 2e33 3134 3320 332e 2031 .001 8.3143 3. 1 │ │ │ │ │ +00008f30: 2e36 3045 2d31 3920 362e 3032 652b 3233 .60E-19 6.02e+23 │ │ │ │ │ +00008f40: 0a53 6361 6c61 7220 6c69 7465 7261 6c73 .Scalar literals │ │ │ │ │ +00008f50: 206d 6179 206e 6f74 2063 6f6e 7461 696e may not contain │ │ │ │ │ +00008f60: 2065 6d62 6564 6465 6420 7370 6163 6573 embedded spaces │ │ │ │ │ +00008f70: 2e0a 0a1f 0a46 696c 653a 2073 6b65 7463 .....File: sketc │ │ │ │ │ +00008f80: 682e 696e 666f 2c20 204e 6f64 653a 2050 h.info, Node: P │ │ │ │ │ +00008f90: 6f69 6e74 2061 6e64 2076 6563 746f 7220 oint and vector │ │ │ │ │ +00008fa0: 6c69 7465 7261 6c73 2c20 204e 6578 743a literals, Next: │ │ │ │ │ +00008fb0: 2054 7261 6e73 666f 726d 206c 6974 6572 Transform liter │ │ │ │ │ +00008fc0: 616c 732c 2020 5072 6576 3a20 5363 616c als, Prev: Scal │ │ │ │ │ +00008fd0: 6172 206c 6974 6572 616c 732c 2020 5570 ar literals, Up │ │ │ │ │ +00008fe0: 3a20 4c69 7465 7261 6c73 0a0a 332e 312e : Literals..3.1. │ │ │ │ │ +00008ff0: 332e 3220 506f 696e 7420 616e 6420 7665 3.2 Point and ve │ │ │ │ │ +00009000: 6374 6f72 206c 6974 6572 616c 730a 2e2e ctor literals... │ │ │ │ │ 00009010: 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e ................ │ │ │ │ │ -00009020: 2e2e 2e2e 2e2e 2e2e 2e0a 0a50 6f69 6e74 ...........Point │ │ │ │ │ -00009030: 7320 616e 6420 7665 6374 6f72 206c 6974 s and vector lit │ │ │ │ │ -00009040: 6572 616c 7320 6861 7665 2074 6865 7365 erals have these │ │ │ │ │ -00009050: 2066 6f72 6d73 2072 6573 7065 6374 6976 forms respectiv │ │ │ │ │ -00009060: 656c 792e 0a20 2020 2020 2858 2c59 2c5a ely.. (X,Y,Z │ │ │ │ │ -00009070: 2920 205b 582c 592c 5a5d 0a45 6163 6820 ) [X,Y,Z].Each │ │ │ │ │ -00009080: 6f66 2074 6865 2063 6f6d 706f 6e65 6e74 of the component │ │ │ │ │ -00009090: 7320 6973 2069 7473 656c 6620 6120 7363 s is itself a sc │ │ │ │ │ -000090a0: 616c 6172 2065 7870 7265 7373 696f 6e2e alar expression. │ │ │ │ │ -000090b0: 2020 5468 6520 7a2d 636f 6d70 6f6e 656e The z-componen │ │ │ │ │ -000090c0: 7473 0a61 7265 206f 7074 696f 6e61 6c20 ts.are optional │ │ │ │ │ -000090d0: 616e 6420 6465 6661 756c 7420 746f 207a and default to z │ │ │ │ │ -000090e0: 6572 6f2e 0a0a 1f0a 4669 6c65 3a20 736b ero.....File: sk │ │ │ │ │ -000090f0: 6574 6368 2e69 6e66 6f2c 2020 4e6f 6465 etch.info, Node │ │ │ │ │ -00009100: 3a20 5472 616e 7366 6f72 6d20 6c69 7465 : Transform lite │ │ │ │ │ -00009110: 7261 6c73 2c20 2050 7265 763a 2050 6f69 rals, Prev: Poi │ │ │ │ │ -00009120: 6e74 2061 6e64 2076 6563 746f 7220 6c69 nt and vector li │ │ │ │ │ -00009130: 7465 7261 6c73 2c20 2055 703a 204c 6974 terals, Up: Lit │ │ │ │ │ -00009140: 6572 616c 730a 0a33 2e31 2e33 2e33 2054 erals..3.1.3.3 T │ │ │ │ │ -00009150: 7261 6e73 666f 726d 206c 6974 6572 616c ransform literal │ │ │ │ │ -00009160: 730a 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e s............... │ │ │ │ │ -00009170: 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 0a0a 4d6f ..............Mo │ │ │ │ │ -00009180: 7374 2074 7261 6e73 666f 726d 206c 6974 st transform lit │ │ │ │ │ -00009190: 6572 616c 7320 6172 6520 666f 726d 6564 erals are formed │ │ │ │ │ -000091a0: 2062 7920 e280 9c63 6f6e 7374 7275 6374 by ...construct │ │ │ │ │ -000091b0: 6f72 73e2 809d 2e20 2054 6865 7365 2061 ors.... These a │ │ │ │ │ -000091c0: 7265 0a73 756d 6d61 7269 7a65 6420 696e re.summarized in │ │ │ │ │ -000091d0: 2074 6865 2066 6f6c 6c6f 7769 6e67 2074 the following t │ │ │ │ │ -000091e0: 6162 6c65 2e0a 436f 6e73 7472 7563 746f able..Constructo │ │ │ │ │ -000091f0: 7220 2020 2020 2020 2020 2020 2020 2020 r │ │ │ │ │ -00009200: 2020 2020 2020 2020 2020 5061 7261 6d20 Param │ │ │ │ │ -00009210: 7479 7065 7320 2020 2020 2020 2020 2020 types │ │ │ │ │ -00009220: 4465 7363 7269 7074 696f 6e0a 2d2d 2d2d Description.---- │ │ │ │ │ -00009230: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ +00009020: 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e0a ................ │ │ │ │ │ +00009030: 0a50 6f69 6e74 7320 616e 6420 7665 6374 .Points and vect │ │ │ │ │ +00009040: 6f72 206c 6974 6572 616c 7320 6861 7665 or literals have │ │ │ │ │ +00009050: 2074 6865 7365 2066 6f72 6d73 2072 6573 these forms res │ │ │ │ │ +00009060: 7065 6374 6976 656c 792e 0a20 2020 2020 pectively.. │ │ │ │ │ +00009070: 2858 2c59 2c5a 2920 205b 582c 592c 5a5d (X,Y,Z) [X,Y,Z] │ │ │ │ │ +00009080: 0a45 6163 6820 6f66 2074 6865 2063 6f6d .Each of the com │ │ │ │ │ +00009090: 706f 6e65 6e74 7320 6973 2069 7473 656c ponents is itsel │ │ │ │ │ +000090a0: 6620 6120 7363 616c 6172 2065 7870 7265 f a scalar expre │ │ │ │ │ +000090b0: 7373 696f 6e2e 2020 5468 6520 7a2d 636f ssion. The z-co │ │ │ │ │ +000090c0: 6d70 6f6e 656e 7473 0a61 7265 206f 7074 mponents.are opt │ │ │ │ │ +000090d0: 696f 6e61 6c20 616e 6420 6465 6661 756c ional and defaul │ │ │ │ │ +000090e0: 7420 746f 207a 6572 6f2e 0a0a 1f0a 4669 t to zero.....Fi │ │ │ │ │ +000090f0: 6c65 3a20 736b 6574 6368 2e69 6e66 6f2c le: sketch.info, │ │ │ │ │ +00009100: 2020 4e6f 6465 3a20 5472 616e 7366 6f72 Node: Transfor │ │ │ │ │ +00009110: 6d20 6c69 7465 7261 6c73 2c20 2050 7265 m literals, Pre │ │ │ │ │ +00009120: 763a 2050 6f69 6e74 2061 6e64 2076 6563 v: Point and vec │ │ │ │ │ +00009130: 746f 7220 6c69 7465 7261 6c73 2c20 2055 tor literals, U │ │ │ │ │ +00009140: 703a 204c 6974 6572 616c 730a 0a33 2e31 p: Literals..3.1 │ │ │ │ │ +00009150: 2e33 2e33 2054 7261 6e73 666f 726d 206c .3.3 Transform l │ │ │ │ │ +00009160: 6974 6572 616c 730a 2e2e 2e2e 2e2e 2e2e iterals......... │ │ │ │ │ +00009170: 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e ................ │ │ │ │ │ +00009180: 2e2e 0a0a 4d6f 7374 2074 7261 6e73 666f ....Most transfo │ │ │ │ │ +00009190: 726d 206c 6974 6572 616c 7320 6172 6520 rm literals are │ │ │ │ │ +000091a0: 666f 726d 6564 2062 7920 e280 9c63 6f6e formed by ...con │ │ │ │ │ +000091b0: 7374 7275 6374 6f72 73e2 809d 2e20 2054 structors.... T │ │ │ │ │ +000091c0: 6865 7365 2061 7265 0a73 756d 6d61 7269 hese are.summari │ │ │ │ │ +000091d0: 7a65 6420 696e 2074 6865 2066 6f6c 6c6f zed in the follo │ │ │ │ │ +000091e0: 7769 6e67 2074 6162 6c65 2e0a 436f 6e73 wing table..Cons │ │ │ │ │ +000091f0: 7472 7563 746f 7220 2020 2020 2020 2020 tructor │ │ │ │ │ +00009200: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +00009210: 5061 7261 6d20 7479 7065 7320 2020 2020 Param types │ │ │ │ │ +00009220: 2020 2020 2020 4465 7363 7269 7074 696f Descriptio │ │ │ │ │ +00009230: 6e0a 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d n.-------------- │ │ │ │ │ 00009240: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ 00009250: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ 00009260: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ 00009270: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ 00009280: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ -00009290: 2d2d 2d2d 2d2d 2d0a e280 9872 6f74 6174 -------....rotat │ │ │ │ │ -000092a0: 6528 412c 502c 5829 e280 9920 2020 2020 e(A,P,X)... │ │ │ │ │ -000092b0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -000092c0: 7363 616c 6172 2c70 6f69 6e74 2c76 6563 scalar,point,vec │ │ │ │ │ -000092d0: 746f 7220 2020 526f 7461 7465 20e2 8098 tor Rotate ... │ │ │ │ │ -000092e0: 41e2 8099 2064 6567 7265 6573 2061 626f A... degrees abo │ │ │ │ │ -000092f0: 7574 2070 6f69 6e74 20e2 8098 50e2 8099 ut point ...P... │ │ │ │ │ -00009300: 2077 6974 6820 6178 6973 0a20 2020 2020 with axis. │ │ │ │ │ -00009310: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +00009290: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d0a e280 -------------... │ │ │ │ │ +000092a0: 9872 6f74 6174 6528 412c 502c 5829 e280 .rotate(A,P,X).. │ │ │ │ │ +000092b0: 9920 2020 2020 2020 2020 2020 2020 2020 . │ │ │ │ │ +000092c0: 2020 2020 2020 7363 616c 6172 2c70 6f69 scalar,poi │ │ │ │ │ +000092d0: 6e74 2c76 6563 746f 7220 2020 526f 7461 nt,vector Rota │ │ │ │ │ +000092e0: 7465 20e2 8098 41e2 8099 2064 6567 7265 te ...A... degre │ │ │ │ │ +000092f0: 6573 2061 626f 7574 2070 6f69 6e74 20e2 es about point . │ │ │ │ │ +00009300: 8098 50e2 8099 2077 6974 6820 6178 6973 ..P... with axis │ │ │ │ │ +00009310: 0a20 2020 2020 2020 2020 2020 2020 2020 . │ │ │ │ │ 00009320: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ 00009330: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -00009340: 2020 2020 20e2 8098 58e2 8099 2061 6363 ...X... acc │ │ │ │ │ -00009350: 6f72 6469 6e67 2074 6f20 7468 6520 7269 ording to the ri │ │ │ │ │ -00009360: 6768 7420 6861 6e64 2072 756c 652e 0a20 ght hand rule.. │ │ │ │ │ -00009370: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +00009340: 2020 2020 2020 2020 2020 20e2 8098 58e2 ...X. │ │ │ │ │ +00009350: 8099 2061 6363 6f72 6469 6e67 2074 6f20 .. according to │ │ │ │ │ +00009360: 7468 6520 7269 6768 7420 6861 6e64 2072 the right hand r │ │ │ │ │ +00009370: 756c 652e 0a20 2020 2020 2020 2020 2020 ule.. │ │ │ │ │ 00009380: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ 00009390: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -000093a0: 2020 2020 2020 2020 202a 4e6f 7465 2052 *Note R │ │ │ │ │ -000093b0: 6967 6874 2068 616e 6420 7275 6c65 3a3a ight hand rule:: │ │ │ │ │ -000093c0: 2e20 20e2 8098 50e2 8099 2061 6e64 20e2 . ...P... and . │ │ │ │ │ -000093d0: 8098 58e2 8099 2061 7265 2062 6f74 680a ..X... are both. │ │ │ │ │ -000093e0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +000093a0: 2020 2020 2020 2020 2020 2020 2020 202a * │ │ │ │ │ +000093b0: 4e6f 7465 2052 6967 6874 2068 616e 6420 Note Right hand │ │ │ │ │ +000093c0: 7275 6c65 3a3a 2e20 20e2 8098 50e2 8099 rule::. ...P... │ │ │ │ │ +000093d0: 2061 6e64 20e2 8098 58e2 8099 2061 7265 and ...X... are │ │ │ │ │ +000093e0: 2062 6f74 680a 2020 2020 2020 2020 2020 both. │ │ │ │ │ 000093f0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ 00009400: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -00009410: 2020 2020 2020 2020 2020 6f70 7469 6f6e option │ │ │ │ │ -00009420: 616c 2061 6e64 2064 6566 6175 6c74 2074 al and default t │ │ │ │ │ -00009430: 6f20 7468 6520 6f72 6967 696e 2061 6e64 o the origin and │ │ │ │ │ -00009440: 2074 6865 0a20 2020 2020 2020 2020 2020 the. │ │ │ │ │ +00009410: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +00009420: 6f70 7469 6f6e 616c 2061 6e64 2064 6566 optional and def │ │ │ │ │ +00009430: 6175 6c74 2074 6f20 7468 6520 6f72 6967 ault to the orig │ │ │ │ │ +00009440: 696e 2061 6e64 2074 6865 0a20 2020 2020 in and the. │ │ │ │ │ 00009450: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ 00009460: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -00009470: 2020 2020 2020 2020 2020 2020 2020 207a z │ │ │ │ │ -00009480: 2d61 7869 7320 7265 7370 6563 7469 7665 -axis respective │ │ │ │ │ -00009490: 6c79 2e0a e280 9874 7261 6e73 6c61 7465 ly.....translate │ │ │ │ │ -000094a0: 2858 29e2 8099 2020 2020 2020 2020 2020 (X)... │ │ │ │ │ -000094b0: 2020 2020 2020 2020 2020 2020 7665 6374 vect │ │ │ │ │ -000094c0: 6f72 2020 2020 2020 2020 2020 2020 2020 or │ │ │ │ │ -000094d0: 2020 5472 616e 736c 6174 6520 6279 20e2 Translate by . │ │ │ │ │ -000094e0: 8098 58e2 8099 2e0a e280 9873 6361 6c65 ..X........scale │ │ │ │ │ -000094f0: 2853 29e2 8099 2020 2020 2020 2020 2020 (S)... │ │ │ │ │ +00009470: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +00009480: 2020 2020 207a 2d61 7869 7320 7265 7370 z-axis resp │ │ │ │ │ +00009490: 6563 7469 7665 6c79 2e0a e280 9874 7261 ectively.....tra │ │ │ │ │ +000094a0: 6e73 6c61 7465 2858 29e2 8099 2020 2020 nslate(X)... │ │ │ │ │ +000094b0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +000094c0: 2020 7665 6374 6f72 2020 2020 2020 2020 vector │ │ │ │ │ +000094d0: 2020 2020 2020 2020 5472 616e 736c 6174 Translat │ │ │ │ │ +000094e0: 6520 6279 20e2 8098 58e2 8099 2e0a e280 e by ...X....... │ │ │ │ │ +000094f0: 9873 6361 6c65 2853 29e2 8099 2020 2020 .scale(S)... │ │ │ │ │ 00009500: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -00009510: 7363 616c 6172 2020 2020 2020 2020 2020 scalar │ │ │ │ │ -00009520: 2020 2020 2020 5363 616c 6520 756e 6966 Scale unif │ │ │ │ │ -00009530: 6f72 6d6c 7920 6279 2066 6163 746f 7220 ormly by factor │ │ │ │ │ -00009540: e280 9853 e280 992e 0ae2 8098 7363 616c ...S........scal │ │ │ │ │ -00009550: 6528 5629 e280 9920 2020 2020 2020 2020 e(V)... │ │ │ │ │ +00009510: 2020 2020 2020 7363 616c 6172 2020 2020 scalar │ │ │ │ │ +00009520: 2020 2020 2020 2020 2020 2020 5363 616c Scal │ │ │ │ │ +00009530: 6520 756e 6966 6f72 6d6c 7920 6279 2066 e uniformly by f │ │ │ │ │ +00009540: 6163 746f 7220 e280 9853 e280 992e 0ae2 actor ...S...... │ │ │ │ │ +00009550: 8098 7363 616c 6528 5629 e280 9920 2020 ..scale(V)... │ │ │ │ │ 00009560: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -00009570: 2076 6563 746f 7220 2020 2020 2020 2020 vector │ │ │ │ │ -00009580: 2020 2020 2020 2053 6361 6c65 2061 6c6f Scale alo │ │ │ │ │ -00009590: 6e67 2065 6163 6820 6178 6973 2062 7920 ng each axis by │ │ │ │ │ -000095a0: 636f 6d70 6f6e 656e 7473 206f 6620 e280 components of .. │ │ │ │ │ -000095b0: 9856 e280 992e 0ae2 8098 7072 6f6a 6563 .V........projec │ │ │ │ │ -000095c0: 7428 29e2 8099 2020 2020 2020 2020 2020 t()... │ │ │ │ │ -000095d0: 2020 2020 2020 2020 2020 2020 2020 202d - │ │ │ │ │ -000095e0: 2d20 2020 2020 2020 2020 2020 2020 2020 - │ │ │ │ │ -000095f0: 2020 2020 2053 616d 6520 6173 20e2 8098 Same as ... │ │ │ │ │ -00009600: 7363 616c 6528 5b31 2c31 2c30 5d29 e280 scale([1,1,0]).. │ │ │ │ │ -00009610: 992e 0ae2 8098 7072 6f6a 6563 7428 5329 ......project(S) │ │ │ │ │ -00009620: e280 9920 2020 2020 2020 2020 2020 2020 ... │ │ │ │ │ -00009630: 2020 2020 2020 2020 2020 2073 6361 6c61 scala │ │ │ │ │ -00009640: 7220 2020 2020 2020 2020 2020 2020 2020 r │ │ │ │ │ -00009650: 2050 6572 7370 6563 7469 7665 2070 726f Perspective pro │ │ │ │ │ -00009660: 6a65 6374 696f 6e20 7769 7468 2076 6965 jection with vie │ │ │ │ │ -00009670: 7720 6365 6e74 6572 2061 740a 2020 2020 w center at. │ │ │ │ │ -00009680: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +00009570: 2020 2020 2020 2076 6563 746f 7220 2020 vector │ │ │ │ │ +00009580: 2020 2020 2020 2020 2020 2020 2053 6361 Sca │ │ │ │ │ +00009590: 6c65 2061 6c6f 6e67 2065 6163 6820 6178 le along each ax │ │ │ │ │ +000095a0: 6973 2062 7920 636f 6d70 6f6e 656e 7473 is by components │ │ │ │ │ +000095b0: 206f 6620 e280 9856 e280 992e 0ae2 8098 of ...V........ │ │ │ │ │ +000095c0: 7072 6f6a 6563 7428 29e2 8099 2020 2020 project()... │ │ │ │ │ +000095d0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +000095e0: 2020 2020 202d 2d20 2020 2020 2020 2020 -- │ │ │ │ │ +000095f0: 2020 2020 2020 2020 2020 2053 616d 6520 Same │ │ │ │ │ +00009600: 6173 20e2 8098 7363 616c 6528 5b31 2c31 as ...scale([1,1 │ │ │ │ │ +00009610: 2c30 5d29 e280 992e 0ae2 8098 7072 6f6a ,0])........proj │ │ │ │ │ +00009620: 6563 7428 5329 e280 9920 2020 2020 2020 ect(S)... │ │ │ │ │ +00009630: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +00009640: 2073 6361 6c61 7220 2020 2020 2020 2020 scalar │ │ │ │ │ +00009650: 2020 2020 2020 2050 6572 7370 6563 7469 Perspecti │ │ │ │ │ +00009660: 7665 2070 726f 6a65 6374 696f 6e20 7769 ve projection wi │ │ │ │ │ +00009670: 7468 2076 6965 7720 6365 6e74 6572 2061 th view center a │ │ │ │ │ +00009680: 740a 2020 2020 2020 2020 2020 2020 2020 t. │ │ │ │ │ 00009690: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ 000096a0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -000096b0: 2020 2020 2020 6f72 6967 696e 2061 6e64 origin and │ │ │ │ │ -000096c0: 2070 726f 6a65 6374 696f 6e20 706c 616e projection plan │ │ │ │ │ -000096d0: 6520 7a3d 2de2 8098 53e2 8099 2e0a e280 e z=-...S....... │ │ │ │ │ -000096e0: 9870 6572 7370 6563 7469 7665 2853 29e2 .perspective(S). │ │ │ │ │ -000096f0: 8099 2020 2020 2020 2020 2020 2020 2020 .. │ │ │ │ │ -00009700: 2020 2020 2020 7363 616c 6172 2020 2020 scalar │ │ │ │ │ -00009710: 2020 2020 2020 2020 2020 2020 5065 7273 Pers │ │ │ │ │ -00009720: 7065 6374 6976 6520 5f74 7261 6e73 666f pective _transfo │ │ │ │ │ -00009730: 726d 5f20 6964 656e 7469 6361 6c20 746f rm_ identical to │ │ │ │ │ -00009740: 0a20 2020 2020 2020 2020 2020 2020 2020 . │ │ │ │ │ +000096b0: 2020 2020 2020 2020 2020 2020 6f72 6967 orig │ │ │ │ │ +000096c0: 696e 2061 6e64 2070 726f 6a65 6374 696f in and projectio │ │ │ │ │ +000096d0: 6e20 706c 616e 6520 7a3d 2de2 8098 53e2 n plane z=-...S. │ │ │ │ │ +000096e0: 8099 2e0a e280 9870 6572 7370 6563 7469 .......perspecti │ │ │ │ │ +000096f0: 7665 2853 29e2 8099 2020 2020 2020 2020 ve(S)... │ │ │ │ │ +00009700: 2020 2020 2020 2020 2020 2020 7363 616c scal │ │ │ │ │ +00009710: 6172 2020 2020 2020 2020 2020 2020 2020 ar │ │ │ │ │ +00009720: 2020 5065 7273 7065 6374 6976 6520 5f74 Perspective _t │ │ │ │ │ +00009730: 7261 6e73 666f 726d 5f20 6964 656e 7469 ransform_ identi │ │ │ │ │ +00009740: 6361 6c20 746f 0a20 2020 2020 2020 2020 cal to. │ │ │ │ │ 00009750: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ 00009760: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -00009770: 2020 2020 2020 2020 2020 20e2 8098 7072 ...pr │ │ │ │ │ -00009780: 6f6a 6563 7428 5329 e280 9920 6578 6365 oject(S)... exce │ │ │ │ │ -00009790: 7074 2074 6861 7420 7468 6520 7a2d 636f pt that the z-co │ │ │ │ │ -000097a0: 6f72 6469 6e61 7465 206f 660a 2020 2020 ordinate of. │ │ │ │ │ -000097b0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +00009770: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +00009780: 20e2 8098 7072 6f6a 6563 7428 5329 e280 ...project(S).. │ │ │ │ │ +00009790: 9920 6578 6365 7074 2074 6861 7420 7468 . except that th │ │ │ │ │ +000097a0: 6520 7a2d 636f 6f72 6469 6e61 7465 206f e z-coordinate o │ │ │ │ │ +000097b0: 660a 2020 2020 2020 2020 2020 2020 2020 f. │ │ │ │ │ 000097c0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ 000097d0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -000097e0: 2020 2020 2020 7468 6520 7472 616e 7366 the transf │ │ │ │ │ -000097f0: 6f72 6d65 6420 7265 7375 6c74 2069 7320 ormed result is │ │ │ │ │ -00009800: e280 9c70 7365 7564 6f64 6570 7468 e280 ...pseudodepth.. │ │ │ │ │ -00009810: 9d2c 0a20 2020 2020 2020 2020 2020 2020 .,. │ │ │ │ │ +000097e0: 2020 2020 2020 2020 2020 2020 7468 6520 the │ │ │ │ │ +000097f0: 7472 616e 7366 6f72 6d65 6420 7265 7375 transformed resu │ │ │ │ │ +00009800: 6c74 2069 7320 e280 9c70 7365 7564 6f64 lt is ...pseudod │ │ │ │ │ +00009810: 6570 7468 e280 9d2c 0a20 2020 2020 2020 epth...,. │ │ │ │ │ 00009820: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ 00009830: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -00009840: 2020 2020 2020 2020 2020 2020 2075 7361 usa │ │ │ │ │ -00009850: 626c 6520 6279 2074 6865 2068 6964 6465 ble by the hidde │ │ │ │ │ -00009860: 6e20 7375 7266 6163 6520 616c 676f 7269 n surface algori │ │ │ │ │ -00009870: 7468 6d2e 0ae2 8098 7669 6577 2845 2c44 thm.....view(E,D │ │ │ │ │ -00009880: 2c55 29e2 8099 2020 2020 2020 2020 2020 ,U)... │ │ │ │ │ -00009890: 2020 2020 2020 2020 2020 2020 2070 6f69 poi │ │ │ │ │ -000098a0: 6e74 2c76 6563 746f 722c 7665 6374 6f72 nt,vector,vector │ │ │ │ │ -000098b0: 2020 2056 6965 7720 7472 616e 7366 6f72 View transfor │ │ │ │ │ -000098c0: 6d20 7369 6d69 6c61 7220 746f 2074 6861 m similar to tha │ │ │ │ │ -000098d0: 7420 6f66 20e2 8098 4f70 656e 474c e280 t of ...OpenGL.. │ │ │ │ │ -000098e0: 9927 732e 0a20 2020 2020 2020 2020 2020 .'s.. │ │ │ │ │ +00009840: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +00009850: 2020 2075 7361 626c 6520 6279 2074 6865 usable by the │ │ │ │ │ +00009860: 2068 6964 6465 6e20 7375 7266 6163 6520 hidden surface │ │ │ │ │ +00009870: 616c 676f 7269 7468 6d2e 0ae2 8098 7669 algorithm.....vi │ │ │ │ │ +00009880: 6577 2845 2c44 2c55 29e2 8099 2020 2020 ew(E,D,U)... │ │ │ │ │ +00009890: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +000098a0: 2020 2070 6f69 6e74 2c76 6563 746f 722c point,vector, │ │ │ │ │ +000098b0: 7665 6374 6f72 2020 2056 6965 7720 7472 vector View tr │ │ │ │ │ +000098c0: 616e 7366 6f72 6d20 7369 6d69 6c61 7220 ansform similar │ │ │ │ │ +000098d0: 746f 2074 6861 7420 6f66 20e2 8098 4f70 to that of ...Op │ │ │ │ │ +000098e0: 656e 474c e280 9927 732e 0a20 2020 2020 enGL...'s.. │ │ │ │ │ 000098f0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ 00009900: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -00009910: 2020 2020 2020 2020 2020 2020 2020 2054 T │ │ │ │ │ -00009920: 6865 205f 6579 6520 706f 696e 745f 20e2 he _eye point_ . │ │ │ │ │ -00009930: 8098 45e2 8099 2069 7320 7472 616e 736c ..E... is transl │ │ │ │ │ -00009940: 6174 6564 2074 6f20 7468 650a 2020 2020 ated to the. │ │ │ │ │ -00009950: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +00009910: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +00009920: 2020 2020 2054 6865 205f 6579 6520 706f The _eye po │ │ │ │ │ +00009930: 696e 745f 20e2 8098 45e2 8099 2069 7320 int_ ...E... is │ │ │ │ │ +00009940: 7472 616e 736c 6174 6564 2074 6f20 7468 translated to th │ │ │ │ │ +00009950: 650a 2020 2020 2020 2020 2020 2020 2020 e. │ │ │ │ │ 00009960: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ 00009970: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -00009980: 2020 2020 2020 6f72 6967 696e 2077 6869 origin whi │ │ │ │ │ -00009990: 6c65 2061 2072 6f74 6174 696f 6e20 6973 le a rotation is │ │ │ │ │ -000099a0: 2061 6c73 6f20 6170 706c 6965 6420 7468 also applied th │ │ │ │ │ -000099b0: 6174 0a20 2020 2020 2020 2020 2020 2020 at. │ │ │ │ │ +00009980: 2020 2020 2020 2020 2020 2020 6f72 6967 orig │ │ │ │ │ +00009990: 696e 2077 6869 6c65 2061 2072 6f74 6174 in while a rotat │ │ │ │ │ +000099a0: 696f 6e20 6973 2061 6c73 6f20 6170 706c ion is also appl │ │ │ │ │ +000099b0: 6965 6420 7468 6174 0a20 2020 2020 2020 ied that. │ │ │ │ │ 000099c0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ 000099d0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -000099e0: 2020 2020 2020 2020 2020 2020 206d 616b mak │ │ │ │ │ -000099f0: 6573 2074 6865 205f 7669 6577 2064 6972 es the _view dir │ │ │ │ │ -00009a00: 6563 7469 6f6e 2076 6563 746f 725f 20e2 ection vector_ . │ │ │ │ │ -00009a10: 8098 44e2 8099 2061 6e64 2074 6865 0a20 ..D... and the. │ │ │ │ │ -00009a20: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +000099e0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +000099f0: 2020 206d 616b 6573 2074 6865 205f 7669 makes the _vi │ │ │ │ │ +00009a00: 6577 2064 6972 6563 7469 6f6e 2076 6563 ew direction vec │ │ │ │ │ +00009a10: 746f 725f 20e2 8098 44e2 8099 2061 6e64 tor_ ...D... and │ │ │ │ │ +00009a20: 2074 6865 0a20 2020 2020 2020 2020 2020 the. │ │ │ │ │ 00009a30: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ 00009a40: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -00009a50: 2020 2020 2020 2020 205f 7669 6577 2022 _view " │ │ │ │ │ -00009a60: 7570 2220 7665 6374 6f72 5f20 e280 9855 up" vector_ ...U │ │ │ │ │ -00009a70: e280 9920 706f 696e 7420 696e 2074 6865 ... point in the │ │ │ │ │ -00009a80: 206e 6567 6174 6976 650a 2020 2020 2020 negative. │ │ │ │ │ +00009a50: 2020 2020 2020 2020 2020 2020 2020 205f _ │ │ │ │ │ +00009a60: 7669 6577 2022 7570 2220 7665 6374 6f72 view "up" vector │ │ │ │ │ +00009a70: 5f20 e280 9855 e280 9920 706f 696e 7420 _ ...U... point │ │ │ │ │ +00009a80: 696e 2074 6865 206e 6567 6174 6976 650a in the negative. │ │ │ │ │ 00009a90: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ 00009aa0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ 00009ab0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -00009ac0: 2020 2020 7a2d 2061 6e64 2074 6865 2079 z- and the y │ │ │ │ │ -00009ad0: 2d64 6972 6563 7469 6f6e 7320 7265 7370 -directions resp │ │ │ │ │ -00009ae0: 6563 7469 7665 6c79 2e20 2049 6620 e280 ectively. If .. │ │ │ │ │ -00009af0: 9855 e280 990a 2020 2020 2020 2020 2020 .U.... │ │ │ │ │ +00009ac0: 2020 2020 2020 2020 2020 7a2d 2061 6e64 z- and │ │ │ │ │ +00009ad0: 2074 6865 2079 2d64 6972 6563 7469 6f6e the y-direction │ │ │ │ │ +00009ae0: 7320 7265 7370 6563 7469 7665 6c79 2e20 s respectively. │ │ │ │ │ +00009af0: 2049 6620 e280 9855 e280 990a 2020 2020 If ...U.... │ │ │ │ │ 00009b00: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ 00009b10: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ 00009b20: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -00009b30: 6973 206f 6d69 7474 6564 2c20 6974 2064 is omitted, it d │ │ │ │ │ -00009b40: 6566 6175 6c74 7320 746f 205b 302c 312c efaults to [0,1, │ │ │ │ │ -00009b50: 305d 2e20 2057 6865 6e20 e280 9855 e280 0]. When ...U.. │ │ │ │ │ -00009b60: 990a 2020 2020 2020 2020 2020 2020 2020 .. │ │ │ │ │ +00009b30: 2020 2020 2020 6973 206f 6d69 7474 6564 is omitted │ │ │ │ │ +00009b40: 2c20 6974 2064 6566 6175 6c74 7320 746f , it defaults to │ │ │ │ │ +00009b50: 205b 302c 312c 305d 2e20 2057 6865 6e20 [0,1,0]. When │ │ │ │ │ +00009b60: e280 9855 e280 990a 2020 2020 2020 2020 ...U.... │ │ │ │ │ 00009b70: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ 00009b80: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -00009b90: 2020 2020 2020 2020 2020 2020 6973 206f is o │ │ │ │ │ -00009ba0: 6d69 7474 6564 2c20 e280 9844 e280 9920 mitted, ...D... │ │ │ │ │ -00009bb0: 6d61 7920 6265 2061 6c73 6f3b 2069 7420 may be also; it │ │ │ │ │ -00009bc0: 6465 6661 756c 7473 2074 6f0a 2020 2020 defaults to. │ │ │ │ │ -00009bd0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +00009b90: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +00009ba0: 2020 6973 206f 6d69 7474 6564 2c20 e280 is omitted, .. │ │ │ │ │ +00009bb0: 9844 e280 9920 6d61 7920 6265 2061 6c73 .D... may be als │ │ │ │ │ +00009bc0: 6f3b 2069 7420 6465 6661 756c 7473 2074 o; it defaults t │ │ │ │ │ +00009bd0: 6f0a 2020 2020 2020 2020 2020 2020 2020 o. │ │ │ │ │ 00009be0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ 00009bf0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -00009c00: 2020 2020 2020 e280 9828 302c 302c 3029 ...(0,0,0) │ │ │ │ │ -00009c10: 2d28 4529 e280 992c 2061 2076 6563 746f -(E)..., a vecto │ │ │ │ │ -00009c20: 7220 706f 696e 7469 6e67 2066 726f 6d20 r pointing from │ │ │ │ │ -00009c30: 7468 6520 6579 650a 2020 2020 2020 2020 the eye. │ │ │ │ │ +00009c00: 2020 2020 2020 2020 2020 2020 e280 9828 ...( │ │ │ │ │ +00009c10: 302c 302c 3029 2d28 4529 e280 992c 2061 0,0,0)-(E)..., a │ │ │ │ │ +00009c20: 2076 6563 746f 7220 706f 696e 7469 6e67 vector pointing │ │ │ │ │ +00009c30: 2066 726f 6d20 7468 6520 6579 650a 2020 from the eye. │ │ │ │ │ 00009c40: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ 00009c50: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ 00009c60: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -00009c70: 2020 746f 7761 7264 2074 6865 206f 7269 toward the ori │ │ │ │ │ -00009c80: 6769 6e2e 0ae2 8098 7669 6577 2845 2c4c gin.....view(E,L │ │ │ │ │ -00009c90: 2c55 29e2 8099 2020 2020 2020 2020 2020 ,U)... │ │ │ │ │ -00009ca0: 2020 2020 2020 2020 2020 2020 2070 6f69 poi │ │ │ │ │ -00009cb0: 6e74 2c70 6f69 6e74 2c76 6563 746f 7220 nt,point,vector │ │ │ │ │ -00009cc0: 2020 2041 6e20 616c 7465 726e 6174 6520 An alternate │ │ │ │ │ -00009cd0: 666f 726d 206f 6620 e280 9876 6965 7728 form of ...view( │ │ │ │ │ -00009ce0: 452c 442c 5529 e280 9920 6162 6f76 6520 E,D,U)... above │ │ │ │ │ -00009cf0: 7768 6572 650a 2020 2020 2020 2020 2020 where. │ │ │ │ │ +00009c70: 2020 2020 2020 2020 746f 7761 7264 2074 toward t │ │ │ │ │ +00009c80: 6865 206f 7269 6769 6e2e 0ae2 8098 7669 he origin.....vi │ │ │ │ │ +00009c90: 6577 2845 2c4c 2c55 29e2 8099 2020 2020 ew(E,L,U)... │ │ │ │ │ +00009ca0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +00009cb0: 2020 2070 6f69 6e74 2c70 6f69 6e74 2c76 point,point,v │ │ │ │ │ +00009cc0: 6563 746f 7220 2020 2041 6e20 616c 7465 ector An alte │ │ │ │ │ +00009cd0: 726e 6174 6520 666f 726d 206f 6620 e280 rnate form of .. │ │ │ │ │ +00009ce0: 9876 6965 7728 452c 442c 5529 e280 9920 .view(E,D,U)... │ │ │ │ │ +00009cf0: 6162 6f76 6520 7768 6572 650a 2020 2020 above where. │ │ │ │ │ 00009d00: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ 00009d10: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ 00009d20: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -00009d30: 7468 6520 7669 6577 2064 6972 6563 7469 the view directi │ │ │ │ │ -00009d40: 6f6e 2070 6172 616d 6574 6572 20e2 8098 on parameter ... │ │ │ │ │ -00009d50: 44e2 8099 2069 7320 7265 706c 6163 6564 D... is replaced │ │ │ │ │ -00009d60: 0a20 2020 2020 2020 2020 2020 2020 2020 . │ │ │ │ │ +00009d30: 2020 2020 2020 7468 6520 7669 6577 2064 the view d │ │ │ │ │ +00009d40: 6972 6563 7469 6f6e 2070 6172 616d 6574 irection paramet │ │ │ │ │ +00009d50: 6572 20e2 8098 44e2 8099 2069 7320 7265 er ...D... is re │ │ │ │ │ +00009d60: 706c 6163 6564 0a20 2020 2020 2020 2020 placed. │ │ │ │ │ 00009d70: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ 00009d80: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -00009d90: 2020 2020 2020 2020 2020 2077 6974 6820 with │ │ │ │ │ -00009da0: 6120 226c 6f6f 6b20 6174 2220 706f 696e a "look at" poin │ │ │ │ │ -00009db0: 7420 e280 984c e280 992c 2069 2e65 2e2c t ...L..., i.e., │ │ │ │ │ -00009dc0: 2061 2070 6f69 6e74 0a20 2020 2020 2020 a point. │ │ │ │ │ +00009d90: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +00009da0: 2077 6974 6820 6120 226c 6f6f 6b20 6174 with a "look at │ │ │ │ │ +00009db0: 2220 706f 696e 7420 e280 984c e280 992c " point ...L..., │ │ │ │ │ +00009dc0: 2069 2e65 2e2c 2061 2070 6f69 6e74 0a20 i.e., a point. │ │ │ │ │ 00009dd0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ 00009de0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ 00009df0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -00009e00: 2020 2077 6865 7265 2074 6865 2076 6965 where the vie │ │ │ │ │ -00009e10: 7765 7220 6973 2066 6f63 7573 696e 6720 wer is focusing │ │ │ │ │ -00009e20: 6865 7220 6174 7465 6e74 696f 6e2e 0a20 her attention.. │ │ │ │ │ -00009e30: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +00009e00: 2020 2020 2020 2020 2077 6865 7265 2074 where t │ │ │ │ │ +00009e10: 6865 2076 6965 7765 7220 6973 2066 6f63 he viewer is foc │ │ │ │ │ +00009e20: 7573 696e 6720 6865 7220 6174 7465 6e74 using her attent │ │ │ │ │ +00009e30: 696f 6e2e 0a20 2020 2020 2020 2020 2020 ion.. │ │ │ │ │ 00009e40: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ 00009e50: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -00009e60: 2020 2020 2020 2020 2054 6869 7320 666f This fo │ │ │ │ │ -00009e70: 726d 206f 6620 7669 6577 2069 7320 6571 rm of view is eq │ │ │ │ │ -00009e80: 7569 7661 6c65 6e74 2074 6f20 e280 9876 uivalent to ...v │ │ │ │ │ -00009e90: 6965 7728 452c 0a20 2020 2020 2020 2020 iew(E,. │ │ │ │ │ +00009e60: 2020 2020 2020 2020 2020 2020 2020 2054 T │ │ │ │ │ +00009e70: 6869 7320 666f 726d 206f 6620 7669 6577 his form of view │ │ │ │ │ +00009e80: 2069 7320 6571 7569 7661 6c65 6e74 2074 is equivalent t │ │ │ │ │ +00009e90: 6f20 e280 9876 6965 7728 452c 0a20 2020 o ...view(E,. │ │ │ │ │ 00009ea0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ 00009eb0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ 00009ec0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -00009ed0: 2028 4c29 2d28 4529 2c20 5529 e280 992c (L)-(E), U)..., │ │ │ │ │ -00009ee0: 2077 6865 7265 20e2 8098 284c 292d 2845 where ...(L)-(E │ │ │ │ │ -00009ef0: 29e2 8099 2069 7320 6120 6469 7265 6374 )... is a direct │ │ │ │ │ -00009f00: 696f 6e0a 2020 2020 2020 2020 2020 2020 ion. │ │ │ │ │ +00009ed0: 2020 2020 2020 2028 4c29 2d28 4529 2c20 (L)-(E), │ │ │ │ │ +00009ee0: 5529 e280 992c 2077 6865 7265 20e2 8098 U)..., where ... │ │ │ │ │ +00009ef0: 284c 292d 2845 29e2 8099 2069 7320 6120 (L)-(E)... is a │ │ │ │ │ +00009f00: 6469 7265 6374 696f 6e0a 2020 2020 2020 direction. │ │ │ │ │ 00009f10: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ 00009f20: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -00009f30: 2020 2020 2020 2020 2020 2020 2020 7665 ve │ │ │ │ │ -00009f40: 6374 6f72 2e20 20e2 8098 55e2 8099 2069 ctor. ...U... i │ │ │ │ │ -00009f50: 7320 6f70 7469 6f6e 616c 2061 6e64 2064 s optional and d │ │ │ │ │ -00009f60: 6566 6175 6c74 7320 746f 0a20 2020 2020 efaults to. │ │ │ │ │ -00009f70: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +00009f30: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +00009f40: 2020 2020 7665 6374 6f72 2e20 20e2 8098 vector. ... │ │ │ │ │ +00009f50: 55e2 8099 2069 7320 6f70 7469 6f6e 616c U... is optional │ │ │ │ │ +00009f60: 2061 6e64 2064 6566 6175 6c74 7320 746f and defaults to │ │ │ │ │ +00009f70: 0a20 2020 2020 2020 2020 2020 2020 2020 . │ │ │ │ │ 00009f80: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ 00009f90: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -00009fa0: 2020 2020 205b 302c 312c 305d 2e0a e280 [0,1,0].... │ │ │ │ │ -00009fb0: 985b 5b61 5f7b 3131 7d2c 615f 7b31 327d .[[a_{11},a_{12} │ │ │ │ │ -00009fc0: 2c61 5f7b 3133 7d2c 615f 7b31 347d 5de2 ,a_{13},a_{14}]. │ │ │ │ │ -00009fd0: 8099 2020 2020 3136 2073 6361 6c61 7273 .. 16 scalars │ │ │ │ │ -00009fe0: 2020 2020 2020 2020 2020 2020 4469 7265 Dire │ │ │ │ │ -00009ff0: 6374 2074 7261 6e73 666f 726d 206d 6174 ct transform mat │ │ │ │ │ -0000a000: 7269 7820 6465 6669 6e69 7469 6f6e 2e20 rix definition. │ │ │ │ │ -0000a010: 2045 6163 6820 6f66 0ae2 8098 205b 615f Each of.... [a_ │ │ │ │ │ -0000a020: 7b32 317d 2c61 5f7b 3232 7d2c 615f 7b32 {21},a_{22},a_{2 │ │ │ │ │ -0000a030: 337d 2c61 5f7b 3234 7d5d e280 9920 2020 3},a_{24}]... │ │ │ │ │ -0000a040: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -0000a050: 2020 2020 2020 2074 6865 2061 5f7b 696a the a_{ij │ │ │ │ │ -0000a060: 7d20 6973 2061 2073 6361 6c61 7220 6578 } is a scalar ex │ │ │ │ │ -0000a070: 7072 6573 7369 6f6e 2e20 2053 6565 2074 pression. See t │ │ │ │ │ -0000a080: 6578 740a e280 9820 5b61 5f7b 3331 7d2c ext.... [a_{31}, │ │ │ │ │ -0000a090: 615f 7b33 327d 2c61 5f7b 3333 7d2c 615f a_{32},a_{33},a_ │ │ │ │ │ -0000a0a0: 7b33 347d 5de2 8099 2020 2020 2020 2020 {34}]... │ │ │ │ │ +00009fa0: 2020 2020 2020 2020 2020 205b 302c 312c [0,1, │ │ │ │ │ +00009fb0: 305d 2e0a e280 985b 5b61 5f7b 3131 7d2c 0].....[[a_{11}, │ │ │ │ │ +00009fc0: 615f 7b31 327d 2c61 5f7b 3133 7d2c 615f a_{12},a_{13},a_ │ │ │ │ │ +00009fd0: 7b31 347d 5de2 8099 2020 2020 3136 2073 {14}]... 16 s │ │ │ │ │ +00009fe0: 6361 6c61 7273 2020 2020 2020 2020 2020 calars │ │ │ │ │ +00009ff0: 2020 4469 7265 6374 2074 7261 6e73 666f Direct transfo │ │ │ │ │ +0000a000: 726d 206d 6174 7269 7820 6465 6669 6e69 rm matrix defini │ │ │ │ │ +0000a010: 7469 6f6e 2e20 2045 6163 6820 6f66 0ae2 tion. Each of.. │ │ │ │ │ +0000a020: 8098 205b 615f 7b32 317d 2c61 5f7b 3232 .. [a_{21},a_{22 │ │ │ │ │ +0000a030: 7d2c 615f 7b32 337d 2c61 5f7b 3234 7d5d },a_{23},a_{24}] │ │ │ │ │ +0000a040: e280 9920 2020 2020 2020 2020 2020 2020 ... │ │ │ │ │ +0000a050: 2020 2020 2020 2020 2020 2020 2074 6865 the │ │ │ │ │ +0000a060: 2061 5f7b 696a 7d20 6973 2061 2073 6361 a_{ij} is a sca │ │ │ │ │ +0000a070: 6c61 7220 6578 7072 6573 7369 6f6e 2e20 lar expression. │ │ │ │ │ +0000a080: 2053 6565 2074 6578 740a e280 9820 5b61 See text.... [a │ │ │ │ │ +0000a090: 5f7b 3331 7d2c 615f 7b33 327d 2c61 5f7b _{31},a_{32},a_{ │ │ │ │ │ +0000a0a0: 3333 7d2c 615f 7b33 347d 5de2 8099 2020 33},a_{34}]... │ │ │ │ │ 0000a0b0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -0000a0c0: 2020 666f 7220 6465 7461 696c 732e 0ae2 for details... │ │ │ │ │ -0000a0d0: 8098 205b 615f 7b34 317d 2c61 5f7b 3432 .. [a_{41},a_{42 │ │ │ │ │ -0000a0e0: 7d2c 615f 7b34 337d 2c61 5f7b 3434 7d5d },a_{43},a_{44}] │ │ │ │ │ -0000a0f0: 5de2 8099 0a54 6865 20e2 8098 7072 6f6a ]....The ...proj │ │ │ │ │ -0000a100: 6563 74e2 8099 2063 6f6e 7374 7275 6374 ect... construct │ │ │ │ │ -0000a110: 6f72 2069 7320 6e6f 7420 6765 6e65 7261 or is not genera │ │ │ │ │ -0000a120: 6c6c 7920 7573 6566 756c 2062 6563 6175 lly useful becau │ │ │ │ │ -0000a130: 7365 2069 7420 6465 6665 6174 730a 6869 se it defeats.hi │ │ │ │ │ -0000a140: 6464 656e 2073 7572 6661 6365 2072 656d dden surface rem │ │ │ │ │ -0000a150: 6f76 616c 2062 7920 636f 6c6c 6170 7369 oval by collapsi │ │ │ │ │ -0000a160: 6e67 2074 6865 2073 6365 6e65 206f 6e74 ng the scene ont │ │ │ │ │ -0000a170: 6f20 6120 7369 6e67 6c65 2070 6c61 6e65 o a single plane │ │ │ │ │ -0000a180: 2e20 2049 740a 6973 2061 2073 7065 6369 . It.is a speci │ │ │ │ │ -0000a190: 616c 2070 7572 706f 7365 2074 7261 6e73 al purpose trans │ │ │ │ │ -0000a1a0: 666f 726d 2066 6f72 2064 7261 7769 6e67 form for drawing │ │ │ │ │ -0000a1b0: 2070 6963 7475 7265 7320 6f66 2073 6365 pictures of sce │ │ │ │ │ -0000a1c0: 6e65 7320 7768 6572 650a 7468 7265 652d nes where.three- │ │ │ │ │ -0000a1d0: 6469 6d65 6e73 696f 6e61 6c20 6f62 6a65 dimensional obje │ │ │ │ │ -0000a1e0: 6374 7320 6172 6520 6265 696e 6720 7072 cts are being pr │ │ │ │ │ -0000a1f0: 6f6a 6563 7465 6420 6f6e 746f 2070 6c61 ojected onto pla │ │ │ │ │ -0000a200: 6e65 732e 2020 5365 652c 2066 6f72 0a65 nes. See, for.e │ │ │ │ │ -0000a210: 7861 6d70 6c65 2c20 2a6e 6f74 6520 4f76 xample, *note Ov │ │ │ │ │ -0000a220: 6572 7669 6577 3a3a 2e0a 0a20 2020 5468 erview::... Th │ │ │ │ │ -0000a230: 6520 6469 7265 6374 2074 7261 6e73 666f e direct transfo │ │ │ │ │ -0000a240: 726d 2063 6f6e 7374 7275 6374 6f72 2061 rm constructor a │ │ │ │ │ -0000a250: 6c6c 6f77 7320 6469 7265 6374 2065 6e74 llows direct ent │ │ │ │ │ -0000a260: 7279 206f 6620 6120 3478 340a 7472 616e ry of a 4x4.tran │ │ │ │ │ -0000a270: 7366 6f72 6d61 7469 6f6e 206d 6174 7269 sformation matri │ │ │ │ │ -0000a280: 782e 2020 4d6f 7374 2033 6420 6772 6170 x. Most 3d grap │ │ │ │ │ -0000a290: 6869 6373 2073 7973 7465 6d73 2c20 696e hics systems, in │ │ │ │ │ -0000a2a0: 636c 7564 696e 6720 e280 9873 6b65 7463 cluding ...sketc │ │ │ │ │ -0000a2b0: 68e2 8099 2c0a 7573 6520 342d 6469 6d65 h...,.use 4-dime │ │ │ │ │ -0000a2c0: 6e73 696f 6e61 6c20 686f 6d6f 6765 6e65 nsional homogene │ │ │ │ │ -0000a2d0: 6f75 7320 636f 6f72 6469 6e61 7465 7320 ous coordinates │ │ │ │ │ -0000a2e0: 696e 7465 726e 616c 6c79 2e20 2054 6865 internally. The │ │ │ │ │ -0000a2f0: 7365 2061 7265 0a74 7261 6e73 666f 726d se are.transform │ │ │ │ │ -0000a300: 6564 2062 7920 6d75 6c74 6970 6c69 6361 ed by multiplica │ │ │ │ │ -0000a310: 7469 6f6e 2077 6974 6820 3478 3420 6d61 tion with 4x4 ma │ │ │ │ │ -0000a320: 7472 6963 6573 2e20 2054 6865 2062 7569 trices. The bui │ │ │ │ │ -0000a330: 6c74 2d69 6e0a 636f 6e73 7472 7563 746f lt-in.constructo │ │ │ │ │ -0000a340: 7273 2028 e280 9872 6f74 6174 65e2 8099 rs (...rotate... │ │ │ │ │ -0000a350: 2c20 e280 9873 6361 6c65 e280 992c 2065 , ...scale..., e │ │ │ │ │ -0000a360: 7463 2e29 2020 6172 6520 616c 6c20 7472 tc.) are all tr │ │ │ │ │ -0000a370: 616e 736c 6174 6564 2069 6e74 6572 6e61 anslated interna │ │ │ │ │ -0000a380: 6c6c 7920 746f 0a73 7563 6820 3478 3420 lly to.such 4x4 │ │ │ │ │ -0000a390: 6d61 7472 6963 6573 2e20 2046 6f72 206d matrices. For m │ │ │ │ │ -0000a3a0: 6f72 6520 696e 666f 726d 6174 696f 6e20 ore information │ │ │ │ │ -0000a3b0: 6f6e 2068 6f6d 6f67 656e 656f 7573 2063 on homogeneous c │ │ │ │ │ -0000a3c0: 6f6f 7264 696e 6174 650a 7472 616e 7366 oordinate.transf │ │ │ │ │ -0000a3d0: 6f72 6d61 7469 6f6e 732c 2073 6565 2061 ormations, see a │ │ │ │ │ -0000a3e0: 6e79 2067 6f6f 6420 636f 6d70 7574 6572 ny good computer │ │ │ │ │ -0000a3f0: 2067 7261 7068 6963 7320 7465 7874 626f graphics textbo │ │ │ │ │ -0000a400: 6f6b 2e20 2054 6865 2064 6972 6563 740a ok. The direct. │ │ │ │ │ -0000a410: 7472 616e 7366 6f72 6d20 6665 6174 7572 transform featur │ │ │ │ │ -0000a420: 6520 6f66 20e2 8098 736b 6574 6368 e280 e of ...sketch.. │ │ │ │ │ -0000a430: 9920 616c 6c6f 7773 2079 6f75 2074 6f20 . allows you to │ │ │ │ │ -0000a440: 656e 7465 7220 6120 6d61 7472 6978 206f enter a matrix o │ │ │ │ │ -0000a450: 6620 796f 7572 206f 776e 0a63 686f 6963 f your own.choic │ │ │ │ │ -0000a460: 652e 2020 5468 6572 6520 6172 6520 6e6f e. There are no │ │ │ │ │ -0000a470: 7420 6d61 6e79 2063 6173 6573 2077 6865 t many cases whe │ │ │ │ │ -0000a480: 7265 2074 6869 7320 6973 2075 7365 6675 re this is usefu │ │ │ │ │ -0000a490: 6c2c 2062 7574 2069 6620 796f 7520 646f l, but if you do │ │ │ │ │ -0000a4a0: 0a6e 6565 6420 6974 2c20 796f 7520 6e65 .need it, you ne │ │ │ │ │ -0000a4b0: 6564 2069 7420 6261 646c 7921 0a0a 1f0a ed it badly!.... │ │ │ │ │ -0000a4c0: 4669 6c65 3a20 736b 6574 6368 2e69 6e66 File: sketch.inf │ │ │ │ │ -0000a4d0: 6f2c 2020 4e6f 6465 3a20 4172 6974 686d o, Node: Arithm │ │ │ │ │ -0000a4e0: 6574 6963 2c20 204e 6578 743a 204f 7074 etic, Next: Opt │ │ │ │ │ -0000a4f0: 696f 6e73 2c20 2050 7265 763a 204c 6974 ions, Prev: Lit │ │ │ │ │ -0000a500: 6572 616c 732c 2020 5570 3a20 4c61 6e67 erals, Up: Lang │ │ │ │ │ -0000a510: 7561 6765 2062 6173 6963 730a 0a33 2e31 uage basics..3.1 │ │ │ │ │ -0000a520: 2e34 2041 7269 7468 6d65 7469 6320 6578 .4 Arithmetic ex │ │ │ │ │ -0000a530: 7072 6573 7369 6f6e 730a 2d2d 2d2d 2d2d pressions.------ │ │ │ │ │ +0000a0c0: 2020 2020 2020 2020 666f 7220 6465 7461 for deta │ │ │ │ │ +0000a0d0: 696c 732e 0ae2 8098 205b 615f 7b34 317d ils..... [a_{41} │ │ │ │ │ +0000a0e0: 2c61 5f7b 3432 7d2c 615f 7b34 337d 2c61 ,a_{42},a_{43},a │ │ │ │ │ +0000a0f0: 5f7b 3434 7d5d 5de2 8099 0a54 6865 20e2 _{44}]]....The . │ │ │ │ │ +0000a100: 8098 7072 6f6a 6563 74e2 8099 2063 6f6e ..project... con │ │ │ │ │ +0000a110: 7374 7275 6374 6f72 2069 7320 6e6f 7420 structor is not │ │ │ │ │ +0000a120: 6765 6e65 7261 6c6c 7920 7573 6566 756c generally useful │ │ │ │ │ +0000a130: 2062 6563 6175 7365 2069 7420 6465 6665 because it defe │ │ │ │ │ +0000a140: 6174 730a 6869 6464 656e 2073 7572 6661 ats.hidden surfa │ │ │ │ │ +0000a150: 6365 2072 656d 6f76 616c 2062 7920 636f ce removal by co │ │ │ │ │ +0000a160: 6c6c 6170 7369 6e67 2074 6865 2073 6365 llapsing the sce │ │ │ │ │ +0000a170: 6e65 206f 6e74 6f20 6120 7369 6e67 6c65 ne onto a single │ │ │ │ │ +0000a180: 2070 6c61 6e65 2e20 2049 740a 6973 2061 plane. It.is a │ │ │ │ │ +0000a190: 2073 7065 6369 616c 2070 7572 706f 7365 special purpose │ │ │ │ │ +0000a1a0: 2074 7261 6e73 666f 726d 2066 6f72 2064 transform for d │ │ │ │ │ +0000a1b0: 7261 7769 6e67 2070 6963 7475 7265 7320 rawing pictures │ │ │ │ │ +0000a1c0: 6f66 2073 6365 6e65 7320 7768 6572 650a of scenes where. │ │ │ │ │ +0000a1d0: 7468 7265 652d 6469 6d65 6e73 696f 6e61 three-dimensiona │ │ │ │ │ +0000a1e0: 6c20 6f62 6a65 6374 7320 6172 6520 6265 l objects are be │ │ │ │ │ +0000a1f0: 696e 6720 7072 6f6a 6563 7465 6420 6f6e ing projected on │ │ │ │ │ +0000a200: 746f 2070 6c61 6e65 732e 2020 5365 652c to planes. See, │ │ │ │ │ +0000a210: 2066 6f72 0a65 7861 6d70 6c65 2c20 2a6e for.example, *n │ │ │ │ │ +0000a220: 6f74 6520 4f76 6572 7669 6577 3a3a 2e0a ote Overview::.. │ │ │ │ │ +0000a230: 0a20 2020 5468 6520 6469 7265 6374 2074 . The direct t │ │ │ │ │ +0000a240: 7261 6e73 666f 726d 2063 6f6e 7374 7275 ransform constru │ │ │ │ │ +0000a250: 6374 6f72 2061 6c6c 6f77 7320 6469 7265 ctor allows dire │ │ │ │ │ +0000a260: 6374 2065 6e74 7279 206f 6620 6120 3478 ct entry of a 4x │ │ │ │ │ +0000a270: 340a 7472 616e 7366 6f72 6d61 7469 6f6e 4.transformation │ │ │ │ │ +0000a280: 206d 6174 7269 782e 2020 4d6f 7374 2033 matrix. Most 3 │ │ │ │ │ +0000a290: 6420 6772 6170 6869 6373 2073 7973 7465 d graphics syste │ │ │ │ │ +0000a2a0: 6d73 2c20 696e 636c 7564 696e 6720 e280 ms, including .. │ │ │ │ │ +0000a2b0: 9873 6b65 7463 68e2 8099 2c0a 7573 6520 .sketch...,.use │ │ │ │ │ +0000a2c0: 342d 6469 6d65 6e73 696f 6e61 6c20 686f 4-dimensional ho │ │ │ │ │ +0000a2d0: 6d6f 6765 6e65 6f75 7320 636f 6f72 6469 mogeneous coordi │ │ │ │ │ +0000a2e0: 6e61 7465 7320 696e 7465 726e 616c 6c79 nates internally │ │ │ │ │ +0000a2f0: 2e20 2054 6865 7365 2061 7265 0a74 7261 . These are.tra │ │ │ │ │ +0000a300: 6e73 666f 726d 6564 2062 7920 6d75 6c74 nsformed by mult │ │ │ │ │ +0000a310: 6970 6c69 6361 7469 6f6e 2077 6974 6820 iplication with │ │ │ │ │ +0000a320: 3478 3420 6d61 7472 6963 6573 2e20 2054 4x4 matrices. T │ │ │ │ │ +0000a330: 6865 2062 7569 6c74 2d69 6e0a 636f 6e73 he built-in.cons │ │ │ │ │ +0000a340: 7472 7563 746f 7273 2028 e280 9872 6f74 tructors (...rot │ │ │ │ │ +0000a350: 6174 65e2 8099 2c20 e280 9873 6361 6c65 ate..., ...scale │ │ │ │ │ +0000a360: e280 992c 2065 7463 2e29 2020 6172 6520 ..., etc.) are │ │ │ │ │ +0000a370: 616c 6c20 7472 616e 736c 6174 6564 2069 all translated i │ │ │ │ │ +0000a380: 6e74 6572 6e61 6c6c 7920 746f 0a73 7563 nternally to.suc │ │ │ │ │ +0000a390: 6820 3478 3420 6d61 7472 6963 6573 2e20 h 4x4 matrices. │ │ │ │ │ +0000a3a0: 2046 6f72 206d 6f72 6520 696e 666f 726d For more inform │ │ │ │ │ +0000a3b0: 6174 696f 6e20 6f6e 2068 6f6d 6f67 656e ation on homogen │ │ │ │ │ +0000a3c0: 656f 7573 2063 6f6f 7264 696e 6174 650a eous coordinate. │ │ │ │ │ +0000a3d0: 7472 616e 7366 6f72 6d61 7469 6f6e 732c transformations, │ │ │ │ │ +0000a3e0: 2073 6565 2061 6e79 2067 6f6f 6420 636f see any good co │ │ │ │ │ +0000a3f0: 6d70 7574 6572 2067 7261 7068 6963 7320 mputer graphics │ │ │ │ │ +0000a400: 7465 7874 626f 6f6b 2e20 2054 6865 2064 textbook. The d │ │ │ │ │ +0000a410: 6972 6563 740a 7472 616e 7366 6f72 6d20 irect.transform │ │ │ │ │ +0000a420: 6665 6174 7572 6520 6f66 20e2 8098 736b feature of ...sk │ │ │ │ │ +0000a430: 6574 6368 e280 9920 616c 6c6f 7773 2079 etch... allows y │ │ │ │ │ +0000a440: 6f75 2074 6f20 656e 7465 7220 6120 6d61 ou to enter a ma │ │ │ │ │ +0000a450: 7472 6978 206f 6620 796f 7572 206f 776e trix of your own │ │ │ │ │ +0000a460: 0a63 686f 6963 652e 2020 5468 6572 6520 .choice. There │ │ │ │ │ +0000a470: 6172 6520 6e6f 7420 6d61 6e79 2063 6173 are not many cas │ │ │ │ │ +0000a480: 6573 2077 6865 7265 2074 6869 7320 6973 es where this is │ │ │ │ │ +0000a490: 2075 7365 6675 6c2c 2062 7574 2069 6620 useful, but if │ │ │ │ │ +0000a4a0: 796f 7520 646f 0a6e 6565 6420 6974 2c20 you do.need it, │ │ │ │ │ +0000a4b0: 796f 7520 6e65 6564 2069 7420 6261 646c you need it badl │ │ │ │ │ +0000a4c0: 7921 0a0a 1f0a 4669 6c65 3a20 736b 6574 y!....File: sket │ │ │ │ │ +0000a4d0: 6368 2e69 6e66 6f2c 2020 4e6f 6465 3a20 ch.info, Node: │ │ │ │ │ +0000a4e0: 4172 6974 686d 6574 6963 2c20 204e 6578 Arithmetic, Nex │ │ │ │ │ +0000a4f0: 743a 204f 7074 696f 6e73 2c20 2050 7265 t: Options, Pre │ │ │ │ │ +0000a500: 763a 204c 6974 6572 616c 732c 2020 5570 v: Literals, Up │ │ │ │ │ +0000a510: 3a20 4c61 6e67 7561 6765 2062 6173 6963 : Language basic │ │ │ │ │ +0000a520: 730a 0a33 2e31 2e34 2041 7269 7468 6d65 s..3.1.4 Arithme │ │ │ │ │ +0000a530: 7469 6320 6578 7072 6573 7369 6f6e 730a tic expressions. │ │ │ │ │ 0000a540: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ -0000a550: 2d2d 2d2d 2d2d 0a0a 4172 6974 686d 6574 ------..Arithmet │ │ │ │ │ -0000a560: 6963 2065 7870 7265 7373 696f 6e73 206f ic expressions o │ │ │ │ │ -0000a570: 7665 7220 e280 9873 6b65 7463 68e2 8099 ver ...sketch... │ │ │ │ │ -0000a580: 206c 6974 6572 616c 7320 616e 6420 6465 literals and de │ │ │ │ │ -0000a590: 6669 6e65 6420 6964 656e 7469 6669 6572 fined identifier │ │ │ │ │ -0000a5a0: 730a 6172 6520 7375 6d6d 6172 697a 6564 s.are summarized │ │ │ │ │ -0000a5b0: 2069 6e20 7468 6520 666f 6c6c 6f77 696e in the followin │ │ │ │ │ -0000a5c0: 6720 7461 626c 6573 2e0a 0a2a 204d 656e g tables...* Men │ │ │ │ │ -0000a5d0: 753a 0a0a 2a20 5477 6f2d 6f70 6572 616e u:..* Two-operan │ │ │ │ │ -0000a5e0: 6420 2862 696e 6172 7929 2066 6f72 6d73 d (binary) forms │ │ │ │ │ -0000a5f0: 3a3a 2020 4120 6f70 2042 0a2a 2055 6e61 :: A op B.* Una │ │ │ │ │ -0000a600: 7279 2066 6f72 6d73 3a3a 2020 2020 2020 ry forms:: │ │ │ │ │ -0000a610: 2020 2020 2020 2020 2020 206f 7020 4120 op A │ │ │ │ │ -0000a620: 2861 6e64 206f 7468 6572 7329 0a0a 1f0a (and others).... │ │ │ │ │ -0000a630: 4669 6c65 3a20 736b 6574 6368 2e69 6e66 File: sketch.inf │ │ │ │ │ -0000a640: 6f2c 2020 4e6f 6465 3a20 5477 6f2d 6f70 o, Node: Two-op │ │ │ │ │ -0000a650: 6572 616e 6420 2862 696e 6172 7929 2066 erand (binary) f │ │ │ │ │ -0000a660: 6f72 6d73 2c20 204e 6578 743a 2055 6e61 orms, Next: Una │ │ │ │ │ -0000a670: 7279 2066 6f72 6d73 2c20 2050 7265 763a ry forms, Prev: │ │ │ │ │ -0000a680: 2041 7269 7468 6d65 7469 632c 2020 5570 Arithmetic, Up │ │ │ │ │ -0000a690: 3a20 4172 6974 686d 6574 6963 0a0a 332e : Arithmetic..3. │ │ │ │ │ -0000a6a0: 312e 342e 3120 5477 6f2d 6f70 6572 616e 1.4.1 Two-operan │ │ │ │ │ -0000a6b0: 6420 2862 696e 6172 7929 2066 6f72 6d73 d (binary) forms │ │ │ │ │ -0000a6c0: 2061 6e64 2070 7265 6365 6465 6e63 650a and precedence. │ │ │ │ │ -0000a6d0: 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e ................ │ │ │ │ │ +0000a550: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 0a0a 4172 ------------..Ar │ │ │ │ │ +0000a560: 6974 686d 6574 6963 2065 7870 7265 7373 ithmetic express │ │ │ │ │ +0000a570: 696f 6e73 206f 7665 7220 e280 9873 6b65 ions over ...ske │ │ │ │ │ +0000a580: 7463 68e2 8099 206c 6974 6572 616c 7320 tch... literals │ │ │ │ │ +0000a590: 616e 6420 6465 6669 6e65 6420 6964 656e and defined iden │ │ │ │ │ +0000a5a0: 7469 6669 6572 730a 6172 6520 7375 6d6d tifiers.are summ │ │ │ │ │ +0000a5b0: 6172 697a 6564 2069 6e20 7468 6520 666f arized in the fo │ │ │ │ │ +0000a5c0: 6c6c 6f77 696e 6720 7461 626c 6573 2e0a llowing tables.. │ │ │ │ │ +0000a5d0: 0a2a 204d 656e 753a 0a0a 2a20 5477 6f2d .* Menu:..* Two- │ │ │ │ │ +0000a5e0: 6f70 6572 616e 6420 2862 696e 6172 7929 operand (binary) │ │ │ │ │ +0000a5f0: 2066 6f72 6d73 3a3a 2020 4120 6f70 2042 forms:: A op B │ │ │ │ │ +0000a600: 0a2a 2055 6e61 7279 2066 6f72 6d73 3a3a .* Unary forms:: │ │ │ │ │ +0000a610: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +0000a620: 206f 7020 4120 2861 6e64 206f 7468 6572 op A (and other │ │ │ │ │ +0000a630: 7329 0a0a 1f0a 4669 6c65 3a20 736b 6574 s)....File: sket │ │ │ │ │ +0000a640: 6368 2e69 6e66 6f2c 2020 4e6f 6465 3a20 ch.info, Node: │ │ │ │ │ +0000a650: 5477 6f2d 6f70 6572 616e 6420 2862 696e Two-operand (bin │ │ │ │ │ +0000a660: 6172 7929 2066 6f72 6d73 2c20 204e 6578 ary) forms, Nex │ │ │ │ │ +0000a670: 743a 2055 6e61 7279 2066 6f72 6d73 2c20 t: Unary forms, │ │ │ │ │ +0000a680: 2050 7265 763a 2041 7269 7468 6d65 7469 Prev: Arithmeti │ │ │ │ │ +0000a690: 632c 2020 5570 3a20 4172 6974 686d 6574 c, Up: Arithmet │ │ │ │ │ +0000a6a0: 6963 0a0a 332e 312e 342e 3120 5477 6f2d ic..3.1.4.1 Two- │ │ │ │ │ +0000a6b0: 6f70 6572 616e 6420 2862 696e 6172 7929 operand (binary) │ │ │ │ │ +0000a6c0: 2066 6f72 6d73 2061 6e64 2070 7265 6365 forms and prece │ │ │ │ │ +0000a6d0: 6465 6e63 650a 2e2e 2e2e 2e2e 2e2e 2e2e dence........... │ │ │ │ │ 0000a6e0: 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e ................ │ │ │ │ │ 0000a6f0: 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e ................ │ │ │ │ │ -0000a700: 2e0a 0a4d 6f73 7420 7477 6f2d 6f70 6572 ...Most two-oper │ │ │ │ │ -0000a710: 616e 6420 6269 6e61 7279 2066 6f72 6d73 and binary forms │ │ │ │ │ -0000a720: 2068 6176 6520 6d65 616e 696e 6773 2064 have meanings d │ │ │ │ │ -0000a730: 6570 656e 6465 6e74 206f 6e20 7468 6520 ependent on the │ │ │ │ │ -0000a740: 7479 7065 7320 6f66 0a74 6865 6972 2061 types of.their a │ │ │ │ │ -0000a750: 7267 756d 656e 7473 2e20 2041 6e20 6578 rguments. An ex │ │ │ │ │ -0000a760: 6861 7573 7469 7665 2073 756d 6d61 7279 haustive summary │ │ │ │ │ -0000a770: 206f 6620 7468 6520 706f 7373 6962 696c of the possibil │ │ │ │ │ -0000a780: 6974 6965 7320 6973 2067 6976 656e 2069 ities is given i │ │ │ │ │ -0000a790: 6e0a 7468 6520 666f 6c6c 6f77 696e 6720 n.the following │ │ │ │ │ -0000a7a0: 7461 626c 652e 0a4c 6566 7420 2020 2020 table..Left │ │ │ │ │ -0000a7b0: 2020 204f 7020 2020 2020 2020 5269 6768 Op Righ │ │ │ │ │ -0000a7c0: 7420 2020 2020 2020 5265 7375 6c74 2020 t Result │ │ │ │ │ -0000a7d0: 2020 2020 4465 7363 7269 7074 696f 6e0a Description. │ │ │ │ │ -0000a7e0: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ +0000a700: 2e2e 2e2e 2e2e 2e0a 0a4d 6f73 7420 7477 .........Most tw │ │ │ │ │ +0000a710: 6f2d 6f70 6572 616e 6420 6269 6e61 7279 o-operand binary │ │ │ │ │ +0000a720: 2066 6f72 6d73 2068 6176 6520 6d65 616e forms have mean │ │ │ │ │ +0000a730: 696e 6773 2064 6570 656e 6465 6e74 206f ings dependent o │ │ │ │ │ +0000a740: 6e20 7468 6520 7479 7065 7320 6f66 0a74 n the types of.t │ │ │ │ │ +0000a750: 6865 6972 2061 7267 756d 656e 7473 2e20 heir arguments. │ │ │ │ │ +0000a760: 2041 6e20 6578 6861 7573 7469 7665 2073 An exhaustive s │ │ │ │ │ +0000a770: 756d 6d61 7279 206f 6620 7468 6520 706f ummary of the po │ │ │ │ │ +0000a780: 7373 6962 696c 6974 6965 7320 6973 2067 ssibilities is g │ │ │ │ │ +0000a790: 6976 656e 2069 6e0a 7468 6520 666f 6c6c iven in.the foll │ │ │ │ │ +0000a7a0: 6f77 696e 6720 7461 626c 652e 0a4c 6566 owing table..Lef │ │ │ │ │ +0000a7b0: 7420 2020 2020 2020 204f 7020 2020 2020 t Op │ │ │ │ │ +0000a7c0: 2020 5269 6768 7420 2020 2020 2020 5265 Right Re │ │ │ │ │ +0000a7d0: 7375 6c74 2020 2020 2020 4465 7363 7269 sult Descri │ │ │ │ │ +0000a7e0: 7074 696f 6e0a 2d2d 2d2d 2d2d 2d2d 2d2d ption.---------- │ │ │ │ │ 0000a7f0: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ 0000a800: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ 0000a810: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ 0000a820: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ 0000a830: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ 0000a840: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ -0000a850: 2d2d 2d2d 2d2d 0a73 6361 6c61 7220 2020 ------.scalar │ │ │ │ │ -0000a860: 2020 20e2 8098 2be2 8099 2020 2020 2020 ...+... │ │ │ │ │ -0000a870: 7363 616c 6172 2020 2020 2020 7363 616c scalar scal │ │ │ │ │ -0000a880: 6172 2020 2020 2020 5363 616c 6172 2073 ar Scalar s │ │ │ │ │ -0000a890: 756d 2e0a 7665 6374 6f72 2020 2020 2020 um..vector │ │ │ │ │ -0000a8a0: e280 982b e280 9920 2020 2020 2076 6563 ...+... vec │ │ │ │ │ -0000a8b0: 746f 7220 2020 2020 2076 6563 746f 7220 tor vector │ │ │ │ │ -0000a8c0: 2020 2020 2056 6563 746f 7220 7375 6d2e Vector sum. │ │ │ │ │ -0000a8d0: 0a70 6f69 6e74 2020 2020 2020 20e2 8098 .point ... │ │ │ │ │ -0000a8e0: 2be2 8099 2020 2020 2020 7665 6374 6f72 +... vector │ │ │ │ │ -0000a8f0: 2020 2020 2020 706f 696e 7420 2020 2020 point │ │ │ │ │ -0000a900: 2020 506f 696e 742d 7665 6374 6f72 2061 Point-vector a │ │ │ │ │ -0000a910: 6666 696e 6520 7375 6d2e 0a76 6563 746f ffine sum..vecto │ │ │ │ │ -0000a920: 7220 2020 2020 20e2 8098 2be2 8099 2020 r ...+... │ │ │ │ │ -0000a930: 2020 2020 706f 696e 7420 2020 2020 2020 point │ │ │ │ │ -0000a940: 2220 2020 2020 2020 2020 2020 220a 7363 " ".sc │ │ │ │ │ -0000a950: 616c 6172 2020 2020 2020 e280 982d e280 alar ...-.. │ │ │ │ │ -0000a960: 9920 2020 2020 2073 6361 6c61 7220 2020 . scalar │ │ │ │ │ -0000a970: 2020 2073 6361 6c61 7220 2020 2020 2053 scalar S │ │ │ │ │ -0000a980: 6361 6c61 7220 6469 6666 6572 656e 6365 calar difference │ │ │ │ │ -0000a990: 2e0a 7665 6374 6f72 2020 2020 2020 e280 ..vector .. │ │ │ │ │ -0000a9a0: 982d e280 9920 2020 2020 2076 6563 746f .-... vecto │ │ │ │ │ -0000a9b0: 7220 2020 2020 2076 6563 746f 7220 2020 r vector │ │ │ │ │ -0000a9c0: 2020 2056 6563 746f 7220 6469 6666 6572 Vector differ │ │ │ │ │ -0000a9d0: 656e 6365 2e0a 706f 696e 7420 2020 2020 ence..point │ │ │ │ │ -0000a9e0: 2020 e280 982d e280 9920 2020 2020 2070 ...-... p │ │ │ │ │ -0000a9f0: 6f69 6e74 2020 2020 2020 2076 6563 746f oint vecto │ │ │ │ │ -0000aa00: 7220 2020 2020 2050 6f69 6e74 2d70 6f69 r Point-poi │ │ │ │ │ -0000aa10: 6e74 2061 6666 696e 6520 6469 6666 6572 nt affine differ │ │ │ │ │ -0000aa20: 656e 6365 2e0a 706f 696e 7420 2020 2020 ence..point │ │ │ │ │ -0000aa30: 2020 e280 982d e280 9920 2020 2020 2076 ...-... v │ │ │ │ │ -0000aa40: 6563 746f 7220 2020 2020 2070 6f69 6e74 ector point │ │ │ │ │ -0000aa50: 2020 2020 2020 2050 6f69 6e74 2d76 6563 Point-vec │ │ │ │ │ -0000aa60: 746f 7220 6166 6669 6e65 2064 6966 6665 tor affine diffe │ │ │ │ │ -0000aa70: 7265 6e63 652e 0a73 6361 6c61 7220 2020 rence..scalar │ │ │ │ │ -0000aa80: 2020 20e2 8098 2ae2 8099 206f 7220 2020 ...*... or │ │ │ │ │ -0000aa90: 7363 616c 6172 2020 2020 2020 7363 616c scalar scal │ │ │ │ │ -0000aaa0: 6172 2020 2020 2020 5363 616c 6172 2070 ar Scalar p │ │ │ │ │ -0000aab0: 726f 6475 6374 2e0a 2020 2020 2020 2020 roduct.. │ │ │ │ │ -0000aac0: 2020 2020 e280 982e e280 990a 7363 616c ........scal │ │ │ │ │ -0000aad0: 6172 2020 2020 2020 e280 982a e280 9920 ar ...*... │ │ │ │ │ -0000aae0: 6f72 2020 2076 6563 746f 7220 2020 2020 or vector │ │ │ │ │ -0000aaf0: 2076 6563 746f 7220 2020 2020 2053 6361 vector Sca │ │ │ │ │ -0000ab00: 6c61 722d 7665 6374 6f72 2070 726f 6475 lar-vector produ │ │ │ │ │ -0000ab10: 6374 2e0a 2020 2020 2020 2020 2020 2020 ct.. │ │ │ │ │ -0000ab20: e280 982e e280 990a 7665 6374 6f72 2020 ........vector │ │ │ │ │ -0000ab30: 2020 2020 e280 982a e280 9920 6f72 2020 ...*... or │ │ │ │ │ -0000ab40: 2073 6361 6c61 7220 2020 2020 2022 2020 scalar " │ │ │ │ │ -0000ab50: 2020 2020 2020 2020 2022 0a20 2020 2020 ". │ │ │ │ │ -0000ab60: 2020 2020 2020 20e2 8098 2ee2 8099 0a76 ........v │ │ │ │ │ -0000ab70: 6563 746f 7220 2020 2020 20e2 8098 2ae2 ector ...*. │ │ │ │ │ -0000ab80: 8099 2020 2020 2020 7665 6374 6f72 2020 .. vector │ │ │ │ │ -0000ab90: 2020 2020 7665 6374 6f72 2020 2020 2020 vector │ │ │ │ │ -0000aba0: 5665 6374 6f72 2063 726f 7373 2d70 726f Vector cross-pro │ │ │ │ │ -0000abb0: 6475 6374 2e0a 7665 6374 6f72 2020 2020 duct..vector │ │ │ │ │ -0000abc0: 2020 e280 982e e280 9920 2020 2020 2076 ....... v │ │ │ │ │ -0000abd0: 6563 746f 7220 2020 2020 2073 6361 6c61 ector scala │ │ │ │ │ -0000abe0: 7220 2020 2020 2056 6563 746f 7220 646f r Vector do │ │ │ │ │ -0000abf0: 7420 7072 6f64 7563 742e 0a73 6361 6c61 t product..scala │ │ │ │ │ -0000ac00: 7220 2020 2020 20e2 8098 5ee2 8099 2020 r ...^... │ │ │ │ │ -0000ac10: 2020 2020 7363 616c 6172 2020 2020 2020 scalar │ │ │ │ │ -0000ac20: 7363 616c 6172 2020 2020 2020 5261 6973 scalar Rais │ │ │ │ │ -0000ac30: 6520 7363 616c 6172 2074 6f20 7363 616c e scalar to scal │ │ │ │ │ -0000ac40: 6172 2070 6f77 6572 2e0a 7472 616e 7366 ar power..transf │ │ │ │ │ -0000ac50: 6f72 6d20 2020 e280 985e e280 9920 2020 orm ...^... │ │ │ │ │ -0000ac60: 2020 2069 6e74 6567 6572 2020 2020 2074 integer t │ │ │ │ │ -0000ac70: 7261 6e73 666f 726d 2020 2052 6169 7365 ransform Raise │ │ │ │ │ -0000ac80: 2074 7261 6e73 666f 726d 2074 6f20 696e transform to in │ │ │ │ │ -0000ac90: 7465 6765 7220 706f 7765 722e 0a74 7261 teger power..tra │ │ │ │ │ -0000aca0: 6e73 666f 726d 2020 20e2 8098 2ae2 8099 nsform ...*... │ │ │ │ │ -0000acb0: 206f 7220 2020 706f 696e 7420 2020 2020 or point │ │ │ │ │ -0000acc0: 2020 706f 696e 7420 2020 2020 2020 4166 point Af │ │ │ │ │ -0000acd0: 6669 6e65 2070 6f69 6e74 2074 7261 6e73 fine point trans │ │ │ │ │ -0000ace0: 666f 726d 2028 7269 6768 742d 746f 2d6c form (right-to-l │ │ │ │ │ -0000acf0: 6566 7429 2e0a 2020 2020 2020 2020 2020 eft).. │ │ │ │ │ -0000ad00: 2020 e280 982e e280 990a 7472 616e 7366 ........transf │ │ │ │ │ -0000ad10: 6f72 6d20 2020 e280 982a e280 9920 6f72 orm ...*... or │ │ │ │ │ -0000ad20: 2020 2076 6563 746f 7220 2020 2020 2076 vector v │ │ │ │ │ -0000ad30: 6563 746f 7220 2020 2020 2041 6666 696e ector Affin │ │ │ │ │ -0000ad40: 6520 7665 6374 6f72 2074 7261 6e73 666f e vector transfo │ │ │ │ │ -0000ad50: 726d 2028 7269 6768 742d 746f 2d6c 6566 rm (right-to-lef │ │ │ │ │ -0000ad60: 7429 2e0a 2020 2020 2020 2020 2020 2020 t).. │ │ │ │ │ -0000ad70: e280 982e e280 990a 7472 616e 7366 6f72 ........transfor │ │ │ │ │ -0000ad80: 6d20 2020 e280 982a e280 9920 6f72 2020 m ...*... or │ │ │ │ │ -0000ad90: 2074 7261 6e73 666f 726d 2020 2074 7261 transform tra │ │ │ │ │ -0000ada0: 6e73 666f 726d 2020 2054 7261 6e73 666f nsform Transfo │ │ │ │ │ -0000adb0: 726d 2063 6f6d 706f 7369 7469 6f6e 2028 rm composition ( │ │ │ │ │ -0000adc0: 7269 6768 742d 746f 2d6c 6566 7429 2e0a right-to-left).. │ │ │ │ │ -0000add0: 2020 2020 2020 2020 2020 2020 e280 982e .... │ │ │ │ │ -0000ade0: e280 990a 706f 696e 7420 2020 2020 2020 ....point │ │ │ │ │ -0000adf0: e280 9874 6865 6ee2 8099 2020 2074 7261 ...then... tra │ │ │ │ │ -0000ae00: 6e73 666f 726d 2020 2070 6f69 6e74 2020 nsform point │ │ │ │ │ -0000ae10: 2020 2020 2041 6666 696e 6520 706f 696e Affine poin │ │ │ │ │ -0000ae20: 7420 7472 616e 7366 6f72 6d20 286c 6566 t transform (lef │ │ │ │ │ -0000ae30: 742d 746f 2d72 6967 6874 292e 0a76 6563 t-to-right)..vec │ │ │ │ │ -0000ae40: 746f 7220 2020 2020 20e2 8098 7468 656e tor ...then │ │ │ │ │ -0000ae50: e280 9920 2020 7472 616e 7366 6f72 6d20 ... transform │ │ │ │ │ -0000ae60: 2020 7665 6374 6f72 2020 2020 2020 4166 vector Af │ │ │ │ │ -0000ae70: 6669 6e65 2076 6563 746f 7220 7472 616e fine vector tran │ │ │ │ │ -0000ae80: 7366 6f72 6d20 286c 6566 742d 746f 2d72 sform (left-to-r │ │ │ │ │ -0000ae90: 6967 6874 292e 0a74 7261 6e73 666f 726d ight)..transform │ │ │ │ │ -0000aea0: 2020 20e2 8098 7468 656e e280 9920 2020 ...then... │ │ │ │ │ -0000aeb0: 7472 616e 7366 6f72 6d20 2020 7472 616e transform tran │ │ │ │ │ -0000aec0: 7366 6f72 6d20 2020 5472 616e 7366 6f72 sform Transfor │ │ │ │ │ -0000aed0: 6d20 636f 6d70 6f73 6974 696f 6e20 286c m composition (l │ │ │ │ │ -0000aee0: 6566 742d 746f 2d72 6967 6874 292e 0a73 eft-to-right)..s │ │ │ │ │ -0000aef0: 6361 6c61 7220 2020 2020 20e2 8098 2fe2 calar .../. │ │ │ │ │ -0000af00: 8099 2020 2020 2020 7363 616c 6172 2020 .. scalar │ │ │ │ │ -0000af10: 2020 2020 7363 616c 6172 2020 2020 2020 scalar │ │ │ │ │ -0000af20: 5363 616c 6172 2064 6976 6973 696f 6e2e Scalar division. │ │ │ │ │ -0000af30: 0a76 6563 746f 7220 2020 2020 20e2 8098 .vector ... │ │ │ │ │ -0000af40: 2fe2 8099 2020 2020 2020 7363 616c 6172 /... scalar │ │ │ │ │ -0000af50: 2020 2020 2020 7665 6374 6f72 2020 2020 vector │ │ │ │ │ -0000af60: 2020 5665 6374 6f72 2063 6f6d 706f 6e65 Vector compone │ │ │ │ │ -0000af70: 6e74 2d77 6973 6520 6469 7669 7369 6f6e nt-wise division │ │ │ │ │ -0000af80: 2062 7920 7363 616c 6172 2e0a 706f 696e by scalar..poin │ │ │ │ │ -0000af90: 7420 2020 2020 2020 e280 9827 e280 9920 t ...'... │ │ │ │ │ -0000afa0: 2020 2020 20e2 8098 78e2 8099 2c20 e280 ...x..., .. │ │ │ │ │ -0000afb0: 9879 e280 992c 2020 2073 6361 6c61 7220 .y..., scalar │ │ │ │ │ -0000afc0: 2020 2020 2050 6f69 6e74 2063 6f6d 706f Point compo │ │ │ │ │ -0000afd0: 6e65 6e74 2065 7874 7261 6374 696f 6e2e nent extraction. │ │ │ │ │ -0000afe0: 0a20 2020 2020 2020 2020 2020 2020 2020 . │ │ │ │ │ -0000aff0: 2020 2020 2020 6f72 20e2 8098 7ae2 8099 or ...z... │ │ │ │ │ -0000b000: 0a76 6563 746f 7220 2020 2020 20e2 8098 .vector ... │ │ │ │ │ -0000b010: 27e2 8099 2020 2020 2020 e280 9878 e280 '... ...x.. │ │ │ │ │ -0000b020: 992c 20e2 8098 79e2 8099 2c20 2020 7363 ., ...y..., sc │ │ │ │ │ -0000b030: 616c 6172 2020 2020 2020 5665 6374 6f72 alar Vector │ │ │ │ │ -0000b040: 2063 6f6d 706f 6e65 6e74 2065 7874 7261 component extra │ │ │ │ │ -0000b050: 6374 696f 6e2e 0a20 2020 2020 2020 2020 ction.. │ │ │ │ │ -0000b060: 2020 2020 2020 2020 2020 2020 6f72 20e2 or . │ │ │ │ │ -0000b070: 8098 7ae2 8099 0a0a 4f70 6572 6174 6f72 ..z.....Operator │ │ │ │ │ -0000b080: 2070 7265 6365 6465 6e63 6520 6973 2073 precedence is s │ │ │ │ │ -0000b090: 686f 776e 2069 6e20 7468 6973 2074 6162 hown in this tab │ │ │ │ │ -0000b0a0: 6c65 2e0a 4f70 2020 2020 2020 2050 7265 le..Op Pre │ │ │ │ │ -0000b0b0: 6365 6465 6e63 650a 2d2d 2d2d 2d2d 2d2d cedence.-------- │ │ │ │ │ +0000a850: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 0a73 6361 ------------.sca │ │ │ │ │ +0000a860: 6c61 7220 2020 2020 20e2 8098 2be2 8099 lar ...+... │ │ │ │ │ +0000a870: 2020 2020 2020 7363 616c 6172 2020 2020 scalar │ │ │ │ │ +0000a880: 2020 7363 616c 6172 2020 2020 2020 5363 scalar Sc │ │ │ │ │ +0000a890: 616c 6172 2073 756d 2e0a 7665 6374 6f72 alar sum..vector │ │ │ │ │ +0000a8a0: 2020 2020 2020 e280 982b e280 9920 2020 ...+... │ │ │ │ │ +0000a8b0: 2020 2076 6563 746f 7220 2020 2020 2076 vector v │ │ │ │ │ +0000a8c0: 6563 746f 7220 2020 2020 2056 6563 746f ector Vecto │ │ │ │ │ +0000a8d0: 7220 7375 6d2e 0a70 6f69 6e74 2020 2020 r sum..point │ │ │ │ │ +0000a8e0: 2020 20e2 8098 2be2 8099 2020 2020 2020 ...+... │ │ │ │ │ +0000a8f0: 7665 6374 6f72 2020 2020 2020 706f 696e vector poin │ │ │ │ │ +0000a900: 7420 2020 2020 2020 506f 696e 742d 7665 t Point-ve │ │ │ │ │ +0000a910: 6374 6f72 2061 6666 696e 6520 7375 6d2e ctor affine sum. │ │ │ │ │ +0000a920: 0a76 6563 746f 7220 2020 2020 20e2 8098 .vector ... │ │ │ │ │ +0000a930: 2be2 8099 2020 2020 2020 706f 696e 7420 +... point │ │ │ │ │ +0000a940: 2020 2020 2020 2220 2020 2020 2020 2020 " │ │ │ │ │ +0000a950: 2020 220a 7363 616c 6172 2020 2020 2020 ".scalar │ │ │ │ │ +0000a960: e280 982d e280 9920 2020 2020 2073 6361 ...-... sca │ │ │ │ │ +0000a970: 6c61 7220 2020 2020 2073 6361 6c61 7220 lar scalar │ │ │ │ │ +0000a980: 2020 2020 2053 6361 6c61 7220 6469 6666 Scalar diff │ │ │ │ │ +0000a990: 6572 656e 6365 2e0a 7665 6374 6f72 2020 erence..vector │ │ │ │ │ +0000a9a0: 2020 2020 e280 982d e280 9920 2020 2020 ...-... │ │ │ │ │ +0000a9b0: 2076 6563 746f 7220 2020 2020 2076 6563 vector vec │ │ │ │ │ +0000a9c0: 746f 7220 2020 2020 2056 6563 746f 7220 tor Vector │ │ │ │ │ +0000a9d0: 6469 6666 6572 656e 6365 2e0a 706f 696e difference..poin │ │ │ │ │ +0000a9e0: 7420 2020 2020 2020 e280 982d e280 9920 t ...-... │ │ │ │ │ +0000a9f0: 2020 2020 2070 6f69 6e74 2020 2020 2020 point │ │ │ │ │ +0000aa00: 2076 6563 746f 7220 2020 2020 2050 6f69 vector Poi │ │ │ │ │ +0000aa10: 6e74 2d70 6f69 6e74 2061 6666 696e 6520 nt-point affine │ │ │ │ │ +0000aa20: 6469 6666 6572 656e 6365 2e0a 706f 696e difference..poin │ │ │ │ │ +0000aa30: 7420 2020 2020 2020 e280 982d e280 9920 t ...-... │ │ │ │ │ +0000aa40: 2020 2020 2076 6563 746f 7220 2020 2020 vector │ │ │ │ │ +0000aa50: 2070 6f69 6e74 2020 2020 2020 2050 6f69 point Poi │ │ │ │ │ +0000aa60: 6e74 2d76 6563 746f 7220 6166 6669 6e65 nt-vector affine │ │ │ │ │ +0000aa70: 2064 6966 6665 7265 6e63 652e 0a73 6361 difference..sca │ │ │ │ │ +0000aa80: 6c61 7220 2020 2020 20e2 8098 2ae2 8099 lar ...*... │ │ │ │ │ +0000aa90: 206f 7220 2020 7363 616c 6172 2020 2020 or scalar │ │ │ │ │ +0000aaa0: 2020 7363 616c 6172 2020 2020 2020 5363 scalar Sc │ │ │ │ │ +0000aab0: 616c 6172 2070 726f 6475 6374 2e0a 2020 alar product.. │ │ │ │ │ +0000aac0: 2020 2020 2020 2020 2020 e280 982e e280 ...... │ │ │ │ │ +0000aad0: 990a 7363 616c 6172 2020 2020 2020 e280 ..scalar .. │ │ │ │ │ +0000aae0: 982a e280 9920 6f72 2020 2076 6563 746f .*... or vecto │ │ │ │ │ +0000aaf0: 7220 2020 2020 2076 6563 746f 7220 2020 r vector │ │ │ │ │ +0000ab00: 2020 2053 6361 6c61 722d 7665 6374 6f72 Scalar-vector │ │ │ │ │ +0000ab10: 2070 726f 6475 6374 2e0a 2020 2020 2020 product.. │ │ │ │ │ +0000ab20: 2020 2020 2020 e280 982e e280 990a 7665 ........ve │ │ │ │ │ +0000ab30: 6374 6f72 2020 2020 2020 e280 982a e280 ctor ...*.. │ │ │ │ │ +0000ab40: 9920 6f72 2020 2073 6361 6c61 7220 2020 . or scalar │ │ │ │ │ +0000ab50: 2020 2022 2020 2020 2020 2020 2020 2022 " " │ │ │ │ │ +0000ab60: 0a20 2020 2020 2020 2020 2020 20e2 8098 . ... │ │ │ │ │ +0000ab70: 2ee2 8099 0a76 6563 746f 7220 2020 2020 .....vector │ │ │ │ │ +0000ab80: 20e2 8098 2ae2 8099 2020 2020 2020 7665 ...*... ve │ │ │ │ │ +0000ab90: 6374 6f72 2020 2020 2020 7665 6374 6f72 ctor vector │ │ │ │ │ +0000aba0: 2020 2020 2020 5665 6374 6f72 2063 726f Vector cro │ │ │ │ │ +0000abb0: 7373 2d70 726f 6475 6374 2e0a 7665 6374 ss-product..vect │ │ │ │ │ +0000abc0: 6f72 2020 2020 2020 e280 982e e280 9920 or ....... │ │ │ │ │ +0000abd0: 2020 2020 2076 6563 746f 7220 2020 2020 vector │ │ │ │ │ +0000abe0: 2073 6361 6c61 7220 2020 2020 2056 6563 scalar Vec │ │ │ │ │ +0000abf0: 746f 7220 646f 7420 7072 6f64 7563 742e tor dot product. │ │ │ │ │ +0000ac00: 0a73 6361 6c61 7220 2020 2020 20e2 8098 .scalar ... │ │ │ │ │ +0000ac10: 5ee2 8099 2020 2020 2020 7363 616c 6172 ^... scalar │ │ │ │ │ +0000ac20: 2020 2020 2020 7363 616c 6172 2020 2020 scalar │ │ │ │ │ +0000ac30: 2020 5261 6973 6520 7363 616c 6172 2074 Raise scalar t │ │ │ │ │ +0000ac40: 6f20 7363 616c 6172 2070 6f77 6572 2e0a o scalar power.. │ │ │ │ │ +0000ac50: 7472 616e 7366 6f72 6d20 2020 e280 985e transform ...^ │ │ │ │ │ +0000ac60: e280 9920 2020 2020 2069 6e74 6567 6572 ... integer │ │ │ │ │ +0000ac70: 2020 2020 2074 7261 6e73 666f 726d 2020 transform │ │ │ │ │ +0000ac80: 2052 6169 7365 2074 7261 6e73 666f 726d Raise transform │ │ │ │ │ +0000ac90: 2074 6f20 696e 7465 6765 7220 706f 7765 to integer powe │ │ │ │ │ +0000aca0: 722e 0a74 7261 6e73 666f 726d 2020 20e2 r..transform . │ │ │ │ │ +0000acb0: 8098 2ae2 8099 206f 7220 2020 706f 696e ..*... or poin │ │ │ │ │ +0000acc0: 7420 2020 2020 2020 706f 696e 7420 2020 t point │ │ │ │ │ +0000acd0: 2020 2020 4166 6669 6e65 2070 6f69 6e74 Affine point │ │ │ │ │ +0000ace0: 2074 7261 6e73 666f 726d 2028 7269 6768 transform (righ │ │ │ │ │ +0000acf0: 742d 746f 2d6c 6566 7429 2e0a 2020 2020 t-to-left).. │ │ │ │ │ +0000ad00: 2020 2020 2020 2020 e280 982e e280 990a ........ │ │ │ │ │ +0000ad10: 7472 616e 7366 6f72 6d20 2020 e280 982a transform ...* │ │ │ │ │ +0000ad20: e280 9920 6f72 2020 2076 6563 746f 7220 ... or vector │ │ │ │ │ +0000ad30: 2020 2020 2076 6563 746f 7220 2020 2020 vector │ │ │ │ │ +0000ad40: 2041 6666 696e 6520 7665 6374 6f72 2074 Affine vector t │ │ │ │ │ +0000ad50: 7261 6e73 666f 726d 2028 7269 6768 742d ransform (right- │ │ │ │ │ +0000ad60: 746f 2d6c 6566 7429 2e0a 2020 2020 2020 to-left).. │ │ │ │ │ +0000ad70: 2020 2020 2020 e280 982e e280 990a 7472 ........tr │ │ │ │ │ +0000ad80: 616e 7366 6f72 6d20 2020 e280 982a e280 ansform ...*.. │ │ │ │ │ +0000ad90: 9920 6f72 2020 2074 7261 6e73 666f 726d . or transform │ │ │ │ │ +0000ada0: 2020 2074 7261 6e73 666f 726d 2020 2054 transform T │ │ │ │ │ +0000adb0: 7261 6e73 666f 726d 2063 6f6d 706f 7369 ransform composi │ │ │ │ │ +0000adc0: 7469 6f6e 2028 7269 6768 742d 746f 2d6c tion (right-to-l │ │ │ │ │ +0000add0: 6566 7429 2e0a 2020 2020 2020 2020 2020 eft).. │ │ │ │ │ +0000ade0: 2020 e280 982e e280 990a 706f 696e 7420 ........point │ │ │ │ │ +0000adf0: 2020 2020 2020 e280 9874 6865 6ee2 8099 ...then... │ │ │ │ │ +0000ae00: 2020 2074 7261 6e73 666f 726d 2020 2070 transform p │ │ │ │ │ +0000ae10: 6f69 6e74 2020 2020 2020 2041 6666 696e oint Affin │ │ │ │ │ +0000ae20: 6520 706f 696e 7420 7472 616e 7366 6f72 e point transfor │ │ │ │ │ +0000ae30: 6d20 286c 6566 742d 746f 2d72 6967 6874 m (left-to-right │ │ │ │ │ +0000ae40: 292e 0a76 6563 746f 7220 2020 2020 20e2 )..vector . │ │ │ │ │ +0000ae50: 8098 7468 656e e280 9920 2020 7472 616e ..then... tran │ │ │ │ │ +0000ae60: 7366 6f72 6d20 2020 7665 6374 6f72 2020 sform vector │ │ │ │ │ +0000ae70: 2020 2020 4166 6669 6e65 2076 6563 746f Affine vecto │ │ │ │ │ +0000ae80: 7220 7472 616e 7366 6f72 6d20 286c 6566 r transform (lef │ │ │ │ │ +0000ae90: 742d 746f 2d72 6967 6874 292e 0a74 7261 t-to-right)..tra │ │ │ │ │ +0000aea0: 6e73 666f 726d 2020 20e2 8098 7468 656e nsform ...then │ │ │ │ │ +0000aeb0: e280 9920 2020 7472 616e 7366 6f72 6d20 ... transform │ │ │ │ │ +0000aec0: 2020 7472 616e 7366 6f72 6d20 2020 5472 transform Tr │ │ │ │ │ +0000aed0: 616e 7366 6f72 6d20 636f 6d70 6f73 6974 ansform composit │ │ │ │ │ +0000aee0: 696f 6e20 286c 6566 742d 746f 2d72 6967 ion (left-to-rig │ │ │ │ │ +0000aef0: 6874 292e 0a73 6361 6c61 7220 2020 2020 ht)..scalar │ │ │ │ │ +0000af00: 20e2 8098 2fe2 8099 2020 2020 2020 7363 .../... sc │ │ │ │ │ +0000af10: 616c 6172 2020 2020 2020 7363 616c 6172 alar scalar │ │ │ │ │ +0000af20: 2020 2020 2020 5363 616c 6172 2064 6976 Scalar div │ │ │ │ │ +0000af30: 6973 696f 6e2e 0a76 6563 746f 7220 2020 ision..vector │ │ │ │ │ +0000af40: 2020 20e2 8098 2fe2 8099 2020 2020 2020 .../... │ │ │ │ │ +0000af50: 7363 616c 6172 2020 2020 2020 7665 6374 scalar vect │ │ │ │ │ +0000af60: 6f72 2020 2020 2020 5665 6374 6f72 2063 or Vector c │ │ │ │ │ +0000af70: 6f6d 706f 6e65 6e74 2d77 6973 6520 6469 omponent-wise di │ │ │ │ │ +0000af80: 7669 7369 6f6e 2062 7920 7363 616c 6172 vision by scalar │ │ │ │ │ +0000af90: 2e0a 706f 696e 7420 2020 2020 2020 e280 ..point .. │ │ │ │ │ +0000afa0: 9827 e280 9920 2020 2020 20e2 8098 78e2 .'... ...x. │ │ │ │ │ +0000afb0: 8099 2c20 e280 9879 e280 992c 2020 2073 .., ...y..., s │ │ │ │ │ +0000afc0: 6361 6c61 7220 2020 2020 2050 6f69 6e74 calar Point │ │ │ │ │ +0000afd0: 2063 6f6d 706f 6e65 6e74 2065 7874 7261 component extra │ │ │ │ │ +0000afe0: 6374 696f 6e2e 0a20 2020 2020 2020 2020 ction.. │ │ │ │ │ +0000aff0: 2020 2020 2020 2020 2020 2020 6f72 20e2 or . │ │ │ │ │ +0000b000: 8098 7ae2 8099 0a76 6563 746f 7220 2020 ..z....vector │ │ │ │ │ +0000b010: 2020 20e2 8098 27e2 8099 2020 2020 2020 ...'... │ │ │ │ │ +0000b020: e280 9878 e280 992c 20e2 8098 79e2 8099 ...x..., ...y... │ │ │ │ │ +0000b030: 2c20 2020 7363 616c 6172 2020 2020 2020 , scalar │ │ │ │ │ +0000b040: 5665 6374 6f72 2063 6f6d 706f 6e65 6e74 Vector component │ │ │ │ │ +0000b050: 2065 7874 7261 6374 696f 6e2e 0a20 2020 extraction.. │ │ │ │ │ +0000b060: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +0000b070: 2020 6f72 20e2 8098 7ae2 8099 0a0a 4f70 or ...z.....Op │ │ │ │ │ +0000b080: 6572 6174 6f72 2070 7265 6365 6465 6e63 erator precedenc │ │ │ │ │ +0000b090: 6520 6973 2073 686f 776e 2069 6e20 7468 e is shown in th │ │ │ │ │ +0000b0a0: 6973 2074 6162 6c65 2e0a 4f70 2020 2020 is table..Op │ │ │ │ │ +0000b0b0: 2020 2050 7265 6365 6465 6e63 650a 2d2d Precedence.-- │ │ │ │ │ 0000b0c0: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ 0000b0d0: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ -0000b0e0: 2d2d 0ae2 8098 27e2 8099 2020 2020 2020 --....'... │ │ │ │ │ -0000b0f0: 6869 6768 6573 7420 286d 6f73 7420 7469 highest (most ti │ │ │ │ │ -0000b100: 6768 746c 7920 6269 6e64 696e 6729 0ae2 ghtly binding).. │ │ │ │ │ -0000b110: 8098 5ee2 8099 0ae2 8098 2de2 8099 2020 ..^.......-... │ │ │ │ │ -0000b120: 2020 2020 2875 6e61 7279 206e 6567 6174 (unary negat │ │ │ │ │ -0000b130: 696f 6e29 0ae2 8098 2ae2 8099 0ae2 8098 ion)....*....... │ │ │ │ │ -0000b140: 2ee2 8099 0ae2 8098 2fe2 8099 0ae2 8098 ......../....... │ │ │ │ │ -0000b150: 2be2 8099 0ae2 8098 2de2 8099 0ae2 8098 +.......-....... │ │ │ │ │ -0000b160: 7468 656e e280 9920 2020 6c6f 7765 7374 then... lowest │ │ │ │ │ -0000b170: 2028 6c65 6173 7420 7469 6768 746c 7920 (least tightly │ │ │ │ │ -0000b180: 6269 6e64 696e 6729 0a0a 416c 6c20 6f70 binding)..All op │ │ │ │ │ -0000b190: 6572 6174 696f 6e73 2061 7265 206c 6566 erations are lef │ │ │ │ │ -0000b1a0: 742d 6173 736f 6369 6174 6976 6520 6578 t-associative ex │ │ │ │ │ -0000b1b0: 6365 7074 2066 6f72 20e2 8098 5ee2 8099 cept for ...^... │ │ │ │ │ -0000b1c0: 2e20 2050 6172 656e 7468 6573 6573 20e2 . Parentheses . │ │ │ │ │ -0000b1d0: 8098 2820 29e2 8099 0a61 7265 2075 7365 ..( )....are use │ │ │ │ │ -0000b1e0: 6420 666f 7220 6772 6f75 7069 6e67 2074 d for grouping t │ │ │ │ │ -0000b1f0: 6f20 6f76 6572 7269 6465 2070 7265 6365 o override prece │ │ │ │ │ -0000b200: 6465 6e63 6520 696e 2074 6865 2075 7375 dence in the usu │ │ │ │ │ -0000b210: 616c 2077 6179 2e0a 0a20 2020 4173 2079 al way... As y │ │ │ │ │ -0000b220: 6f75 2063 616e 2073 6565 2c20 7468 6520 ou can see, the │ │ │ │ │ -0000b230: 646f 7420 6f70 6572 6174 6f72 20e2 8098 dot operator ... │ │ │ │ │ -0000b240: 2ee2 8099 2069 7320 7573 7561 6c6c 7920 .... is usually │ │ │ │ │ -0000b250: 6120 7379 6e6f 6e79 6d20 666f 720a 7275 a synonym for.ru │ │ │ │ │ -0000b260: 6e2d 6f66 2d74 6865 2d6d 696c 6c20 6d75 n-of-the-mill mu │ │ │ │ │ -0000b270: 6c74 6970 6c69 6361 7469 6f6e 2c20 e280 ltiplication, .. │ │ │ │ │ -0000b280: 982a e280 992e 2020 5468 6520 6d65 616e .*.... The mean │ │ │ │ │ -0000b290: 696e 6773 2064 6966 6665 7220 6f6e 6c79 ings differ only │ │ │ │ │ -0000b2a0: 2066 6f72 0a76 6563 746f 7220 6f70 6572 for.vector oper │ │ │ │ │ -0000b2b0: 616e 6473 2e20 2054 6865 20e2 8098 7468 ands. The ...th │ │ │ │ │ -0000b2c0: 656e e280 9920 6f70 6572 6174 6f72 206d en... operator m │ │ │ │ │ -0000b2d0: 6572 656c 7920 7265 7665 7273 6573 2074 erely reverses t │ │ │ │ │ -0000b2e0: 6865 206f 7065 7261 6e64 206f 7264 6572 he operand order │ │ │ │ │ -0000b2f0: 0a77 6974 6820 7265 7370 6563 7420 746f .with respect to │ │ │ │ │ -0000b300: 206e 6f72 6d61 6c20 6d75 6c74 6970 6c69 normal multipli │ │ │ │ │ -0000b310: 6361 7469 6f6e 20e2 8098 2ae2 8099 2e20 cation ...*.... │ │ │ │ │ -0000b320: 2054 6865 2069 6e74 656e 7420 6865 7265 The intent here │ │ │ │ │ -0000b330: 2069 7320 746f 206d 616b 650a 636f 6d70 is to make.comp │ │ │ │ │ -0000b340: 6f73 6974 696f 6e73 2072 6561 6420 6d6f ositions read mo │ │ │ │ │ -0000b350: 7265 206e 6174 7572 616c 6c79 2e20 2054 re naturally. T │ │ │ │ │ -0000b360: 6865 2063 6f64 650a 2020 2020 2028 312c he code. (1, │ │ │ │ │ -0000b370: 322c 3329 2074 6865 6e20 7363 616c 6528 2,3) then scale( │ │ │ │ │ -0000b380: 3229 2074 6865 6e20 726f 7461 7465 2833 2) then rotate(3 │ │ │ │ │ -0000b390: 3029 2074 6865 6e20 7472 616e 736c 6174 0) then translat │ │ │ │ │ -0000b3a0: 6528 5b31 2c33 2c30 5d29 0a65 7870 7265 e([1,3,0]).expre │ │ │ │ │ -0000b3b0: 7373 6573 2061 2073 6572 6965 7320 6f66 sses a series of │ │ │ │ │ -0000b3c0: 2073 7563 6365 7373 6976 6520 6d6f 6469 successive modi │ │ │ │ │ -0000b3d0: 6669 6361 7469 6f6e 7320 746f 2074 6865 fications to the │ │ │ │ │ -0000b3e0: 2070 6f69 6e74 2c20 7768 6572 6561 7320 point, whereas │ │ │ │ │ -0000b3f0: 7468 650a 6571 7569 7661 6c65 6e74 2066 the.equivalent f │ │ │ │ │ -0000b400: 6f72 6d0a 2020 2020 2074 7261 6e73 6c61 orm. transla │ │ │ │ │ -0000b410: 7465 285b 312c 332c 305d 2920 2a20 726f te([1,3,0]) * ro │ │ │ │ │ -0000b420: 7461 7465 2833 3029 202a 2073 6361 6c65 tate(30) * scale │ │ │ │ │ -0000b430: 2832 2920 2a20 2831 2c32 2c33 290a 7769 (2) * (1,2,3).wi │ │ │ │ │ -0000b440: 6c6c 2062 6520 696e 7475 6974 6976 6520 ll be intuitive │ │ │ │ │ -0000b450: 6f6e 6c79 2074 6f20 6d61 7468 656d 6174 only to mathemat │ │ │ │ │ -0000b460: 6963 6961 6e73 2028 616e 6420 7065 7268 icians (and perh │ │ │ │ │ -0000b470: 6170 7320 4172 6162 6963 206c 616e 6775 aps Arabic langu │ │ │ │ │ -0000b480: 6167 650a 7265 6164 6572 7329 2e0a 0a1f age.readers).... │ │ │ │ │ -0000b490: 0a46 696c 653a 2073 6b65 7463 682e 696e .File: sketch.in │ │ │ │ │ -0000b4a0: 666f 2c20 204e 6f64 653a 2055 6e61 7279 fo, Node: Unary │ │ │ │ │ -0000b4b0: 2066 6f72 6d73 2c20 2050 7265 763a 2054 forms, Prev: T │ │ │ │ │ -0000b4c0: 776f 2d6f 7065 7261 6e64 2028 6269 6e61 wo-operand (bina │ │ │ │ │ -0000b4d0: 7279 2920 666f 726d 732c 2020 5570 3a20 ry) forms, Up: │ │ │ │ │ -0000b4e0: 4172 6974 686d 6574 6963 0a0a 332e 312e Arithmetic..3.1. │ │ │ │ │ -0000b4f0: 342e 3220 556e 6172 7920 666f 726d 730a 4.2 Unary forms. │ │ │ │ │ -0000b500: 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e ................ │ │ │ │ │ -0000b510: 2e2e 2e0a 0a55 6e61 7279 206f 7220 6f6e .....Unary or on │ │ │ │ │ -0000b520: 652d 6f70 6572 616e 6420 666f 726d 7320 e-operand forms │ │ │ │ │ -0000b530: 6172 6520 7375 6d6d 6172 697a 6564 2069 are summarized i │ │ │ │ │ -0000b540: 6e20 7468 6520 666f 6c6c 6f77 696e 6720 n the following │ │ │ │ │ -0000b550: 7461 626c 652c 2077 6865 7265 0ae2 8098 table, where.... │ │ │ │ │ -0000b560: 58e2 8099 2073 7461 6e64 7320 666f 7220 X... stands for │ │ │ │ │ -0000b570: 7468 6520 6f70 6572 616e 642e 0a4f 7020 the operand..Op │ │ │ │ │ -0000b580: 2020 2020 2020 2020 2020 2020 4f70 6572 Oper │ │ │ │ │ -0000b590: 616e 6420 2020 2020 5265 7375 6c74 2020 and Result │ │ │ │ │ -0000b5a0: 2020 2020 4465 7363 7269 7074 696f 6e0a Description. │ │ │ │ │ -0000b5b0: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ +0000b0e0: 2d2d 2d2d 2d2d 2d2d 0ae2 8098 27e2 8099 --------....'... │ │ │ │ │ +0000b0f0: 2020 2020 2020 6869 6768 6573 7420 286d highest (m │ │ │ │ │ +0000b100: 6f73 7420 7469 6768 746c 7920 6269 6e64 ost tightly bind │ │ │ │ │ +0000b110: 696e 6729 0ae2 8098 5ee2 8099 0ae2 8098 ing)....^....... │ │ │ │ │ +0000b120: 2de2 8099 2020 2020 2020 2875 6e61 7279 -... (unary │ │ │ │ │ +0000b130: 206e 6567 6174 696f 6e29 0ae2 8098 2ae2 negation)....*. │ │ │ │ │ +0000b140: 8099 0ae2 8098 2ee2 8099 0ae2 8098 2fe2 ............../. │ │ │ │ │ +0000b150: 8099 0ae2 8098 2be2 8099 0ae2 8098 2de2 ......+.......-. │ │ │ │ │ +0000b160: 8099 0ae2 8098 7468 656e e280 9920 2020 ......then... │ │ │ │ │ +0000b170: 6c6f 7765 7374 2028 6c65 6173 7420 7469 lowest (least ti │ │ │ │ │ +0000b180: 6768 746c 7920 6269 6e64 696e 6729 0a0a ghtly binding).. │ │ │ │ │ +0000b190: 416c 6c20 6f70 6572 6174 696f 6e73 2061 All operations a │ │ │ │ │ +0000b1a0: 7265 206c 6566 742d 6173 736f 6369 6174 re left-associat │ │ │ │ │ +0000b1b0: 6976 6520 6578 6365 7074 2066 6f72 20e2 ive except for . │ │ │ │ │ +0000b1c0: 8098 5ee2 8099 2e20 2050 6172 656e 7468 ..^.... Parenth │ │ │ │ │ +0000b1d0: 6573 6573 20e2 8098 2820 29e2 8099 0a61 eses ...( )....a │ │ │ │ │ +0000b1e0: 7265 2075 7365 6420 666f 7220 6772 6f75 re used for grou │ │ │ │ │ +0000b1f0: 7069 6e67 2074 6f20 6f76 6572 7269 6465 ping to override │ │ │ │ │ +0000b200: 2070 7265 6365 6465 6e63 6520 696e 2074 precedence in t │ │ │ │ │ +0000b210: 6865 2075 7375 616c 2077 6179 2e0a 0a20 he usual way... │ │ │ │ │ +0000b220: 2020 4173 2079 6f75 2063 616e 2073 6565 As you can see │ │ │ │ │ +0000b230: 2c20 7468 6520 646f 7420 6f70 6572 6174 , the dot operat │ │ │ │ │ +0000b240: 6f72 20e2 8098 2ee2 8099 2069 7320 7573 or ....... is us │ │ │ │ │ +0000b250: 7561 6c6c 7920 6120 7379 6e6f 6e79 6d20 ually a synonym │ │ │ │ │ +0000b260: 666f 720a 7275 6e2d 6f66 2d74 6865 2d6d for.run-of-the-m │ │ │ │ │ +0000b270: 696c 6c20 6d75 6c74 6970 6c69 6361 7469 ill multiplicati │ │ │ │ │ +0000b280: 6f6e 2c20 e280 982a e280 992e 2020 5468 on, ...*.... Th │ │ │ │ │ +0000b290: 6520 6d65 616e 696e 6773 2064 6966 6665 e meanings diffe │ │ │ │ │ +0000b2a0: 7220 6f6e 6c79 2066 6f72 0a76 6563 746f r only for.vecto │ │ │ │ │ +0000b2b0: 7220 6f70 6572 616e 6473 2e20 2054 6865 r operands. The │ │ │ │ │ +0000b2c0: 20e2 8098 7468 656e e280 9920 6f70 6572 ...then... oper │ │ │ │ │ +0000b2d0: 6174 6f72 206d 6572 656c 7920 7265 7665 ator merely reve │ │ │ │ │ +0000b2e0: 7273 6573 2074 6865 206f 7065 7261 6e64 rses the operand │ │ │ │ │ +0000b2f0: 206f 7264 6572 0a77 6974 6820 7265 7370 order.with resp │ │ │ │ │ +0000b300: 6563 7420 746f 206e 6f72 6d61 6c20 6d75 ect to normal mu │ │ │ │ │ +0000b310: 6c74 6970 6c69 6361 7469 6f6e 20e2 8098 ltiplication ... │ │ │ │ │ +0000b320: 2ae2 8099 2e20 2054 6865 2069 6e74 656e *.... The inten │ │ │ │ │ +0000b330: 7420 6865 7265 2069 7320 746f 206d 616b t here is to mak │ │ │ │ │ +0000b340: 650a 636f 6d70 6f73 6974 696f 6e73 2072 e.compositions r │ │ │ │ │ +0000b350: 6561 6420 6d6f 7265 206e 6174 7572 616c ead more natural │ │ │ │ │ +0000b360: 6c79 2e20 2054 6865 2063 6f64 650a 2020 ly. The code. │ │ │ │ │ +0000b370: 2020 2028 312c 322c 3329 2074 6865 6e20 (1,2,3) then │ │ │ │ │ +0000b380: 7363 616c 6528 3229 2074 6865 6e20 726f scale(2) then ro │ │ │ │ │ +0000b390: 7461 7465 2833 3029 2074 6865 6e20 7472 tate(30) then tr │ │ │ │ │ +0000b3a0: 616e 736c 6174 6528 5b31 2c33 2c30 5d29 anslate([1,3,0]) │ │ │ │ │ +0000b3b0: 0a65 7870 7265 7373 6573 2061 2073 6572 .expresses a ser │ │ │ │ │ +0000b3c0: 6965 7320 6f66 2073 7563 6365 7373 6976 ies of successiv │ │ │ │ │ +0000b3d0: 6520 6d6f 6469 6669 6361 7469 6f6e 7320 e modifications │ │ │ │ │ +0000b3e0: 746f 2074 6865 2070 6f69 6e74 2c20 7768 to the point, wh │ │ │ │ │ +0000b3f0: 6572 6561 7320 7468 650a 6571 7569 7661 ereas the.equiva │ │ │ │ │ +0000b400: 6c65 6e74 2066 6f72 6d0a 2020 2020 2074 lent form. t │ │ │ │ │ +0000b410: 7261 6e73 6c61 7465 285b 312c 332c 305d ranslate([1,3,0] │ │ │ │ │ +0000b420: 2920 2a20 726f 7461 7465 2833 3029 202a ) * rotate(30) * │ │ │ │ │ +0000b430: 2073 6361 6c65 2832 2920 2a20 2831 2c32 scale(2) * (1,2 │ │ │ │ │ +0000b440: 2c33 290a 7769 6c6c 2062 6520 696e 7475 ,3).will be intu │ │ │ │ │ +0000b450: 6974 6976 6520 6f6e 6c79 2074 6f20 6d61 itive only to ma │ │ │ │ │ +0000b460: 7468 656d 6174 6963 6961 6e73 2028 616e thematicians (an │ │ │ │ │ +0000b470: 6420 7065 7268 6170 7320 4172 6162 6963 d perhaps Arabic │ │ │ │ │ +0000b480: 206c 616e 6775 6167 650a 7265 6164 6572 language.reader │ │ │ │ │ +0000b490: 7329 2e0a 0a1f 0a46 696c 653a 2073 6b65 s).....File: ske │ │ │ │ │ +0000b4a0: 7463 682e 696e 666f 2c20 204e 6f64 653a tch.info, Node: │ │ │ │ │ +0000b4b0: 2055 6e61 7279 2066 6f72 6d73 2c20 2050 Unary forms, P │ │ │ │ │ +0000b4c0: 7265 763a 2054 776f 2d6f 7065 7261 6e64 rev: Two-operand │ │ │ │ │ +0000b4d0: 2028 6269 6e61 7279 2920 666f 726d 732c (binary) forms, │ │ │ │ │ +0000b4e0: 2020 5570 3a20 4172 6974 686d 6574 6963 Up: Arithmetic │ │ │ │ │ +0000b4f0: 0a0a 332e 312e 342e 3220 556e 6172 7920 ..3.1.4.2 Unary │ │ │ │ │ +0000b500: 666f 726d 730a 2e2e 2e2e 2e2e 2e2e 2e2e forms........... │ │ │ │ │ +0000b510: 2e2e 2e2e 2e2e 2e2e 2e0a 0a55 6e61 7279 ...........Unary │ │ │ │ │ +0000b520: 206f 7220 6f6e 652d 6f70 6572 616e 6420 or one-operand │ │ │ │ │ +0000b530: 666f 726d 7320 6172 6520 7375 6d6d 6172 forms are summar │ │ │ │ │ +0000b540: 697a 6564 2069 6e20 7468 6520 666f 6c6c ized in the foll │ │ │ │ │ +0000b550: 6f77 696e 6720 7461 626c 652c 2077 6865 owing table, whe │ │ │ │ │ +0000b560: 7265 0ae2 8098 58e2 8099 2073 7461 6e64 re....X... stand │ │ │ │ │ +0000b570: 7320 666f 7220 7468 6520 6f70 6572 616e s for the operan │ │ │ │ │ +0000b580: 642e 0a4f 7020 2020 2020 2020 2020 2020 d..Op │ │ │ │ │ +0000b590: 2020 4f70 6572 616e 6420 2020 2020 5265 Operand Re │ │ │ │ │ +0000b5a0: 7375 6c74 2020 2020 2020 4465 7363 7269 sult Descri │ │ │ │ │ +0000b5b0: 7074 696f 6e0a 2d2d 2d2d 2d2d 2d2d 2d2d ption.---------- │ │ │ │ │ 0000b5c0: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ 0000b5d0: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ 0000b5e0: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ 0000b5f0: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ -0000b600: 2d2d 2d2d 0ae2 8098 2d58 e280 9920 2020 ----....-X... │ │ │ │ │ -0000b610: 2020 2020 2020 2020 7363 616c 6172 2020 scalar │ │ │ │ │ -0000b620: 2020 2020 7363 616c 6172 2020 2020 2020 scalar │ │ │ │ │ -0000b630: 556e 6172 7920 7363 616c 6172 206e 6567 Unary scalar neg │ │ │ │ │ -0000b640: 6174 696f 6e2e 0ae2 8098 2d58 e280 9920 ation.....-X... │ │ │ │ │ -0000b650: 2020 2020 2020 2020 2020 7665 6374 6f72 vector │ │ │ │ │ -0000b660: 2020 2020 2020 7665 6374 6f72 2020 2020 vector │ │ │ │ │ -0000b670: 2020 556e 6172 7920 7665 6374 6f72 206e Unary vector n │ │ │ │ │ -0000b680: 6567 6174 696f 6e2e 0ae2 8098 7c58 7ce2 egation.....|X|. │ │ │ │ │ -0000b690: 8099 2020 2020 2020 2020 2020 7665 6374 .. vect │ │ │ │ │ -0000b6a0: 6f72 2020 2020 2020 7363 616c 6172 2020 or scalar │ │ │ │ │ -0000b6b0: 2020 2020 5665 6374 6f72 206c 656e 6774 Vector lengt │ │ │ │ │ -0000b6c0: 682e 0ae2 8098 756e 6974 2858 29e2 8099 h.....unit(X)... │ │ │ │ │ -0000b6d0: 2020 2020 2020 7665 6374 6f72 2020 2020 vector │ │ │ │ │ -0000b6e0: 2020 7665 6374 6f72 2020 2020 2020 556e vector Un │ │ │ │ │ -0000b6f0: 6974 2076 6563 746f 7220 7769 7468 2073 it vector with s │ │ │ │ │ -0000b700: 616d 6520 6469 7265 6374 696f 6e2e 0ae2 ame direction... │ │ │ │ │ -0000b710: 8098 7371 7274 2858 29e2 8099 2020 2020 ..sqrt(X)... │ │ │ │ │ -0000b720: 2020 7363 616c 6172 2020 2020 2020 7363 scalar sc │ │ │ │ │ -0000b730: 616c 6172 2020 2020 2020 5363 616c 6172 alar Scalar │ │ │ │ │ -0000b740: 2073 7175 6172 6520 726f 6f74 2e0a e280 square root.... │ │ │ │ │ -0000b750: 9873 696e 2858 29e2 8099 2020 2020 2020 .sin(X)... │ │ │ │ │ -0000b760: 2073 6361 6c61 7220 2020 2020 2073 6361 scalar sca │ │ │ │ │ -0000b770: 6c61 7220 2020 2020 2054 7269 676f 6e6f lar Trigono │ │ │ │ │ -0000b780: 6d65 7472 6963 2073 696e 6520 28e2 8098 metric sine (... │ │ │ │ │ -0000b790: 58e2 8099 2069 6e20 6465 6772 6565 7329 X... in degrees) │ │ │ │ │ -0000b7a0: 2e0a e280 9863 6f73 2858 29e2 8099 2020 .....cos(X)... │ │ │ │ │ -0000b7b0: 2020 2020 2073 6361 6c61 7220 2020 2020 scalar │ │ │ │ │ -0000b7c0: 2073 6361 6c61 7220 2020 2020 2054 7269 scalar Tri │ │ │ │ │ -0000b7d0: 676f 6e6f 6d65 7472 6963 2063 6f73 696e gonometric cosin │ │ │ │ │ -0000b7e0: 6520 28e2 8098 58e2 8099 2069 6e20 6465 e (...X... in de │ │ │ │ │ -0000b7f0: 6772 6565 7329 2e0a e280 9861 7369 6e28 grees).....asin( │ │ │ │ │ -0000b800: 5829 e280 9920 2020 2020 2073 6361 6c61 X)... scala │ │ │ │ │ -0000b810: 7220 2020 2020 2073 6361 6c61 7220 2020 r scalar │ │ │ │ │ -0000b820: 2020 2049 6e76 6572 7365 2073 696e 6520 Inverse sine │ │ │ │ │ -0000b830: 28e2 8098 58e2 8099 2069 6e20 6465 6772 (...X... in degr │ │ │ │ │ -0000b840: 6565 7329 2e0a e280 9861 636f 7328 5829 ees).....acos(X) │ │ │ │ │ -0000b850: e280 9920 2020 2020 2073 6361 6c61 7220 ... scalar │ │ │ │ │ -0000b860: 2020 2020 2073 6361 6c61 7220 2020 2020 scalar │ │ │ │ │ -0000b870: 2049 6e76 6572 7365 2063 6f73 696e 6520 Inverse cosine │ │ │ │ │ -0000b880: 28e2 8098 58e2 8099 2069 6e20 6465 6772 (...X... in degr │ │ │ │ │ -0000b890: 6565 7329 2e0a e280 9861 7461 6e32 2858 ees).....atan2(X │ │ │ │ │ -0000b8a0: 2c59 29e2 8099 2020 2073 6361 6c61 7220 ,Y)... scalar │ │ │ │ │ -0000b8b0: 2020 2020 2073 6361 6c61 7220 2020 2020 scalar │ │ │ │ │ -0000b8c0: 2050 6f6c 6172 2061 6e67 6c65 2069 6e20 Polar angle in │ │ │ │ │ -0000b8d0: 6465 6772 6565 7320 6f66 2076 6563 746f degrees of vecto │ │ │ │ │ -0000b8e0: 7220 5b58 2c59 5d2e 0ae2 8098 696e 7665 r [X,Y].....inve │ │ │ │ │ -0000b8f0: 7273 6528 5829 e280 9920 2020 7472 616e rse(X)... tran │ │ │ │ │ -0000b900: 7366 6f72 6d20 2020 7472 616e 7366 6f72 sform transfor │ │ │ │ │ -0000b910: 6d20 2020 496e 7665 7273 6520 7472 616e m Inverse tran │ │ │ │ │ -0000b920: 7366 6f72 6d2e 0a0a 4572 726f 7273 2061 sform...Errors a │ │ │ │ │ -0000b930: 7265 2072 6570 6f72 7465 6420 7768 656e re reported when │ │ │ │ │ -0000b940: 20e2 8098 7c58 7ce2 8099 2c20 e280 9875 ...|X|..., ...u │ │ │ │ │ -0000b950: 6e69 74e2 8099 2c20 e280 9861 7369 6ee2 nit..., ...asin. │ │ │ │ │ -0000b960: 8099 2c20 e280 9861 636f 73e2 8099 2c20 .., ...acos..., │ │ │ │ │ -0000b970: e280 9873 7172 74e2 8099 2c20 e280 9861 ...sqrt..., ...a │ │ │ │ │ -0000b980: 7461 6e32 e280 992c 0a61 6e64 20e2 8098 tan2...,.and ... │ │ │ │ │ -0000b990: 696e 7665 7273 65e2 8099 2066 6169 6c20 inverse... fail │ │ │ │ │ -0000b9a0: 6475 6520 746f 206f 7065 7261 6e64 7320 due to operands │ │ │ │ │ -0000b9b0: 6f75 7473 6964 6520 7468 6569 7220 7265 outside their re │ │ │ │ │ -0000b9c0: 7370 6563 7469 7665 2064 6f6d 6169 6e73 spective domains │ │ │ │ │ -0000b9d0: 2e0a 0a1f 0a46 696c 653a 2073 6b65 7463 .....File: sketc │ │ │ │ │ -0000b9e0: 682e 696e 666f 2c20 204e 6f64 653a 204f h.info, Node: O │ │ │ │ │ -0000b9f0: 7074 696f 6e73 2c20 2050 7265 763a 2041 ptions, Prev: A │ │ │ │ │ -0000ba00: 7269 7468 6d65 7469 632c 2020 5570 3a20 rithmetic, Up: │ │ │ │ │ -0000ba10: 4c61 6e67 7561 6765 2062 6173 6963 730a Language basics. │ │ │ │ │ -0000ba20: 0a33 2e31 2e35 204f 7074 696f 6e73 0a2d .3.1.5 Options.- │ │ │ │ │ -0000ba30: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 0a0a 2a53 ------------..*S │ │ │ │ │ -0000ba40: 796e 7461 783a 2a0a 2020 2020 205b 4b45 yntax:*. [KE │ │ │ │ │ -0000ba50: 5931 3d56 414c 312c 4b45 5932 3d56 414c Y1=VAL1,KEY2=VAL │ │ │ │ │ -0000ba60: 322c 2e2e 2e5d 0a4f 7074 696f 6e73 2061 2,...].Options a │ │ │ │ │ -0000ba70: 7265 2075 7365 6420 746f 2073 7065 6369 re used to speci │ │ │ │ │ -0000ba80: 6679 2064 6574 6169 6c73 206f 6620 7468 fy details of th │ │ │ │ │ -0000ba90: 6520 6170 7065 6172 616e 6365 206f 6620 e appearance of │ │ │ │ │ -0000baa0: 6472 6177 6162 6c65 732e 2020 4173 0a73 drawables. As.s │ │ │ │ │ -0000bab0: 686f 776e 2061 626f 7665 2c20 7468 6579 hown above, they │ │ │ │ │ -0000bac0: 2061 7265 2067 6976 656e 2061 7320 636f are given as co │ │ │ │ │ -0000bad0: 6d6d 612d 7365 7061 7261 7465 6420 6b65 mma-separated ke │ │ │ │ │ -0000bae0: 792d 7661 6c75 6520 7061 6972 732e 0a0a y-value pairs... │ │ │ │ │ -0000baf0: 2a20 4d65 6e75 3a0a 0a2a 2050 5354 7269 * Menu:..* PSTri │ │ │ │ │ -0000bb00: 636b 7320 6f70 7469 6f6e 733a 3a20 2020 cks options:: │ │ │ │ │ -0000bb10: 2020 2020 2020 2020 204f 7074 696f 6e73 Options │ │ │ │ │ -0000bb20: 2069 6e68 6572 6974 6564 2066 726f 6d20 inherited from │ │ │ │ │ -0000bb30: e280 9850 5354 7269 636b 73e2 8099 2e0a ...PSTricks..... │ │ │ │ │ -0000bb40: 2a20 5469 6b5a 2f50 4746 206f 7074 696f * TikZ/PGF optio │ │ │ │ │ -0000bb50: 6e73 3a3a 2020 2020 2020 2020 2020 2020 ns:: │ │ │ │ │ -0000bb60: 4f70 7469 6f6e 7320 696e 6865 7269 7465 Options inherite │ │ │ │ │ -0000bb70: 6420 6672 6f6d 20e2 8098 5469 6b5a 2f50 d from ...TikZ/P │ │ │ │ │ -0000bb80: 4746 e280 992e 0a2a 2044 6f74 7320 696e GF.....* Dots in │ │ │ │ │ -0000bb90: 2054 696b 5a2f 5047 463a 3a20 2020 2020 TikZ/PGF:: │ │ │ │ │ -0000bba0: 2020 2020 2020 2053 6b65 7463 6820 7573 Sketch us │ │ │ │ │ -0000bbb0: 6573 20e2 8098 5469 6b5a 2f50 4746 e280 es ...TikZ/PGF.. │ │ │ │ │ -0000bbc0: 9920 6369 7263 6c65 7320 666f 7220 646f . circles for do │ │ │ │ │ -0000bbd0: 7473 2e0a 2a20 5469 6b5a 2f50 4746 2075 ts..* TikZ/PGF u │ │ │ │ │ -0000bbe0: 7365 722d 6465 6669 6e65 6420 7374 796c ser-defined styl │ │ │ │ │ -0000bbf0: 6573 3a3a 2020 5375 7070 6f72 7420 666f es:: Support fo │ │ │ │ │ -0000bc00: 7220 e280 9854 696b 5a2f 5047 46e2 8099 r ...TikZ/PGF... │ │ │ │ │ -0000bc10: 206e 616d 6564 2c20 7573 6572 2d64 6566 named, user-def │ │ │ │ │ -0000bc20: 696e 6564 2073 7479 6c65 732e 0a2a 2054 ined styles..* T │ │ │ │ │ -0000bc30: 7261 6e73 7061 7265 6e63 793a 3a20 2020 ransparency:: │ │ │ │ │ -0000bc40: 2020 2020 2020 2020 2020 2020 2053 6565 See │ │ │ │ │ -0000bc50: 2d74 6872 6f75 6768 2070 6f6c 7967 6f6e -through polygon │ │ │ │ │ -0000bc60: 732e 0a2a 2049 6e74 6572 6e61 6c20 6f70 s..* Internal op │ │ │ │ │ -0000bc70: 7469 6f6e 733a 3a20 2020 2020 2020 2020 tions:: │ │ │ │ │ -0000bc80: 2020 204f 7074 696f 6e73 2075 7365 6420 Options used │ │ │ │ │ -0000bc90: 6279 20e2 8098 736b 6574 6368 e280 992e by ...sketch.... │ │ │ │ │ -0000bca0: 0a0a 1f0a 4669 6c65 3a20 736b 6574 6368 ....File: sketch │ │ │ │ │ -0000bcb0: 2e69 6e66 6f2c 2020 4e6f 6465 3a20 5053 .info, Node: PS │ │ │ │ │ -0000bcc0: 5472 6963 6b73 206f 7074 696f 6e73 2c20 Tricks options, │ │ │ │ │ -0000bcd0: 204e 6578 743a 2054 696b 5a2f 5047 4620 Next: TikZ/PGF │ │ │ │ │ -0000bce0: 6f70 7469 6f6e 732c 2020 5072 6576 3a20 options, Prev: │ │ │ │ │ -0000bcf0: 4f70 7469 6f6e 732c 2020 5570 3a20 4f70 Options, Up: Op │ │ │ │ │ -0000bd00: 7469 6f6e 730a 0a33 2e31 2e35 2e31 20e2 tions..3.1.5.1 . │ │ │ │ │ -0000bd10: 8098 5053 5472 6963 6b73 e280 9920 6f70 ..PSTricks... op │ │ │ │ │ -0000bd20: 7469 6f6e 730a 2e2e 2e2e 2e2e 2e2e 2e2e tions........... │ │ │ │ │ +0000b600: 2d2d 2d2d 2d2d 2d2d 2d2d 0ae2 8098 2d58 ----------....-X │ │ │ │ │ +0000b610: e280 9920 2020 2020 2020 2020 2020 7363 ... sc │ │ │ │ │ +0000b620: 616c 6172 2020 2020 2020 7363 616c 6172 alar scalar │ │ │ │ │ +0000b630: 2020 2020 2020 556e 6172 7920 7363 616c Unary scal │ │ │ │ │ +0000b640: 6172 206e 6567 6174 696f 6e2e 0ae2 8098 ar negation..... │ │ │ │ │ +0000b650: 2d58 e280 9920 2020 2020 2020 2020 2020 -X... │ │ │ │ │ +0000b660: 7665 6374 6f72 2020 2020 2020 7665 6374 vector vect │ │ │ │ │ +0000b670: 6f72 2020 2020 2020 556e 6172 7920 7665 or Unary ve │ │ │ │ │ +0000b680: 6374 6f72 206e 6567 6174 696f 6e2e 0ae2 ctor negation... │ │ │ │ │ +0000b690: 8098 7c58 7ce2 8099 2020 2020 2020 2020 ..|X|... │ │ │ │ │ +0000b6a0: 2020 7665 6374 6f72 2020 2020 2020 7363 vector sc │ │ │ │ │ +0000b6b0: 616c 6172 2020 2020 2020 5665 6374 6f72 alar Vector │ │ │ │ │ +0000b6c0: 206c 656e 6774 682e 0ae2 8098 756e 6974 length.....unit │ │ │ │ │ +0000b6d0: 2858 29e2 8099 2020 2020 2020 7665 6374 (X)... vect │ │ │ │ │ +0000b6e0: 6f72 2020 2020 2020 7665 6374 6f72 2020 or vector │ │ │ │ │ +0000b6f0: 2020 2020 556e 6974 2076 6563 746f 7220 Unit vector │ │ │ │ │ +0000b700: 7769 7468 2073 616d 6520 6469 7265 6374 with same direct │ │ │ │ │ +0000b710: 696f 6e2e 0ae2 8098 7371 7274 2858 29e2 ion.....sqrt(X). │ │ │ │ │ +0000b720: 8099 2020 2020 2020 7363 616c 6172 2020 .. scalar │ │ │ │ │ +0000b730: 2020 2020 7363 616c 6172 2020 2020 2020 scalar │ │ │ │ │ +0000b740: 5363 616c 6172 2073 7175 6172 6520 726f Scalar square ro │ │ │ │ │ +0000b750: 6f74 2e0a e280 9873 696e 2858 29e2 8099 ot.....sin(X)... │ │ │ │ │ +0000b760: 2020 2020 2020 2073 6361 6c61 7220 2020 scalar │ │ │ │ │ +0000b770: 2020 2073 6361 6c61 7220 2020 2020 2054 scalar T │ │ │ │ │ +0000b780: 7269 676f 6e6f 6d65 7472 6963 2073 696e rigonometric sin │ │ │ │ │ +0000b790: 6520 28e2 8098 58e2 8099 2069 6e20 6465 e (...X... in de │ │ │ │ │ +0000b7a0: 6772 6565 7329 2e0a e280 9863 6f73 2858 grees).....cos(X │ │ │ │ │ +0000b7b0: 29e2 8099 2020 2020 2020 2073 6361 6c61 )... scala │ │ │ │ │ +0000b7c0: 7220 2020 2020 2073 6361 6c61 7220 2020 r scalar │ │ │ │ │ +0000b7d0: 2020 2054 7269 676f 6e6f 6d65 7472 6963 Trigonometric │ │ │ │ │ +0000b7e0: 2063 6f73 696e 6520 28e2 8098 58e2 8099 cosine (...X... │ │ │ │ │ +0000b7f0: 2069 6e20 6465 6772 6565 7329 2e0a e280 in degrees).... │ │ │ │ │ +0000b800: 9861 7369 6e28 5829 e280 9920 2020 2020 .asin(X)... │ │ │ │ │ +0000b810: 2073 6361 6c61 7220 2020 2020 2073 6361 scalar sca │ │ │ │ │ +0000b820: 6c61 7220 2020 2020 2049 6e76 6572 7365 lar Inverse │ │ │ │ │ +0000b830: 2073 696e 6520 28e2 8098 58e2 8099 2069 sine (...X... i │ │ │ │ │ +0000b840: 6e20 6465 6772 6565 7329 2e0a e280 9861 n degrees).....a │ │ │ │ │ +0000b850: 636f 7328 5829 e280 9920 2020 2020 2073 cos(X)... s │ │ │ │ │ +0000b860: 6361 6c61 7220 2020 2020 2073 6361 6c61 calar scala │ │ │ │ │ +0000b870: 7220 2020 2020 2049 6e76 6572 7365 2063 r Inverse c │ │ │ │ │ +0000b880: 6f73 696e 6520 28e2 8098 58e2 8099 2069 osine (...X... i │ │ │ │ │ +0000b890: 6e20 6465 6772 6565 7329 2e0a e280 9861 n degrees).....a │ │ │ │ │ +0000b8a0: 7461 6e32 2858 2c59 29e2 8099 2020 2073 tan2(X,Y)... s │ │ │ │ │ +0000b8b0: 6361 6c61 7220 2020 2020 2073 6361 6c61 calar scala │ │ │ │ │ +0000b8c0: 7220 2020 2020 2050 6f6c 6172 2061 6e67 r Polar ang │ │ │ │ │ +0000b8d0: 6c65 2069 6e20 6465 6772 6565 7320 6f66 le in degrees of │ │ │ │ │ +0000b8e0: 2076 6563 746f 7220 5b58 2c59 5d2e 0ae2 vector [X,Y]... │ │ │ │ │ +0000b8f0: 8098 696e 7665 7273 6528 5829 e280 9920 ..inverse(X)... │ │ │ │ │ +0000b900: 2020 7472 616e 7366 6f72 6d20 2020 7472 transform tr │ │ │ │ │ +0000b910: 616e 7366 6f72 6d20 2020 496e 7665 7273 ansform Invers │ │ │ │ │ +0000b920: 6520 7472 616e 7366 6f72 6d2e 0a0a 4572 e transform...Er │ │ │ │ │ +0000b930: 726f 7273 2061 7265 2072 6570 6f72 7465 rors are reporte │ │ │ │ │ +0000b940: 6420 7768 656e 20e2 8098 7c58 7ce2 8099 d when ...|X|... │ │ │ │ │ +0000b950: 2c20 e280 9875 6e69 74e2 8099 2c20 e280 , ...unit..., .. │ │ │ │ │ +0000b960: 9861 7369 6ee2 8099 2c20 e280 9861 636f .asin..., ...aco │ │ │ │ │ +0000b970: 73e2 8099 2c20 e280 9873 7172 74e2 8099 s..., ...sqrt... │ │ │ │ │ +0000b980: 2c20 e280 9861 7461 6e32 e280 992c 0a61 , ...atan2...,.a │ │ │ │ │ +0000b990: 6e64 20e2 8098 696e 7665 7273 65e2 8099 nd ...inverse... │ │ │ │ │ +0000b9a0: 2066 6169 6c20 6475 6520 746f 206f 7065 fail due to ope │ │ │ │ │ +0000b9b0: 7261 6e64 7320 6f75 7473 6964 6520 7468 rands outside th │ │ │ │ │ +0000b9c0: 6569 7220 7265 7370 6563 7469 7665 2064 eir respective d │ │ │ │ │ +0000b9d0: 6f6d 6169 6e73 2e0a 0a1f 0a46 696c 653a omains.....File: │ │ │ │ │ +0000b9e0: 2073 6b65 7463 682e 696e 666f 2c20 204e sketch.info, N │ │ │ │ │ +0000b9f0: 6f64 653a 204f 7074 696f 6e73 2c20 2050 ode: Options, P │ │ │ │ │ +0000ba00: 7265 763a 2041 7269 7468 6d65 7469 632c rev: Arithmetic, │ │ │ │ │ +0000ba10: 2020 5570 3a20 4c61 6e67 7561 6765 2062 Up: Language b │ │ │ │ │ +0000ba20: 6173 6963 730a 0a33 2e31 2e35 204f 7074 asics..3.1.5 Opt │ │ │ │ │ +0000ba30: 696f 6e73 0a2d 2d2d 2d2d 2d2d 2d2d 2d2d ions.----------- │ │ │ │ │ +0000ba40: 2d2d 0a0a 2a53 796e 7461 783a 2a0a 2020 --..*Syntax:*. │ │ │ │ │ +0000ba50: 2020 205b 4b45 5931 3d56 414c 312c 4b45 [KEY1=VAL1,KE │ │ │ │ │ +0000ba60: 5932 3d56 414c 322c 2e2e 2e5d 0a4f 7074 Y2=VAL2,...].Opt │ │ │ │ │ +0000ba70: 696f 6e73 2061 7265 2075 7365 6420 746f ions are used to │ │ │ │ │ +0000ba80: 2073 7065 6369 6679 2064 6574 6169 6c73 specify details │ │ │ │ │ +0000ba90: 206f 6620 7468 6520 6170 7065 6172 616e of the appearan │ │ │ │ │ +0000baa0: 6365 206f 6620 6472 6177 6162 6c65 732e ce of drawables. │ │ │ │ │ +0000bab0: 2020 4173 0a73 686f 776e 2061 626f 7665 As.shown above │ │ │ │ │ +0000bac0: 2c20 7468 6579 2061 7265 2067 6976 656e , they are given │ │ │ │ │ +0000bad0: 2061 7320 636f 6d6d 612d 7365 7061 7261 as comma-separa │ │ │ │ │ +0000bae0: 7465 6420 6b65 792d 7661 6c75 6520 7061 ted key-value pa │ │ │ │ │ +0000baf0: 6972 732e 0a0a 2a20 4d65 6e75 3a0a 0a2a irs...* Menu:..* │ │ │ │ │ +0000bb00: 2050 5354 7269 636b 7320 6f70 7469 6f6e PSTricks option │ │ │ │ │ +0000bb10: 733a 3a20 2020 2020 2020 2020 2020 204f s:: O │ │ │ │ │ +0000bb20: 7074 696f 6e73 2069 6e68 6572 6974 6564 ptions inherited │ │ │ │ │ +0000bb30: 2066 726f 6d20 e280 9850 5354 7269 636b from ...PSTrick │ │ │ │ │ +0000bb40: 73e2 8099 2e0a 2a20 5469 6b5a 2f50 4746 s.....* TikZ/PGF │ │ │ │ │ +0000bb50: 206f 7074 696f 6e73 3a3a 2020 2020 2020 options:: │ │ │ │ │ +0000bb60: 2020 2020 2020 4f70 7469 6f6e 7320 696e Options in │ │ │ │ │ +0000bb70: 6865 7269 7465 6420 6672 6f6d 20e2 8098 herited from ... │ │ │ │ │ +0000bb80: 5469 6b5a 2f50 4746 e280 992e 0a2a 2044 TikZ/PGF.....* D │ │ │ │ │ +0000bb90: 6f74 7320 696e 2054 696b 5a2f 5047 463a ots in TikZ/PGF: │ │ │ │ │ +0000bba0: 3a20 2020 2020 2020 2020 2020 2053 6b65 : Ske │ │ │ │ │ +0000bbb0: 7463 6820 7573 6573 20e2 8098 5469 6b5a tch uses ...TikZ │ │ │ │ │ +0000bbc0: 2f50 4746 e280 9920 6369 7263 6c65 7320 /PGF... circles │ │ │ │ │ +0000bbd0: 666f 7220 646f 7473 2e0a 2a20 5469 6b5a for dots..* TikZ │ │ │ │ │ +0000bbe0: 2f50 4746 2075 7365 722d 6465 6669 6e65 /PGF user-define │ │ │ │ │ +0000bbf0: 6420 7374 796c 6573 3a3a 2020 5375 7070 d styles:: Supp │ │ │ │ │ +0000bc00: 6f72 7420 666f 7220 e280 9854 696b 5a2f ort for ...TikZ/ │ │ │ │ │ +0000bc10: 5047 46e2 8099 206e 616d 6564 2c20 7573 PGF... named, us │ │ │ │ │ +0000bc20: 6572 2d64 6566 696e 6564 2073 7479 6c65 er-defined style │ │ │ │ │ +0000bc30: 732e 0a2a 2054 7261 6e73 7061 7265 6e63 s..* Transparenc │ │ │ │ │ +0000bc40: 793a 3a20 2020 2020 2020 2020 2020 2020 y:: │ │ │ │ │ +0000bc50: 2020 2053 6565 2d74 6872 6f75 6768 2070 See-through p │ │ │ │ │ +0000bc60: 6f6c 7967 6f6e 732e 0a2a 2049 6e74 6572 olygons..* Inter │ │ │ │ │ +0000bc70: 6e61 6c20 6f70 7469 6f6e 733a 3a20 2020 nal options:: │ │ │ │ │ +0000bc80: 2020 2020 2020 2020 204f 7074 696f 6e73 Options │ │ │ │ │ +0000bc90: 2075 7365 6420 6279 20e2 8098 736b 6574 used by ...sket │ │ │ │ │ +0000bca0: 6368 e280 992e 0a0a 1f0a 4669 6c65 3a20 ch........File: │ │ │ │ │ +0000bcb0: 736b 6574 6368 2e69 6e66 6f2c 2020 4e6f sketch.info, No │ │ │ │ │ +0000bcc0: 6465 3a20 5053 5472 6963 6b73 206f 7074 de: PSTricks opt │ │ │ │ │ +0000bcd0: 696f 6e73 2c20 204e 6578 743a 2054 696b ions, Next: Tik │ │ │ │ │ +0000bce0: 5a2f 5047 4620 6f70 7469 6f6e 732c 2020 Z/PGF options, │ │ │ │ │ +0000bcf0: 5072 6576 3a20 4f70 7469 6f6e 732c 2020 Prev: Options, │ │ │ │ │ +0000bd00: 5570 3a20 4f70 7469 6f6e 730a 0a33 2e31 Up: Options..3.1 │ │ │ │ │ +0000bd10: 2e35 2e31 20e2 8098 5053 5472 6963 6b73 .5.1 ...PSTricks │ │ │ │ │ +0000bd20: e280 9920 6f70 7469 6f6e 730a 2e2e 2e2e ... options..... │ │ │ │ │ 0000bd30: 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e ................ │ │ │ │ │ -0000bd40: 0a0a 5768 656e 20e2 8098 6c61 6e67 7561 ..When ...langua │ │ │ │ │ -0000bd50: 6765 2070 7374 7269 636b 73e2 8099 2069 ge pstricks... i │ │ │ │ │ -0000bd60: 7320 7365 6c65 6374 6564 2028 7468 6520 s selected (the │ │ │ │ │ -0000bd70: 6465 6661 756c 7429 2c20 7065 726d 6973 default), permis │ │ │ │ │ -0000bd80: 7369 626c 650a 6b65 792d 7661 6c75 6520 sible.key-value │ │ │ │ │ -0000bd90: 7061 6972 7320 696e 636c 7564 6520 616c pairs include al │ │ │ │ │ -0000bda0: 6c20 7468 6f73 6520 666f 7220 7369 6d69 l those for simi │ │ │ │ │ -0000bdb0: 6c61 7220 e280 9850 5354 7269 636b 73e2 lar ...PSTricks. │ │ │ │ │ -0000bdc0: 8099 206f 626a 6563 7473 2e20 2046 6f72 .. objects. For │ │ │ │ │ -0000bdd0: 0a65 7861 6d70 6c65 2c20 6120 706f 6c79 .example, a poly │ │ │ │ │ -0000bde0: 676f 6e20 6d69 6768 7420 6861 7665 2074 gon might have t │ │ │ │ │ -0000bdf0: 6865 206f 7074 696f 6e73 0a20 205b 6c69 he options. [li │ │ │ │ │ -0000be00: 6e65 7769 6474 683d 3170 742c 6c69 6e65 newidth=1pt,line │ │ │ │ │ -0000be10: 636f 6c6f 723d 626c 7565 2c66 696c 6c63 color=blue,fillc │ │ │ │ │ -0000be20: 6f6c 6f72 3d63 7961 6e5d 0ae2 8098 536b olor=cyan]....Sk │ │ │ │ │ -0000be30: 6574 6368 e280 9920 6d65 7265 6c79 2070 etch... merely p │ │ │ │ │ -0000be40: 6173 7365 7320 7468 6573 6520 6f6e 2074 asses these on t │ │ │ │ │ -0000be50: 6f20 e280 9850 5354 7269 636b 73e2 8099 o ...PSTricks... │ │ │ │ │ -0000be60: 2077 6974 686f 7574 2063 6865 636b 696e without checkin │ │ │ │ │ -0000be70: 6720 6f72 0a6d 6f64 6966 6963 6174 696f g or.modificatio │ │ │ │ │ -0000be80: 6e2e 2020 4f70 7469 6f6e 206c 6973 7473 n. Option lists │ │ │ │ │ -0000be90: 2061 7265 2061 6c77 6179 7320 6f70 7469 are always opti │ │ │ │ │ -0000bea0: 6f6e 616c 2e20 2041 206d 6973 7369 6e67 onal. A missing │ │ │ │ │ -0000beb0: 206f 7074 696f 6e73 206c 6973 740a 6973 options list.is │ │ │ │ │ -0000bec0: 2065 7175 6976 616c 656e 7420 746f 2061 equivalent to a │ │ │ │ │ -0000bed0: 6e20 656d 7074 7920 6f6e 6520 e280 985b n empty one ...[ │ │ │ │ │ -0000bee0: 5de2 8099 2e0a 0a20 2020 5768 656e 2061 ]...... When a │ │ │ │ │ -0000bef0: 20e2 8098 706f 6c79 676f 6ee2 8099 2068 ...polygon... h │ │ │ │ │ -0000bf00: 6173 206f 7074 696f 6e73 2066 6f72 2062 as options for b │ │ │ │ │ -0000bf10: 6f74 6820 6974 7320 6661 6365 2061 6e64 oth its face and │ │ │ │ │ -0000bf20: 2069 7473 2065 6467 6573 2c20 616e 6420 its edges, and │ │ │ │ │ -0000bf30: 7468 650a 706f 6c79 676f 6e20 6973 2073 the.polygon is s │ │ │ │ │ -0000bf40: 706c 6974 2062 7920 7468 6520 6869 6464 plit by the hidd │ │ │ │ │ -0000bf50: 656e 2073 7572 6661 6365 2061 6c67 6f72 en surface algor │ │ │ │ │ -0000bf60: 6974 686d 2c20 e280 9873 6b65 7463 68e2 ithm, ...sketch. │ │ │ │ │ -0000bf70: 8099 206d 7573 7420 636f 7079 2074 6865 .. must copy the │ │ │ │ │ -0000bf80: 0a65 6467 6520 6f70 7469 6f6e 7320 746f .edge options to │ │ │ │ │ -0000bf90: 20e2 8098 7073 6c69 6e65 e280 9973 2066 ...psline...s f │ │ │ │ │ -0000bfa0: 6f72 2074 6865 2065 6467 6520 7365 676d or the edge segm │ │ │ │ │ -0000bfb0: 656e 7473 2061 6e64 2074 6865 2066 6163 ents and the fac │ │ │ │ │ -0000bfc0: 6520 6f70 7469 6f6e 7320 746f 0ae2 8098 e options to.... │ │ │ │ │ -0000bfd0: 7073 706f 6c79 676f 6ee2 8099 732e 2020 pspolygon...s. │ │ │ │ │ -0000bfe0: 4f70 7469 6f6e 7320 6b6e 6f77 6e20 746f Options known to │ │ │ │ │ -0000bff0: 20e2 8098 736b 6574 6368 e280 9920 666f ...sketch... fo │ │ │ │ │ -0000c000: 7220 7075 7270 6f73 6573 206f 6620 7468 r purposes of th │ │ │ │ │ -0000c010: 6973 2073 706c 6974 7469 6e67 0a6f 7065 is splitting.ope │ │ │ │ │ -0000c020: 7261 7469 6f6e 2069 6e63 6c75 6465 20e2 ration include . │ │ │ │ │ -0000c030: 8098 6172 726f 7773 e280 992c 20e2 8098 ..arrows..., ... │ │ │ │ │ -0000c040: 6461 7368 e280 992c 20e2 8098 646f 7473 dash..., ...dots │ │ │ │ │ -0000c050: 6570 e280 992c 20e2 8098 6669 6c6c 636f ep..., ...fillco │ │ │ │ │ -0000c060: 6c6f 72e2 8099 2c20 e280 9866 696c 6c73 lor..., ...fills │ │ │ │ │ -0000c070: 7479 6c65 e280 992c 0ae2 8098 6c69 6e65 tyle...,....line │ │ │ │ │ -0000c080: 636f 6c6f 72e2 8099 2c20 e280 986c 696e color..., ...lin │ │ │ │ │ -0000c090: 6573 7479 6c65 e280 992c 20e2 8098 6c69 estyle..., ...li │ │ │ │ │ -0000c0a0: 6e65 7769 6474 68e2 8099 2c20 e280 986f newidth..., ...o │ │ │ │ │ -0000c0b0: 7061 6369 7479 e280 992c 20e2 8098 7368 pacity..., ...sh │ │ │ │ │ -0000c0c0: 6f77 706f 696e 7473 e280 992c 0ae2 8098 owpoints...,.... │ │ │ │ │ -0000c0d0: 7374 726f 6b65 6f70 6163 6974 79e2 8099 strokeopacity... │ │ │ │ │ -0000c0e0: 2c20 616e 6420 e280 9874 7261 6e73 7061 , and ...transpa │ │ │ │ │ -0000c0f0: 6c70 6861 e280 992e 0a0a 1f0a 4669 6c65 lpha........File │ │ │ │ │ -0000c100: 3a20 736b 6574 6368 2e69 6e66 6f2c 2020 : sketch.info, │ │ │ │ │ -0000c110: 4e6f 6465 3a20 5469 6b5a 2f50 4746 206f Node: TikZ/PGF o │ │ │ │ │ -0000c120: 7074 696f 6e73 2c20 204e 6578 743a 2044 ptions, Next: D │ │ │ │ │ -0000c130: 6f74 7320 696e 2054 696b 5a2f 5047 462c ots in TikZ/PGF, │ │ │ │ │ -0000c140: 2020 5072 6576 3a20 5053 5472 6963 6b73 Prev: PSTricks │ │ │ │ │ -0000c150: 206f 7074 696f 6e73 2c20 2055 703a 204f options, Up: O │ │ │ │ │ -0000c160: 7074 696f 6e73 0a0a 332e 312e 352e 3220 ptions..3.1.5.2 │ │ │ │ │ -0000c170: e280 9854 696b 5a2f 5047 46e2 8099 206f ...TikZ/PGF... o │ │ │ │ │ -0000c180: 7074 696f 6e73 0a2e 2e2e 2e2e 2e2e 2e2e ptions.......... │ │ │ │ │ +0000bd40: 2e2e 2e2e 2e2e 0a0a 5768 656e 20e2 8098 ........When ... │ │ │ │ │ +0000bd50: 6c61 6e67 7561 6765 2070 7374 7269 636b language pstrick │ │ │ │ │ +0000bd60: 73e2 8099 2069 7320 7365 6c65 6374 6564 s... is selected │ │ │ │ │ +0000bd70: 2028 7468 6520 6465 6661 756c 7429 2c20 (the default), │ │ │ │ │ +0000bd80: 7065 726d 6973 7369 626c 650a 6b65 792d permissible.key- │ │ │ │ │ +0000bd90: 7661 6c75 6520 7061 6972 7320 696e 636c value pairs incl │ │ │ │ │ +0000bda0: 7564 6520 616c 6c20 7468 6f73 6520 666f ude all those fo │ │ │ │ │ +0000bdb0: 7220 7369 6d69 6c61 7220 e280 9850 5354 r similar ...PST │ │ │ │ │ +0000bdc0: 7269 636b 73e2 8099 206f 626a 6563 7473 ricks... objects │ │ │ │ │ +0000bdd0: 2e20 2046 6f72 0a65 7861 6d70 6c65 2c20 . For.example, │ │ │ │ │ +0000bde0: 6120 706f 6c79 676f 6e20 6d69 6768 7420 a polygon might │ │ │ │ │ +0000bdf0: 6861 7665 2074 6865 206f 7074 696f 6e73 have the options │ │ │ │ │ +0000be00: 0a20 205b 6c69 6e65 7769 6474 683d 3170 . [linewidth=1p │ │ │ │ │ +0000be10: 742c 6c69 6e65 636f 6c6f 723d 626c 7565 t,linecolor=blue │ │ │ │ │ +0000be20: 2c66 696c 6c63 6f6c 6f72 3d63 7961 6e5d ,fillcolor=cyan] │ │ │ │ │ +0000be30: 0ae2 8098 536b 6574 6368 e280 9920 6d65 ....Sketch... me │ │ │ │ │ +0000be40: 7265 6c79 2070 6173 7365 7320 7468 6573 rely passes thes │ │ │ │ │ +0000be50: 6520 6f6e 2074 6f20 e280 9850 5354 7269 e on to ...PSTri │ │ │ │ │ +0000be60: 636b 73e2 8099 2077 6974 686f 7574 2063 cks... without c │ │ │ │ │ +0000be70: 6865 636b 696e 6720 6f72 0a6d 6f64 6966 hecking or.modif │ │ │ │ │ +0000be80: 6963 6174 696f 6e2e 2020 4f70 7469 6f6e ication. Option │ │ │ │ │ +0000be90: 206c 6973 7473 2061 7265 2061 6c77 6179 lists are alway │ │ │ │ │ +0000bea0: 7320 6f70 7469 6f6e 616c 2e20 2041 206d s optional. A m │ │ │ │ │ +0000beb0: 6973 7369 6e67 206f 7074 696f 6e73 206c issing options l │ │ │ │ │ +0000bec0: 6973 740a 6973 2065 7175 6976 616c 656e ist.is equivalen │ │ │ │ │ +0000bed0: 7420 746f 2061 6e20 656d 7074 7920 6f6e t to an empty on │ │ │ │ │ +0000bee0: 6520 e280 985b 5de2 8099 2e0a 0a20 2020 e ...[]...... │ │ │ │ │ +0000bef0: 5768 656e 2061 20e2 8098 706f 6c79 676f When a ...polygo │ │ │ │ │ +0000bf00: 6ee2 8099 2068 6173 206f 7074 696f 6e73 n... has options │ │ │ │ │ +0000bf10: 2066 6f72 2062 6f74 6820 6974 7320 6661 for both its fa │ │ │ │ │ +0000bf20: 6365 2061 6e64 2069 7473 2065 6467 6573 ce and its edges │ │ │ │ │ +0000bf30: 2c20 616e 6420 7468 650a 706f 6c79 676f , and the.polygo │ │ │ │ │ +0000bf40: 6e20 6973 2073 706c 6974 2062 7920 7468 n is split by th │ │ │ │ │ +0000bf50: 6520 6869 6464 656e 2073 7572 6661 6365 e hidden surface │ │ │ │ │ +0000bf60: 2061 6c67 6f72 6974 686d 2c20 e280 9873 algorithm, ...s │ │ │ │ │ +0000bf70: 6b65 7463 68e2 8099 206d 7573 7420 636f ketch... must co │ │ │ │ │ +0000bf80: 7079 2074 6865 0a65 6467 6520 6f70 7469 py the.edge opti │ │ │ │ │ +0000bf90: 6f6e 7320 746f 20e2 8098 7073 6c69 6e65 ons to ...psline │ │ │ │ │ +0000bfa0: e280 9973 2066 6f72 2074 6865 2065 6467 ...s for the edg │ │ │ │ │ +0000bfb0: 6520 7365 676d 656e 7473 2061 6e64 2074 e segments and t │ │ │ │ │ +0000bfc0: 6865 2066 6163 6520 6f70 7469 6f6e 7320 he face options │ │ │ │ │ +0000bfd0: 746f 0ae2 8098 7073 706f 6c79 676f 6ee2 to....pspolygon. │ │ │ │ │ +0000bfe0: 8099 732e 2020 4f70 7469 6f6e 7320 6b6e ..s. Options kn │ │ │ │ │ +0000bff0: 6f77 6e20 746f 20e2 8098 736b 6574 6368 own to ...sketch │ │ │ │ │ +0000c000: e280 9920 666f 7220 7075 7270 6f73 6573 ... for purposes │ │ │ │ │ +0000c010: 206f 6620 7468 6973 2073 706c 6974 7469 of this splitti │ │ │ │ │ +0000c020: 6e67 0a6f 7065 7261 7469 6f6e 2069 6e63 ng.operation inc │ │ │ │ │ +0000c030: 6c75 6465 20e2 8098 6172 726f 7773 e280 lude ...arrows.. │ │ │ │ │ +0000c040: 992c 20e2 8098 6461 7368 e280 992c 20e2 ., ...dash..., . │ │ │ │ │ +0000c050: 8098 646f 7473 6570 e280 992c 20e2 8098 ..dotsep..., ... │ │ │ │ │ +0000c060: 6669 6c6c 636f 6c6f 72e2 8099 2c20 e280 fillcolor..., .. │ │ │ │ │ +0000c070: 9866 696c 6c73 7479 6c65 e280 992c 0ae2 .fillstyle...,.. │ │ │ │ │ +0000c080: 8098 6c69 6e65 636f 6c6f 72e2 8099 2c20 ..linecolor..., │ │ │ │ │ +0000c090: e280 986c 696e 6573 7479 6c65 e280 992c ...linestyle..., │ │ │ │ │ +0000c0a0: 20e2 8098 6c69 6e65 7769 6474 68e2 8099 ...linewidth... │ │ │ │ │ +0000c0b0: 2c20 e280 986f 7061 6369 7479 e280 992c , ...opacity..., │ │ │ │ │ +0000c0c0: 20e2 8098 7368 6f77 706f 696e 7473 e280 ...showpoints.. │ │ │ │ │ +0000c0d0: 992c 0ae2 8098 7374 726f 6b65 6f70 6163 .,....strokeopac │ │ │ │ │ +0000c0e0: 6974 79e2 8099 2c20 616e 6420 e280 9874 ity..., and ...t │ │ │ │ │ +0000c0f0: 7261 6e73 7061 6c70 6861 e280 992e 0a0a ranspalpha...... │ │ │ │ │ +0000c100: 1f0a 4669 6c65 3a20 736b 6574 6368 2e69 ..File: sketch.i │ │ │ │ │ +0000c110: 6e66 6f2c 2020 4e6f 6465 3a20 5469 6b5a nfo, Node: TikZ │ │ │ │ │ +0000c120: 2f50 4746 206f 7074 696f 6e73 2c20 204e /PGF options, N │ │ │ │ │ +0000c130: 6578 743a 2044 6f74 7320 696e 2054 696b ext: Dots in Tik │ │ │ │ │ +0000c140: 5a2f 5047 462c 2020 5072 6576 3a20 5053 Z/PGF, Prev: PS │ │ │ │ │ +0000c150: 5472 6963 6b73 206f 7074 696f 6e73 2c20 Tricks options, │ │ │ │ │ +0000c160: 2055 703a 204f 7074 696f 6e73 0a0a 332e Up: Options..3. │ │ │ │ │ +0000c170: 312e 352e 3220 e280 9854 696b 5a2f 5047 1.5.2 ...TikZ/PG │ │ │ │ │ +0000c180: 46e2 8099 206f 7074 696f 6e73 0a2e 2e2e F... options.... │ │ │ │ │ 0000c190: 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e ................ │ │ │ │ │ -0000c1a0: 2e0a 0ae2 8098 5469 6b5a 2f50 4746 e280 ......TikZ/PGF.. │ │ │ │ │ -0000c1b0: 9920 6f70 7469 6f6e 7320 6172 6520 6861 . options are ha │ │ │ │ │ -0000c1c0: 6e64 6c65 6420 6d75 6368 2061 7320 666f ndled much as fo │ │ │ │ │ -0000c1d0: 7220 e280 9850 5354 7269 636b 73e2 8099 r ...PSTricks... │ │ │ │ │ -0000c1e0: 2e20 2054 686f 7567 680a e280 9854 696b . Though....Tik │ │ │ │ │ -0000c1f0: 5a2f 5047 46e2 8099 206f 6674 656e 2061 Z/PGF... often a │ │ │ │ │ -0000c200: 6c6c 6f77 7320 636f 6c6f 7273 2061 6e64 llows colors and │ │ │ │ │ -0000c210: 2073 7479 6c65 7320 746f 2062 6520 6769 styles to be gi │ │ │ │ │ -0000c220: 7665 6e20 7769 7468 6f75 740a 636f 7272 ven without.corr │ │ │ │ │ -0000c230: 6573 706f 6e64 696e 6720 6b65 7973 2c20 esponding keys, │ │ │ │ │ -0000c240: 666f 7220 6578 616d 706c 652c 0a20 205c for example,. \ │ │ │ │ │ -0000c250: 6472 6177 5b72 6564 2c75 6c74 7261 2074 draw[red,ultra t │ │ │ │ │ -0000c260: 6869 636b 5d28 302c 3029 2d2d 2831 2c31 hick](0,0)--(1,1 │ │ │ │ │ -0000c270: 293b 0a74 6869 7320 6973 206e 6f74 2070 );.this is not p │ │ │ │ │ -0000c280: 6572 6d69 7474 6564 2069 6e20 e280 9873 ermitted in ...s │ │ │ │ │ -0000c290: 6b65 7463 68e2 8099 2e20 2054 6f20 6472 ketch.... To dr │ │ │ │ │ -0000c2a0: 6177 2061 2072 6564 2c20 756c 7472 612d aw a red, ultra- │ │ │ │ │ -0000c2b0: 7468 6963 6b20 6c69 6e65 2069 6e0a e280 thick line in... │ │ │ │ │ -0000c2c0: 9873 6b65 7463 68e2 8099 2c20 7468 6520 .sketch..., the │ │ │ │ │ -0000c2d0: 666f 726d 2069 730a 2020 6c69 6e65 5b64 form is. line[d │ │ │ │ │ -0000c2e0: 7261 773d 7265 642c 7374 796c 653d 756c raw=red,style=ul │ │ │ │ │ -0000c2f0: 7472 6120 7468 6963 6b5d 2830 2c30 2928 tra thick](0,0)( │ │ │ │ │ -0000c300: 312c 3129 0a0a 2020 204a 7573 7420 6173 1,1).. Just as │ │ │ │ │ -0000c310: 2066 6f72 20e2 8098 5053 5472 6963 6b73 for ...PSTricks │ │ │ │ │ -0000c320: e280 992c 2077 6865 6e20 6120 e280 9870 ..., when a ...p │ │ │ │ │ -0000c330: 6f6c 7967 6f6e e280 9920 6861 7320 6f70 olygon... has op │ │ │ │ │ -0000c340: 7469 6f6e 7320 666f 7220 626f 7468 2069 tions for both i │ │ │ │ │ -0000c350: 7473 0a66 6163 6520 616e 6420 6974 7320 ts.face and its │ │ │ │ │ -0000c360: 6564 6765 732c 2061 6e64 2074 6865 2070 edges, and the p │ │ │ │ │ -0000c370: 6f6c 7967 6f6e 2069 7320 7370 6c69 7420 olygon is split │ │ │ │ │ -0000c380: 6279 2074 6865 2068 6964 6465 6e20 7375 by the hidden su │ │ │ │ │ -0000c390: 7266 6163 650a 616c 676f 7269 7468 6d2c rface.algorithm, │ │ │ │ │ -0000c3a0: 20e2 8098 736b 6574 6368 e280 9920 6d75 ...sketch... mu │ │ │ │ │ -0000c3b0: 7374 2063 6f70 7920 7468 6520 6564 6765 st copy the edge │ │ │ │ │ -0000c3c0: 206f 7074 696f 6e73 2074 6f20 e280 9870 options to ...p │ │ │ │ │ -0000c3d0: 736c 696e 65e2 8099 7320 666f 7220 7468 sline...s for th │ │ │ │ │ -0000c3e0: 6520 6564 6765 0a73 6567 6d65 6e74 7320 e edge.segments │ │ │ │ │ -0000c3f0: 616e 6420 7468 6520 6661 6365 206f 7074 and the face opt │ │ │ │ │ -0000c400: 696f 6e73 2074 6f20 e280 9870 7370 6f6c ions to ...pspol │ │ │ │ │ -0000c410: 7967 6f6e e280 9973 2e20 20e2 8098 5469 ygon...s. ...Ti │ │ │ │ │ -0000c420: 6b5a 2f50 4746 e280 9920 6f70 7469 6f6e kZ/PGF... option │ │ │ │ │ -0000c430: 7320 6b6e 6f77 6e0a 746f 20e2 8098 736b s known.to ...sk │ │ │ │ │ -0000c440: 6574 6368 e280 9920 666f 7220 7075 7270 etch... for purp │ │ │ │ │ -0000c450: 6f73 6573 206f 6620 7468 6973 2073 706c oses of this spl │ │ │ │ │ -0000c460: 6974 7469 6e67 206f 7065 7261 7469 6f6e itting operation │ │ │ │ │ -0000c470: 2069 6e63 6c75 6465 20e2 8098 6172 726f include ...arro │ │ │ │ │ -0000c480: 7773 e280 992c 0ae2 8098 6361 70e2 8099 ws...,....cap... │ │ │ │ │ -0000c490: 2c20 e280 9863 6f6c 6f72 e280 992c 20e2 , ...color..., . │ │ │ │ │ -0000c4a0: 8098 6461 7368 2070 6174 7465 726e e280 ..dash pattern.. │ │ │ │ │ -0000c4b0: 992c 20e2 8098 6461 7368 2070 6861 7365 ., ...dash phase │ │ │ │ │ -0000c4c0: e280 992c 20e2 8098 646f 7562 6c65 e280 ..., ...double.. │ │ │ │ │ -0000c4d0: 992c 20e2 8098 646f 7562 6c65 0a64 6973 ., ...double.dis │ │ │ │ │ -0000c4e0: 7461 6e63 65e2 8099 2c20 e280 9864 7261 tance..., ...dra │ │ │ │ │ -0000c4f0: 77e2 8099 2c20 e280 9864 7261 7720 6f70 w..., ...draw op │ │ │ │ │ -0000c500: 6163 6974 79e2 8099 2c20 e280 9866 696c acity..., ...fil │ │ │ │ │ -0000c510: 6ce2 8099 2c20 e280 9866 696c 6c20 6f70 l..., ...fill op │ │ │ │ │ -0000c520: 6163 6974 79e2 8099 2c20 e280 986a 6f69 acity..., ...joi │ │ │ │ │ -0000c530: 6ee2 8099 2c20 e280 986c 696e 650a 7769 n..., ...line.wi │ │ │ │ │ -0000c540: 6474 68e2 8099 2c20 e280 986d 6974 6572 dth..., ...miter │ │ │ │ │ -0000c550: 206c 696d 6974 e280 992c 20e2 8098 7061 limit..., ...pa │ │ │ │ │ -0000c560: 7474 6572 6ee2 8099 2c20 e280 9870 6174 ttern..., ...pat │ │ │ │ │ -0000c570: 7465 726e 2063 6f6c 6f72 e280 992c 2061 tern color..., a │ │ │ │ │ -0000c580: 6e64 20e2 8098 7374 796c 65e2 8099 2e0a nd ...style..... │ │ │ │ │ -0000c590: 0a20 2020 5468 6520 e280 9873 7479 6c65 . The ...style │ │ │ │ │ -0000c5a0: e280 9920 6f70 7469 6f6e 2063 616e 2063 ... option can c │ │ │ │ │ -0000c5b0: 6f6e 7461 696e 2062 6f74 6820 6661 6365 ontain both face │ │ │ │ │ -0000c5c0: 2061 6e64 2065 6467 6520 696e 666f 726d and edge inform │ │ │ │ │ -0000c5d0: 6174 696f 6e2c 2073 6f0a e280 9873 6b65 ation, so....ske │ │ │ │ │ -0000c5e0: 7463 68e2 8099 206d 7573 7420 6368 6563 tch... must chec │ │ │ │ │ -0000c5f0: 6b20 7468 6520 7374 796c 6520 7661 6c75 k the style valu │ │ │ │ │ -0000c600: 652e 2020 5661 6c75 6573 206b 6e6f 776e e. Values known │ │ │ │ │ -0000c610: 2074 6f20 e280 9873 6b65 7463 68e2 8099 to ...sketch... │ │ │ │ │ -0000c620: 2069 6e63 6c75 6465 0ae2 8098 6461 7368 include....dash │ │ │ │ │ -0000c630: 6564 e280 992c 20e2 8098 6465 6e73 656c ed..., ...densel │ │ │ │ │ -0000c640: 7920 6461 7368 6564 e280 992c 20e2 8098 y dashed..., ... │ │ │ │ │ -0000c650: 6465 6e73 656c 7920 646f 7474 6564 e280 densely dotted.. │ │ │ │ │ -0000c660: 992c 20e2 8098 646f 7474 6564 e280 992c ., ...dotted..., │ │ │ │ │ -0000c670: 20e2 8098 646f 7562 6c65 e280 992c 0ae2 ...double...,.. │ │ │ │ │ -0000c680: 8098 6c6f 6f73 656c 7920 6461 7368 6564 ..loosely dashed │ │ │ │ │ -0000c690: e280 992c 20e2 8098 6c6f 6f73 656c 7920 ..., ...loosely │ │ │ │ │ -0000c6a0: 646f 7474 6564 e280 992c 20e2 8098 6e65 dotted..., ...ne │ │ │ │ │ -0000c6b0: 6172 6c79 206f 7061 7175 65e2 8099 2c20 arly opaque..., │ │ │ │ │ -0000c6c0: e280 986e 6561 726c 790a 7472 616e 7370 ...nearly.transp │ │ │ │ │ -0000c6d0: 6172 656e 74e2 8099 2c20 e280 9873 656d arent..., ...sem │ │ │ │ │ -0000c6e0: 6974 6869 636b e280 992c 20e2 8098 7365 ithick..., ...se │ │ │ │ │ -0000c6f0: 6d69 7472 616e 7370 6172 656e 74e2 8099 mitransparent... │ │ │ │ │ -0000c700: 2c20 e280 9873 6f6c 6964 e280 992c 20e2 , ...solid..., . │ │ │ │ │ -0000c710: 8098 7468 6963 6be2 8099 2c20 e280 9874 ..thick..., ...t │ │ │ │ │ -0000c720: 6869 6ee2 8099 2c0a e280 9874 7261 6e73 hin...,....trans │ │ │ │ │ -0000c730: 7061 7265 6e74 e280 992c 20e2 8098 756c parent..., ...ul │ │ │ │ │ -0000c740: 7472 6120 6e65 6172 6c79 2074 7261 6e73 tra nearly trans │ │ │ │ │ -0000c750: 7061 7265 6e74 e280 992c 20e2 8098 756c parent..., ...ul │ │ │ │ │ -0000c760: 7472 6120 7468 6963 6be2 8099 2c20 e280 tra thick..., .. │ │ │ │ │ -0000c770: 9875 6c74 7261 2074 6869 6ee2 8099 2c0a .ultra thin...,. │ │ │ │ │ -0000c780: e280 9876 6572 7920 6e65 6172 6c79 2074 ...very nearly t │ │ │ │ │ -0000c790: 7261 6e73 7061 7265 6e74 e280 992c 20e2 ransparent..., . │ │ │ │ │ -0000c7a0: 8098 7665 7279 2074 6869 636b e280 992c ..very thick..., │ │ │ │ │ -0000c7b0: 2061 6e64 20e2 8098 7665 7279 2074 6869 and ...very thi │ │ │ │ │ -0000c7c0: 6ee2 8099 2e0a 0a1f 0a46 696c 653a 2073 n........File: s │ │ │ │ │ -0000c7d0: 6b65 7463 682e 696e 666f 2c20 204e 6f64 ketch.info, Nod │ │ │ │ │ -0000c7e0: 653a 2044 6f74 7320 696e 2054 696b 5a2f e: Dots in TikZ/ │ │ │ │ │ -0000c7f0: 5047 462c 2020 4e65 7874 3a20 5469 6b5a PGF, Next: TikZ │ │ │ │ │ -0000c800: 2f50 4746 2075 7365 722d 6465 6669 6e65 /PGF user-define │ │ │ │ │ -0000c810: 6420 7374 796c 6573 2c20 2050 7265 763a d styles, Prev: │ │ │ │ │ -0000c820: 2054 696b 5a2f 5047 4620 6f70 7469 6f6e TikZ/PGF option │ │ │ │ │ -0000c830: 732c 2020 5570 3a20 4f70 7469 6f6e 730a s, Up: Options. │ │ │ │ │ -0000c840: 0a33 2e31 2e35 2e33 2044 6f74 7320 696e .3.1.5.3 Dots in │ │ │ │ │ -0000c850: 20e2 8098 5469 6b5a 2f50 4746 e280 990a ...TikZ/PGF.... │ │ │ │ │ -0000c860: 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e ................ │ │ │ │ │ -0000c870: 2e2e 2e2e 2e2e 2e2e 2e2e 0a0a e280 9854 ...............T │ │ │ │ │ -0000c880: 696b 5a2f 5047 46e2 8099 2064 6f65 7320 ikZ/PGF... does │ │ │ │ │ -0000c890: 6e6f 7420 6861 7665 2061 20e2 8098 646f not have a ...do │ │ │ │ │ -0000c8a0: 7473 e280 9920 636f 6d6d 616e 6420 6173 ts... command as │ │ │ │ │ -0000c8b0: 2064 6f65 7320 5053 5472 6963 6b73 2e20 does PSTricks. │ │ │ │ │ -0000c8c0: 2049 6e73 7465 6164 2c0a e280 9853 6b65 Instead,....Ske │ │ │ │ │ -0000c8d0: 7463 68e2 8099 2065 6d69 7473 2064 6f74 tch... emits dot │ │ │ │ │ -0000c8e0: 7320 6173 20e2 8098 6669 6c6c 6472 6177 s as ...filldraw │ │ │ │ │ -0000c8f0: e280 9920 6369 7263 6c65 732e 2020 5468 ... circles. Th │ │ │ │ │ -0000c900: 6520 6469 616d 6574 6572 206d 6179 2062 e diameter may b │ │ │ │ │ -0000c910: 6520 7365 740a 7573 696e 6720 7468 6520 e set.using the │ │ │ │ │ -0000c920: 6f70 7469 6f6e 20e2 8098 646f 7473 697a option ...dotsiz │ │ │ │ │ -0000c930: 65e2 8099 2062 6f72 726f 7765 6420 6672 e... borrowed fr │ │ │ │ │ -0000c940: 6f6d 2050 5354 7269 636b 732e 2020 5468 om PSTricks. Th │ │ │ │ │ -0000c950: 6520 e280 9864 6f74 7369 7a65 e280 9920 e ...dotsize... │ │ │ │ │ -0000c960: 6f70 7469 6f6e 0a77 696c 6c20 6265 2072 option.will be r │ │ │ │ │ -0000c970: 656d 6f76 6564 2066 726f 6d20 7468 6520 emoved from the │ │ │ │ │ -0000c980: 6f70 7469 6f6e 206c 6973 7420 696e 2074 option list in t │ │ │ │ │ -0000c990: 6865 206f 7574 7075 7420 e280 9866 696c he output ...fil │ │ │ │ │ -0000c9a0: 6c64 7261 77e2 8099 2063 6f6d 6d61 6e64 ldraw... command │ │ │ │ │ -0000c9b0: 2e0a 4f74 6865 7220 6f70 7469 6f6e 7320 ..Other options │ │ │ │ │ -0000c9c0: 776f 726b 2069 6e20 7468 6520 6578 7065 work in the expe │ │ │ │ │ -0000c9d0: 6374 6564 2077 6179 2e20 2046 6f72 2065 cted way. For e │ │ │ │ │ -0000c9e0: 7861 6d70 6c65 2c20 e280 9866 696c 6ce2 xample, ...fill. │ │ │ │ │ -0000c9f0: 8099 2073 6574 7320 6669 6c6c 0a63 6f6c .. sets fill.col │ │ │ │ │ -0000ca00: 6f72 2061 6e64 20e2 8098 636f 6c6f 72e2 or and ...color. │ │ │ │ │ -0000ca10: 8099 2073 6574 7320 6c69 6e65 2063 6f6c .. sets line col │ │ │ │ │ -0000ca20: 6f72 206f 6620 7468 6520 6369 7263 6c65 or of the circle │ │ │ │ │ -0000ca30: 732e 0a0a 1f0a 4669 6c65 3a20 736b 6574 s.....File: sket │ │ │ │ │ -0000ca40: 6368 2e69 6e66 6f2c 2020 4e6f 6465 3a20 ch.info, Node: │ │ │ │ │ -0000ca50: 5469 6b5a 2f50 4746 2075 7365 722d 6465 TikZ/PGF user-de │ │ │ │ │ -0000ca60: 6669 6e65 6420 7374 796c 6573 2c20 204e fined styles, N │ │ │ │ │ -0000ca70: 6578 743a 2054 7261 6e73 7061 7265 6e63 ext: Transparenc │ │ │ │ │ -0000ca80: 792c 2020 5072 6576 3a20 446f 7473 2069 y, Prev: Dots i │ │ │ │ │ -0000ca90: 6e20 5469 6b5a 2f50 4746 2c20 2055 703a n TikZ/PGF, Up: │ │ │ │ │ -0000caa0: 204f 7074 696f 6e73 0a0a 332e 312e 352e Options..3.1.5. │ │ │ │ │ -0000cab0: 3420 e280 9854 696b 5a2f 5047 46e2 8099 4 ...TikZ/PGF... │ │ │ │ │ -0000cac0: 2075 7365 722d 6465 6669 6e65 6420 7374 user-defined st │ │ │ │ │ -0000cad0: 796c 6573 0a2e 2e2e 2e2e 2e2e 2e2e 2e2e yles............ │ │ │ │ │ +0000c1a0: 2e2e 2e2e 2e2e 2e0a 0ae2 8098 5469 6b5a ............TikZ │ │ │ │ │ +0000c1b0: 2f50 4746 e280 9920 6f70 7469 6f6e 7320 /PGF... options │ │ │ │ │ +0000c1c0: 6172 6520 6861 6e64 6c65 6420 6d75 6368 are handled much │ │ │ │ │ +0000c1d0: 2061 7320 666f 7220 e280 9850 5354 7269 as for ...PSTri │ │ │ │ │ +0000c1e0: 636b 73e2 8099 2e20 2054 686f 7567 680a cks.... Though. │ │ │ │ │ +0000c1f0: e280 9854 696b 5a2f 5047 46e2 8099 206f ...TikZ/PGF... o │ │ │ │ │ +0000c200: 6674 656e 2061 6c6c 6f77 7320 636f 6c6f ften allows colo │ │ │ │ │ +0000c210: 7273 2061 6e64 2073 7479 6c65 7320 746f rs and styles to │ │ │ │ │ +0000c220: 2062 6520 6769 7665 6e20 7769 7468 6f75 be given withou │ │ │ │ │ +0000c230: 740a 636f 7272 6573 706f 6e64 696e 6720 t.corresponding │ │ │ │ │ +0000c240: 6b65 7973 2c20 666f 7220 6578 616d 706c keys, for exampl │ │ │ │ │ +0000c250: 652c 0a20 205c 6472 6177 5b72 6564 2c75 e,. \draw[red,u │ │ │ │ │ +0000c260: 6c74 7261 2074 6869 636b 5d28 302c 3029 ltra thick](0,0) │ │ │ │ │ +0000c270: 2d2d 2831 2c31 293b 0a74 6869 7320 6973 --(1,1);.this is │ │ │ │ │ +0000c280: 206e 6f74 2070 6572 6d69 7474 6564 2069 not permitted i │ │ │ │ │ +0000c290: 6e20 e280 9873 6b65 7463 68e2 8099 2e20 n ...sketch.... │ │ │ │ │ +0000c2a0: 2054 6f20 6472 6177 2061 2072 6564 2c20 To draw a red, │ │ │ │ │ +0000c2b0: 756c 7472 612d 7468 6963 6b20 6c69 6e65 ultra-thick line │ │ │ │ │ +0000c2c0: 2069 6e0a e280 9873 6b65 7463 68e2 8099 in....sketch... │ │ │ │ │ +0000c2d0: 2c20 7468 6520 666f 726d 2069 730a 2020 , the form is. │ │ │ │ │ +0000c2e0: 6c69 6e65 5b64 7261 773d 7265 642c 7374 line[draw=red,st │ │ │ │ │ +0000c2f0: 796c 653d 756c 7472 6120 7468 6963 6b5d yle=ultra thick] │ │ │ │ │ +0000c300: 2830 2c30 2928 312c 3129 0a0a 2020 204a (0,0)(1,1).. J │ │ │ │ │ +0000c310: 7573 7420 6173 2066 6f72 20e2 8098 5053 ust as for ...PS │ │ │ │ │ +0000c320: 5472 6963 6b73 e280 992c 2077 6865 6e20 Tricks..., when │ │ │ │ │ +0000c330: 6120 e280 9870 6f6c 7967 6f6e e280 9920 a ...polygon... │ │ │ │ │ +0000c340: 6861 7320 6f70 7469 6f6e 7320 666f 7220 has options for │ │ │ │ │ +0000c350: 626f 7468 2069 7473 0a66 6163 6520 616e both its.face an │ │ │ │ │ +0000c360: 6420 6974 7320 6564 6765 732c 2061 6e64 d its edges, and │ │ │ │ │ +0000c370: 2074 6865 2070 6f6c 7967 6f6e 2069 7320 the polygon is │ │ │ │ │ +0000c380: 7370 6c69 7420 6279 2074 6865 2068 6964 split by the hid │ │ │ │ │ +0000c390: 6465 6e20 7375 7266 6163 650a 616c 676f den surface.algo │ │ │ │ │ +0000c3a0: 7269 7468 6d2c 20e2 8098 736b 6574 6368 rithm, ...sketch │ │ │ │ │ +0000c3b0: e280 9920 6d75 7374 2063 6f70 7920 7468 ... must copy th │ │ │ │ │ +0000c3c0: 6520 6564 6765 206f 7074 696f 6e73 2074 e edge options t │ │ │ │ │ +0000c3d0: 6f20 e280 9870 736c 696e 65e2 8099 7320 o ...psline...s │ │ │ │ │ +0000c3e0: 666f 7220 7468 6520 6564 6765 0a73 6567 for the edge.seg │ │ │ │ │ +0000c3f0: 6d65 6e74 7320 616e 6420 7468 6520 6661 ments and the fa │ │ │ │ │ +0000c400: 6365 206f 7074 696f 6e73 2074 6f20 e280 ce options to .. │ │ │ │ │ +0000c410: 9870 7370 6f6c 7967 6f6e e280 9973 2e20 .pspolygon...s. │ │ │ │ │ +0000c420: 20e2 8098 5469 6b5a 2f50 4746 e280 9920 ...TikZ/PGF... │ │ │ │ │ +0000c430: 6f70 7469 6f6e 7320 6b6e 6f77 6e0a 746f options known.to │ │ │ │ │ +0000c440: 20e2 8098 736b 6574 6368 e280 9920 666f ...sketch... fo │ │ │ │ │ +0000c450: 7220 7075 7270 6f73 6573 206f 6620 7468 r purposes of th │ │ │ │ │ +0000c460: 6973 2073 706c 6974 7469 6e67 206f 7065 is splitting ope │ │ │ │ │ +0000c470: 7261 7469 6f6e 2069 6e63 6c75 6465 20e2 ration include . │ │ │ │ │ +0000c480: 8098 6172 726f 7773 e280 992c 0ae2 8098 ..arrows...,.... │ │ │ │ │ +0000c490: 6361 70e2 8099 2c20 e280 9863 6f6c 6f72 cap..., ...color │ │ │ │ │ +0000c4a0: e280 992c 20e2 8098 6461 7368 2070 6174 ..., ...dash pat │ │ │ │ │ +0000c4b0: 7465 726e e280 992c 20e2 8098 6461 7368 tern..., ...dash │ │ │ │ │ +0000c4c0: 2070 6861 7365 e280 992c 20e2 8098 646f phase..., ...do │ │ │ │ │ +0000c4d0: 7562 6c65 e280 992c 20e2 8098 646f 7562 uble..., ...doub │ │ │ │ │ +0000c4e0: 6c65 0a64 6973 7461 6e63 65e2 8099 2c20 le.distance..., │ │ │ │ │ +0000c4f0: e280 9864 7261 77e2 8099 2c20 e280 9864 ...draw..., ...d │ │ │ │ │ +0000c500: 7261 7720 6f70 6163 6974 79e2 8099 2c20 raw opacity..., │ │ │ │ │ +0000c510: e280 9866 696c 6ce2 8099 2c20 e280 9866 ...fill..., ...f │ │ │ │ │ +0000c520: 696c 6c20 6f70 6163 6974 79e2 8099 2c20 ill opacity..., │ │ │ │ │ +0000c530: e280 986a 6f69 6ee2 8099 2c20 e280 986c ...join..., ...l │ │ │ │ │ +0000c540: 696e 650a 7769 6474 68e2 8099 2c20 e280 ine.width..., .. │ │ │ │ │ +0000c550: 986d 6974 6572 206c 696d 6974 e280 992c .miter limit..., │ │ │ │ │ +0000c560: 20e2 8098 7061 7474 6572 6ee2 8099 2c20 ...pattern..., │ │ │ │ │ +0000c570: e280 9870 6174 7465 726e 2063 6f6c 6f72 ...pattern color │ │ │ │ │ +0000c580: e280 992c 2061 6e64 20e2 8098 7374 796c ..., and ...styl │ │ │ │ │ +0000c590: 65e2 8099 2e0a 0a20 2020 5468 6520 e280 e...... The .. │ │ │ │ │ +0000c5a0: 9873 7479 6c65 e280 9920 6f70 7469 6f6e .style... option │ │ │ │ │ +0000c5b0: 2063 616e 2063 6f6e 7461 696e 2062 6f74 can contain bot │ │ │ │ │ +0000c5c0: 6820 6661 6365 2061 6e64 2065 6467 6520 h face and edge │ │ │ │ │ +0000c5d0: 696e 666f 726d 6174 696f 6e2c 2073 6f0a information, so. │ │ │ │ │ +0000c5e0: e280 9873 6b65 7463 68e2 8099 206d 7573 ...sketch... mus │ │ │ │ │ +0000c5f0: 7420 6368 6563 6b20 7468 6520 7374 796c t check the styl │ │ │ │ │ +0000c600: 6520 7661 6c75 652e 2020 5661 6c75 6573 e value. Values │ │ │ │ │ +0000c610: 206b 6e6f 776e 2074 6f20 e280 9873 6b65 known to ...ske │ │ │ │ │ +0000c620: 7463 68e2 8099 2069 6e63 6c75 6465 0ae2 tch... include.. │ │ │ │ │ +0000c630: 8098 6461 7368 6564 e280 992c 20e2 8098 ..dashed..., ... │ │ │ │ │ +0000c640: 6465 6e73 656c 7920 6461 7368 6564 e280 densely dashed.. │ │ │ │ │ +0000c650: 992c 20e2 8098 6465 6e73 656c 7920 646f ., ...densely do │ │ │ │ │ +0000c660: 7474 6564 e280 992c 20e2 8098 646f 7474 tted..., ...dott │ │ │ │ │ +0000c670: 6564 e280 992c 20e2 8098 646f 7562 6c65 ed..., ...double │ │ │ │ │ +0000c680: e280 992c 0ae2 8098 6c6f 6f73 656c 7920 ...,....loosely │ │ │ │ │ +0000c690: 6461 7368 6564 e280 992c 20e2 8098 6c6f dashed..., ...lo │ │ │ │ │ +0000c6a0: 6f73 656c 7920 646f 7474 6564 e280 992c osely dotted..., │ │ │ │ │ +0000c6b0: 20e2 8098 6e65 6172 6c79 206f 7061 7175 ...nearly opaqu │ │ │ │ │ +0000c6c0: 65e2 8099 2c20 e280 986e 6561 726c 790a e..., ...nearly. │ │ │ │ │ +0000c6d0: 7472 616e 7370 6172 656e 74e2 8099 2c20 transparent..., │ │ │ │ │ +0000c6e0: e280 9873 656d 6974 6869 636b e280 992c ...semithick..., │ │ │ │ │ +0000c6f0: 20e2 8098 7365 6d69 7472 616e 7370 6172 ...semitranspar │ │ │ │ │ +0000c700: 656e 74e2 8099 2c20 e280 9873 6f6c 6964 ent..., ...solid │ │ │ │ │ +0000c710: e280 992c 20e2 8098 7468 6963 6be2 8099 ..., ...thick... │ │ │ │ │ +0000c720: 2c20 e280 9874 6869 6ee2 8099 2c0a e280 , ...thin...,... │ │ │ │ │ +0000c730: 9874 7261 6e73 7061 7265 6e74 e280 992c .transparent..., │ │ │ │ │ +0000c740: 20e2 8098 756c 7472 6120 6e65 6172 6c79 ...ultra nearly │ │ │ │ │ +0000c750: 2074 7261 6e73 7061 7265 6e74 e280 992c transparent..., │ │ │ │ │ +0000c760: 20e2 8098 756c 7472 6120 7468 6963 6be2 ...ultra thick. │ │ │ │ │ +0000c770: 8099 2c20 e280 9875 6c74 7261 2074 6869 .., ...ultra thi │ │ │ │ │ +0000c780: 6ee2 8099 2c0a e280 9876 6572 7920 6e65 n...,....very ne │ │ │ │ │ +0000c790: 6172 6c79 2074 7261 6e73 7061 7265 6e74 arly transparent │ │ │ │ │ +0000c7a0: e280 992c 20e2 8098 7665 7279 2074 6869 ..., ...very thi │ │ │ │ │ +0000c7b0: 636b e280 992c 2061 6e64 20e2 8098 7665 ck..., and ...ve │ │ │ │ │ +0000c7c0: 7279 2074 6869 6ee2 8099 2e0a 0a1f 0a46 ry thin........F │ │ │ │ │ +0000c7d0: 696c 653a 2073 6b65 7463 682e 696e 666f ile: sketch.info │ │ │ │ │ +0000c7e0: 2c20 204e 6f64 653a 2044 6f74 7320 696e , Node: Dots in │ │ │ │ │ +0000c7f0: 2054 696b 5a2f 5047 462c 2020 4e65 7874 TikZ/PGF, Next │ │ │ │ │ +0000c800: 3a20 5469 6b5a 2f50 4746 2075 7365 722d : TikZ/PGF user- │ │ │ │ │ +0000c810: 6465 6669 6e65 6420 7374 796c 6573 2c20 defined styles, │ │ │ │ │ +0000c820: 2050 7265 763a 2054 696b 5a2f 5047 4620 Prev: TikZ/PGF │ │ │ │ │ +0000c830: 6f70 7469 6f6e 732c 2020 5570 3a20 4f70 options, Up: Op │ │ │ │ │ +0000c840: 7469 6f6e 730a 0a33 2e31 2e35 2e33 2044 tions..3.1.5.3 D │ │ │ │ │ +0000c850: 6f74 7320 696e 20e2 8098 5469 6b5a 2f50 ots in ...TikZ/P │ │ │ │ │ +0000c860: 4746 e280 990a 2e2e 2e2e 2e2e 2e2e 2e2e GF.............. │ │ │ │ │ +0000c870: 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e ................ │ │ │ │ │ +0000c880: 0a0a e280 9854 696b 5a2f 5047 46e2 8099 .....TikZ/PGF... │ │ │ │ │ +0000c890: 2064 6f65 7320 6e6f 7420 6861 7665 2061 does not have a │ │ │ │ │ +0000c8a0: 20e2 8098 646f 7473 e280 9920 636f 6d6d ...dots... comm │ │ │ │ │ +0000c8b0: 616e 6420 6173 2064 6f65 7320 5053 5472 and as does PSTr │ │ │ │ │ +0000c8c0: 6963 6b73 2e20 2049 6e73 7465 6164 2c0a icks. Instead,. │ │ │ │ │ +0000c8d0: e280 9853 6b65 7463 68e2 8099 2065 6d69 ...Sketch... emi │ │ │ │ │ +0000c8e0: 7473 2064 6f74 7320 6173 20e2 8098 6669 ts dots as ...fi │ │ │ │ │ +0000c8f0: 6c6c 6472 6177 e280 9920 6369 7263 6c65 lldraw... circle │ │ │ │ │ +0000c900: 732e 2020 5468 6520 6469 616d 6574 6572 s. The diameter │ │ │ │ │ +0000c910: 206d 6179 2062 6520 7365 740a 7573 696e may be set.usin │ │ │ │ │ +0000c920: 6720 7468 6520 6f70 7469 6f6e 20e2 8098 g the option ... │ │ │ │ │ +0000c930: 646f 7473 697a 65e2 8099 2062 6f72 726f dotsize... borro │ │ │ │ │ +0000c940: 7765 6420 6672 6f6d 2050 5354 7269 636b wed from PSTrick │ │ │ │ │ +0000c950: 732e 2020 5468 6520 e280 9864 6f74 7369 s. The ...dotsi │ │ │ │ │ +0000c960: 7a65 e280 9920 6f70 7469 6f6e 0a77 696c ze... option.wil │ │ │ │ │ +0000c970: 6c20 6265 2072 656d 6f76 6564 2066 726f l be removed fro │ │ │ │ │ +0000c980: 6d20 7468 6520 6f70 7469 6f6e 206c 6973 m the option lis │ │ │ │ │ +0000c990: 7420 696e 2074 6865 206f 7574 7075 7420 t in the output │ │ │ │ │ +0000c9a0: e280 9866 696c 6c64 7261 77e2 8099 2063 ...filldraw... c │ │ │ │ │ +0000c9b0: 6f6d 6d61 6e64 2e0a 4f74 6865 7220 6f70 ommand..Other op │ │ │ │ │ +0000c9c0: 7469 6f6e 7320 776f 726b 2069 6e20 7468 tions work in th │ │ │ │ │ +0000c9d0: 6520 6578 7065 6374 6564 2077 6179 2e20 e expected way. │ │ │ │ │ +0000c9e0: 2046 6f72 2065 7861 6d70 6c65 2c20 e280 For example, .. │ │ │ │ │ +0000c9f0: 9866 696c 6ce2 8099 2073 6574 7320 6669 .fill... sets fi │ │ │ │ │ +0000ca00: 6c6c 0a63 6f6c 6f72 2061 6e64 20e2 8098 ll.color and ... │ │ │ │ │ +0000ca10: 636f 6c6f 72e2 8099 2073 6574 7320 6c69 color... sets li │ │ │ │ │ +0000ca20: 6e65 2063 6f6c 6f72 206f 6620 7468 6520 ne color of the │ │ │ │ │ +0000ca30: 6369 7263 6c65 732e 0a0a 1f0a 4669 6c65 circles.....File │ │ │ │ │ +0000ca40: 3a20 736b 6574 6368 2e69 6e66 6f2c 2020 : sketch.info, │ │ │ │ │ +0000ca50: 4e6f 6465 3a20 5469 6b5a 2f50 4746 2075 Node: TikZ/PGF u │ │ │ │ │ +0000ca60: 7365 722d 6465 6669 6e65 6420 7374 796c ser-defined styl │ │ │ │ │ +0000ca70: 6573 2c20 204e 6578 743a 2054 7261 6e73 es, Next: Trans │ │ │ │ │ +0000ca80: 7061 7265 6e63 792c 2020 5072 6576 3a20 parency, Prev: │ │ │ │ │ +0000ca90: 446f 7473 2069 6e20 5469 6b5a 2f50 4746 Dots in TikZ/PGF │ │ │ │ │ +0000caa0: 2c20 2055 703a 204f 7074 696f 6e73 0a0a , Up: Options.. │ │ │ │ │ +0000cab0: 332e 312e 352e 3420 e280 9854 696b 5a2f 3.1.5.4 ...TikZ/ │ │ │ │ │ +0000cac0: 5047 46e2 8099 2075 7365 722d 6465 6669 PGF... user-defi │ │ │ │ │ +0000cad0: 6e65 6420 7374 796c 6573 0a2e 2e2e 2e2e ned styles...... │ │ │ │ │ 0000cae0: 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e ................ │ │ │ │ │ -0000caf0: 2e2e 2e2e 2e2e 2e2e 2e2e 2e0a 0ae2 8098 ................ │ │ │ │ │ -0000cb00: 5469 6b5a 2f50 4746 e280 9920 616c 6c6f TikZ/PGF... allo │ │ │ │ │ -0000cb10: 7773 206e 616d 6564 2073 7479 6c65 7320 ws named styles │ │ │ │ │ -0000cb20: 6465 6669 6e65 6420 6279 2074 6865 2075 defined by the u │ │ │ │ │ -0000cb30: 7365 722c 2066 6f72 2065 7861 6d70 6c65 ser, for example │ │ │ │ │ -0000cb40: 0a20 205c 7469 6b7a 7374 796c 657b 6d79 . \tikzstyle{my │ │ │ │ │ -0000cb50: 706f 6c79 676f 6e73 7479 6c65 7d20 3d20 polygonstyle} = │ │ │ │ │ -0000cb60: 5b66 696c 6c3d 626c 7565 2132 302c 6669 [fill=blue!20,fi │ │ │ │ │ -0000cb70: 6c6c 206f 7061 6369 7479 3d30 2e38 5d20 ll opacity=0.8] │ │ │ │ │ -0000cb80: 200a 2020 5c74 696b 7a73 7479 6c65 7b6d . \tikzstyle{m │ │ │ │ │ -0000cb90: 796c 696e 6573 7479 6c65 7d20 3d20 5b72 ylinestyle} = [r │ │ │ │ │ -0000cba0: 6564 2132 302c 6461 7368 6564 5d0a 5369 ed!20,dashed].Si │ │ │ │ │ -0000cbb0: 6e63 6520 e280 9873 6b65 7463 68e2 8099 nce ...sketch... │ │ │ │ │ -0000cbc0: 2068 6173 206e 6f20 696e 666f 726d 6174 has no informat │ │ │ │ │ -0000cbd0: 696f 6e20 6f6e 2074 6865 2063 6f6e 7465 ion on the conte │ │ │ │ │ -0000cbe0: 6e74 7320 6f66 2073 7563 6820 7374 796c nts of such styl │ │ │ │ │ -0000cbf0: 6573 2c20 6974 0a6f 6d69 7473 2074 6865 es, it.omits the │ │ │ │ │ -0000cc00: 6d20 656e 7469 7265 6c79 2066 726f 6d20 m entirely from │ │ │ │ │ -0000cc10: 6c69 6e65 732c 2070 6f6c 7967 6f6e 732c lines, polygons, │ │ │ │ │ -0000cc20: 2061 6e64 2074 6865 6972 2065 6467 6573 and their edges │ │ │ │ │ -0000cc30: 2064 7572 696e 6720 6f70 7469 6f6e 0a73 during option.s │ │ │ │ │ -0000cc40: 706c 6974 7469 6e67 2e20 2046 6f72 2065 plitting. For e │ │ │ │ │ -0000cc50: 7861 6d70 6c65 2c0a 2020 706f 6c79 676f xample,. polygo │ │ │ │ │ -0000cc60: 6e5b 7374 796c 653d 6d79 706f 6c79 676f n[style=mypolygo │ │ │ │ │ -0000cc70: 6e73 7479 6c65 2c73 7479 6c65 3d74 6869 nstyle,style=thi │ │ │ │ │ -0000cc80: 636b 5d28 302c 302c 3129 2831 2c30 2c30 ck](0,0,1)(1,0,0 │ │ │ │ │ -0000cc90: 2928 302c 312c 3029 0a20 206c 696e 655b )(0,1,0). line[ │ │ │ │ │ -0000cca0: 7374 796c 653d 6d79 6c69 6e65 7374 796c style=mylinestyl │ │ │ │ │ -0000ccb0: 655d 282d 312c 2d31 2c2d 3129 2832 2c32 e](-1,-1,-1)(2,2 │ │ │ │ │ -0000ccc0: 2c32 290a 7072 6f64 7563 6573 2074 6865 ,2).produces the │ │ │ │ │ -0000ccd0: 20e2 8098 5469 6b5a e280 9920 6f75 7470 ...TikZ... outp │ │ │ │ │ -0000cce0: 7574 0a20 205c 6472 6177 282d 312c 2d31 ut. \draw(-1,-1 │ │ │ │ │ -0000ccf0: 292d 2d28 2e33 3333 2c2e 3333 3329 3b0a )--(.333,.333);. │ │ │ │ │ -0000cd00: 2020 5c66 696c 6c64 7261 775b 7468 6963 \filldraw[thic │ │ │ │ │ -0000cd10: 6b2c 6669 6c6c 3d77 6869 7465 5d28 302c k,fill=white](0, │ │ │ │ │ -0000cd20: 3029 2d2d 2831 2c30 292d 2d28 302c 3129 0)--(1,0)--(0,1) │ │ │ │ │ -0000cd30: 2d2d 6379 636c 653b 0a20 205c 6472 6177 --cycle;. \draw │ │ │ │ │ -0000cd40: 282e 3333 332c 2e33 3333 292d 2d28 322c (.333,.333)--(2, │ │ │ │ │ -0000cd50: 3229 3b0a 4e6f 7465 2074 6861 7420 7468 2);.Note that th │ │ │ │ │ -0000cd60: 6520 7573 6572 2d64 6566 696e 6564 2073 e user-defined s │ │ │ │ │ -0000cd70: 7479 6c65 7320 6172 6520 6e6f 7420 7072 tyles are not pr │ │ │ │ │ -0000cd80: 6573 656e 742e 2020 536b 6574 6368 2061 esent. Sketch a │ │ │ │ │ -0000cd90: 6c73 6f20 6973 7375 6573 0a77 6172 6e69 lso issues.warni │ │ │ │ │ -0000cda0: 6e67 733a 0a20 2077 6172 6e69 6e67 2c20 ngs:. warning, │ │ │ │ │ -0000cdb0: 756e 6b6e 6f77 6e20 706f 6c79 676f 6e20 unknown polygon │ │ │ │ │ -0000cdc0: 6f70 7469 6f6e 2073 7479 6c65 3d6d 7970 option style=myp │ │ │ │ │ -0000cdd0: 6f6c 7967 6f6e 7374 796c 6520 7769 6c6c olygonstyle will │ │ │ │ │ -0000cde0: 2062 6520 6967 6e6f 7265 640a 2020 7761 be ignored. wa │ │ │ │ │ -0000cdf0: 726e 696e 672c 2075 6e6b 6e6f 776e 206c rning, unknown l │ │ │ │ │ -0000ce00: 696e 6520 6f70 7469 6f6e 2073 7479 6c65 ine option style │ │ │ │ │ -0000ce10: 3d6d 796c 696e 6573 7479 6c65 2077 696c =mylinestyle wil │ │ │ │ │ -0000ce20: 6c20 6265 2069 676e 6f72 6564 0a0a 2020 l be ignored.. │ │ │ │ │ -0000ce30: 2054 6865 2072 656d 6564 7920 6973 2074 The remedy is t │ │ │ │ │ -0000ce40: 6f20 7374 6174 6520 6578 706c 6963 6974 o state explicit │ │ │ │ │ -0000ce50: 6c79 2077 6865 7468 6572 2061 2075 7365 ly whether a use │ │ │ │ │ -0000ce60: 722d 6465 6669 6e65 6420 7374 796c 6520 r-defined style │ │ │ │ │ -0000ce70: 7368 6f75 6c64 0a62 6520 6174 7463 6865 should.be attche │ │ │ │ │ -0000ce80: 6420 746f 2070 6f6c 7967 6f6e 7320 6f72 d to polygons or │ │ │ │ │ -0000ce90: 206c 696e 6573 2069 6e20 7468 6520 e280 lines in the .. │ │ │ │ │ -0000cea0: 9854 696b 5ae2 8099 206f 7574 7075 7420 .TikZ... output │ │ │ │ │ -0000ceb0: 7573 696e 670a 5f70 7365 7564 6f2d 6f70 using._pseudo-op │ │ │ │ │ -0000cec0: 7469 6f6e 735f 20e2 8098 6669 6c6c 2073 tions_ ...fill s │ │ │ │ │ -0000ced0: 7479 6c65 e280 9920 616e 6420 e280 986c tyle... and ...l │ │ │ │ │ -0000cee0: 696e 6520 7374 796c 65e2 8099 2c0a 2020 ine style...,. │ │ │ │ │ -0000cef0: 706f 6c79 676f 6e5b 6669 6c6c 2073 7479 polygon[fill sty │ │ │ │ │ -0000cf00: 6c65 3d6d 7970 6f6c 7967 6f6e 7374 796c le=mypolygonstyl │ │ │ │ │ -0000cf10: 652c 7374 796c 653d 7468 6963 6b5d 2830 e,style=thick](0 │ │ │ │ │ -0000cf20: 2c30 2c31 2928 312c 302c 3029 2830 2c31 ,0,1)(1,0,0)(0,1 │ │ │ │ │ -0000cf30: 2c30 290a 2020 6c69 6e65 5b6c 696e 6520 ,0). line[line │ │ │ │ │ -0000cf40: 7374 796c 653d 6d79 6c69 6e65 7374 796c style=mylinestyl │ │ │ │ │ -0000cf50: 655d 282d 312c 2d31 2c2d 3129 2832 2c32 e](-1,-1,-1)(2,2 │ │ │ │ │ -0000cf60: 2c32 290a 4e6f 772c 2074 6865 206f 7574 ,2).Now, the out │ │ │ │ │ -0000cf70: 7075 7420 6973 0a20 205c 6472 6177 5b6d put is. \draw[m │ │ │ │ │ -0000cf80: 796c 696e 6573 7479 6c65 5d28 2d31 2c2d ylinestyle](-1,- │ │ │ │ │ -0000cf90: 3129 2d2d 282e 3333 332c 2e33 3333 293b 1)--(.333,.333); │ │ │ │ │ -0000cfa0: 0a20 205c 6669 6c6c 6472 6177 5b6d 7970 . \filldraw[myp │ │ │ │ │ -0000cfb0: 6f6c 7967 6f6e 7374 796c 652c 7468 6963 olygonstyle,thic │ │ │ │ │ -0000cfc0: 6b5d 2830 2c30 292d 2d28 312c 3029 2d2d k](0,0)--(1,0)-- │ │ │ │ │ -0000cfd0: 2830 2c31 292d 2d63 7963 6c65 3b0a 2020 (0,1)--cycle;. │ │ │ │ │ -0000cfe0: 5c64 7261 775b 6d79 6c69 6e65 7374 796c \draw[mylinestyl │ │ │ │ │ -0000cff0: 655d 282e 3333 332c 2e33 3333 292d 2d28 e](.333,.333)--( │ │ │ │ │ -0000d000: 322c 3229 3b0a 0a20 2020 4120 7573 6566 2,2);.. A usef │ │ │ │ │ -0000d010: 756c 2074 6563 686e 6971 7565 2069 7320 ul technique is │ │ │ │ │ -0000d020: 746f 2069 6e63 6c75 6465 2075 7365 722d to include user- │ │ │ │ │ -0000d030: 6465 6669 6e65 6420 7374 796c 6520 6465 defined style de │ │ │ │ │ -0000d040: 6669 6e69 7469 6f6e 7320 696e 0ae2 8098 finitions in.... │ │ │ │ │ -0000d050: 736b 6574 6368 e280 9920 636f 6465 2061 sketch... code a │ │ │ │ │ -0000d060: 7320 e280 9873 7065 6369 616c e280 9973 s ...special...s │ │ │ │ │ -0000d070: 2077 6974 6820 6f70 7469 6f6e 20e2 8098 with option ... │ │ │ │ │ -0000d080: 5b6c 6179 3d75 6e64 6572 5de2 8099 2074 [lay=under]... t │ │ │ │ │ -0000d090: 6f20 656e 7375 7265 2074 6861 7420 7468 o ensure that th │ │ │ │ │ -0000d0a0: 650a 7374 796c 6573 2061 7265 2065 6d69 e.styles are emi │ │ │ │ │ -0000d0b0: 7474 6564 2066 6972 7374 2069 6e20 7468 tted first in th │ │ │ │ │ -0000d0c0: 6520 6f75 7470 7574 2c20 6265 666f 7265 e output, before │ │ │ │ │ -0000d0d0: 2061 6e79 2075 7365 7320 6f66 2074 6865 any uses of the │ │ │ │ │ -0000d0e0: 2073 7479 6c65 0a6e 616d 6573 2e20 2028 style.names. ( │ │ │ │ │ -0000d0f0: 3129 2020 466f 7220 6578 616d 706c 652c 1) For example, │ │ │ │ │ -0000d100: 0a20 2073 7065 6369 616c 7c5c 7469 6b7a . special|\tikz │ │ │ │ │ -0000d110: 7374 796c 657b 6d79 706f 6c79 676f 6e73 style{mypolygons │ │ │ │ │ -0000d120: 7479 6c65 7d20 3d20 5b66 696c 6c3d 626c tyle} = [fill=bl │ │ │ │ │ -0000d130: 7565 2132 302c 6669 6c6c 206f 7061 6369 ue!20,fill opaci │ │ │ │ │ -0000d140: 7479 3d30 2e38 5d7c 5b6c 6179 3d75 6e64 ty=0.8]|[lay=und │ │ │ │ │ -0000d150: 6572 5d0a 2020 7370 6563 6961 6c7c 5c74 er]. special|\t │ │ │ │ │ -0000d160: 696b 7a73 7479 6c65 7b6d 796c 696e 6573 ikzstyle{mylines │ │ │ │ │ -0000d170: 7479 6c65 7d20 3d20 5b72 6564 2132 302c tyle} = [red!20, │ │ │ │ │ -0000d180: 6461 7368 6564 5d7c 5b6c 6179 3d75 6e64 dashed]|[lay=und │ │ │ │ │ -0000d190: 6572 5d0a 5468 6520 6175 7468 6f72 2069 er].The author i │ │ │ │ │ -0000d1a0: 7320 7265 7370 6f6e 7369 626c 6520 666f s responsible fo │ │ │ │ │ -0000d1b0: 7220 7573 696e 6720 7468 6520 6b65 792c r using the key, │ │ │ │ │ -0000d1c0: 20e2 8098 6c69 6e65 2073 7479 6c65 e280 ...line style.. │ │ │ │ │ -0000d1d0: 9920 6f72 20e2 8098 6669 6c6c 0a73 7479 . or ...fill.sty │ │ │ │ │ -0000d1e0: 6c65 e280 992c 2074 6861 7420 6d61 7463 le..., that matc │ │ │ │ │ -0000d1f0: 6865 7320 7468 6520 636f 6e74 656e 7420 hes the content │ │ │ │ │ -0000d200: 6f66 2074 6865 2073 7479 6c65 2064 6566 of the style def │ │ │ │ │ -0000d210: 696e 6974 696f 6e2e 0a0a 2020 202d 2d2d inition... --- │ │ │ │ │ -0000d220: 2d2d 2d2d 2d2d 2d20 466f 6f74 6e6f 7465 ------- Footnote │ │ │ │ │ -0000d230: 7320 2d2d 2d2d 2d2d 2d2d 2d2d 0a0a 2020 s ----------.. │ │ │ │ │ -0000d240: 2028 3129 2054 6869 7320 636c 6576 6572 (1) This clever │ │ │ │ │ -0000d250: 2074 7269 636b 2069 7320 6475 6520 746f trick is due to │ │ │ │ │ -0000d260: 204b 6a65 6c6c 204d 6167 6e65 2046 6175 Kjell Magne Fau │ │ │ │ │ -0000d270: 736b 652e 0a0a 1f0a 4669 6c65 3a20 736b ske.....File: sk │ │ │ │ │ -0000d280: 6574 6368 2e69 6e66 6f2c 2020 4e6f 6465 etch.info, Node │ │ │ │ │ -0000d290: 3a20 5472 616e 7370 6172 656e 6379 2c20 : Transparency, │ │ │ │ │ -0000d2a0: 204e 6578 743a 2049 6e74 6572 6e61 6c20 Next: Internal │ │ │ │ │ -0000d2b0: 6f70 7469 6f6e 732c 2020 5072 6576 3a20 options, Prev: │ │ │ │ │ -0000d2c0: 5469 6b5a 2f50 4746 2075 7365 722d 6465 TikZ/PGF user-de │ │ │ │ │ -0000d2d0: 6669 6e65 6420 7374 796c 6573 2c20 2055 fined styles, U │ │ │ │ │ -0000d2e0: 703a 204f 7074 696f 6e73 0a0a 332e 312e p: Options..3.1. │ │ │ │ │ -0000d2f0: 352e 3520 5472 616e 7370 6172 656e 6379 5.5 Transparency │ │ │ │ │ -0000d300: 0a2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e ................ │ │ │ │ │ -0000d310: 2e2e 2e2e 2e0a 0a42 6f74 6820 e280 9850 .......Both ...P │ │ │ │ │ -0000d320: 5354 7269 636b 73e2 8099 2061 6e64 20e2 STricks... and . │ │ │ │ │ -0000d330: 8098 5469 6b5a 2f50 4746 e280 9920 7375 ..TikZ/PGF... su │ │ │ │ │ -0000d340: 7070 6f72 7420 706f 6c79 676f 6e20 6f70 pport polygon op │ │ │ │ │ -0000d350: 7469 6f6e 7320 7468 6174 2068 6176 6520 tions that have │ │ │ │ │ -0000d360: 7468 650a 6566 6665 6374 206f 6620 6d61 the.effect of ma │ │ │ │ │ -0000d370: 6b69 6e67 2074 6865 2070 6f6c 7967 6f6e king the polygon │ │ │ │ │ -0000d380: 2061 7070 6561 7220 7472 616e 7370 6172 appear transpar │ │ │ │ │ -0000d390: 656e 742e 2020 466f 7220 e280 9850 5354 ent. For ...PST │ │ │ │ │ -0000d3a0: 7269 636b 73e2 8099 2c0a 6b65 7977 6f72 ricks...,.keywor │ │ │ │ │ -0000d3b0: 6420 e280 9874 7261 6e73 7061 6c70 6861 d ...transpalpha │ │ │ │ │ -0000d3c0: e280 9920 7761 7320 7573 6564 2064 7572 ... was used dur │ │ │ │ │ -0000d3d0: 696e 6720 696e 6974 6961 6c20 6465 7665 ing initial deve │ │ │ │ │ -0000d3e0: 6c6f 706d 656e 7420 6f66 0a74 7261 6e73 lopment of.trans │ │ │ │ │ -0000d3f0: 7061 7265 6e63 7920 6665 6174 7572 6573 parency features │ │ │ │ │ -0000d400: 2c20 616e 6420 e280 986f 7061 6369 7479 , and ...opacity │ │ │ │ │ -0000d410: e280 9920 7761 7320 6164 6f70 7465 6420 ... was adopted │ │ │ │ │ -0000d420: 6c61 7465 722e 2020 e280 9853 6b65 7463 later. ...Sketc │ │ │ │ │ -0000d430: 68e2 8099 2068 6f6e 6f72 730a 626f 7468 h... honors.both │ │ │ │ │ -0000d440: 2e20 20e2 8098 5469 6b5a 2f50 4746 e280 . ...TikZ/PGF.. │ │ │ │ │ -0000d450: 9920 7573 6573 20e2 8098 6f70 6163 6974 . uses ...opacit │ │ │ │ │ -0000d460: 79e2 8099 206f 6e6c 792e 2020 5768 656e y... only. When │ │ │ │ │ -0000d470: 2074 7261 6e73 7061 7265 6e74 2070 6f6c transparent pol │ │ │ │ │ -0000d480: 7967 6f6e 7320 6172 6520 696e 0a74 6865 ygons are in.the │ │ │ │ │ -0000d490: 2066 6f72 6567 726f 756e 642c 206f 626a foreground, obj │ │ │ │ │ -0000d4a0: 6563 7473 2062 6568 696e 6420 7468 656d ects behind them │ │ │ │ │ -0000d4b0: 2028 6472 6177 6e20 6561 726c 6965 7229 (drawn earlier) │ │ │ │ │ -0000d4c0: 2061 7265 2076 6973 6962 6c65 2077 6974 are visible wit │ │ │ │ │ -0000d4d0: 680a 636f 6c6f 7220 7375 6264 7565 6420 h.color subdued │ │ │ │ │ -0000d4e0: 616e 6420 7469 6e74 6564 2e20 2054 6865 and tinted. The │ │ │ │ │ -0000d4f0: 2068 6964 6465 6e20 7375 7266 6163 6520 hidden surface │ │ │ │ │ -0000d500: 616c 676f 7269 7468 6d20 6f66 20e2 8098 algorithm of ... │ │ │ │ │ -0000d510: 736b 6574 6368 e280 990a 776f 726b 7320 sketch....works │ │ │ │ │ -0000d520: 7765 6c6c 2077 6974 6820 7375 6368 2074 well with such t │ │ │ │ │ -0000d530: 7261 6e73 7061 7265 6e74 2070 6f6c 7967 ransparent polyg │ │ │ │ │ -0000d540: 6f6e 732e 0a0a 2020 204e 6f74 6520 7468 ons... Note th │ │ │ │ │ -0000d550: 6174 2063 756c 6c3d 6661 6c73 6520 6d75 at cull=false mu │ │ │ │ │ -0000d560: 7374 2062 6520 7573 6564 2066 6f72 2072 st be used for r │ │ │ │ │ -0000d570: 6561 722d 6661 6369 6e67 2070 6f6c 7967 ear-facing polyg │ │ │ │ │ -0000d580: 6f6e 7320 746f 2062 650a 7669 7369 626c ons to be.visibl │ │ │ │ │ -0000d590: 6520 7768 656e 2070 6f73 6974 696f 6e65 e when positione │ │ │ │ │ -0000d5a0: 6420 6265 6869 6e64 206f 7468 6572 2074 d behind other t │ │ │ │ │ -0000d5b0: 7261 6e73 7061 7265 6e74 2073 7572 6661 ransparent surfa │ │ │ │ │ -0000d5c0: 6365 732e 0a0a 1f0a 4669 6c65 3a20 736b ces.....File: sk │ │ │ │ │ -0000d5d0: 6574 6368 2e69 6e66 6f2c 2020 4e6f 6465 etch.info, Node │ │ │ │ │ -0000d5e0: 3a20 496e 7465 726e 616c 206f 7074 696f : Internal optio │ │ │ │ │ -0000d5f0: 6e73 2c20 2050 7265 763a 2054 7261 6e73 ns, Prev: Trans │ │ │ │ │ -0000d600: 7061 7265 6e63 792c 2020 5570 3a20 4f70 parency, Up: Op │ │ │ │ │ -0000d610: 7469 6f6e 730a 0a33 2e31 2e35 2e36 2049 tions..3.1.5.6 I │ │ │ │ │ -0000d620: 6e74 6572 6e61 6c20 6f70 7469 6f6e 730a nternal options. │ │ │ │ │ -0000d630: 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e ................ │ │ │ │ │ -0000d640: 2e2e 2e2e 2e2e 2e2e 0a0a 5468 6572 6520 ..........There │ │ │ │ │ -0000d650: 6172 6520 616c 736f 205f 696e 7465 726e are also _intern │ │ │ │ │ -0000d660: 616c 5f20 6f70 7469 6f6e 7320 7573 6564 al_ options used │ │ │ │ │ -0000d670: 206f 6e6c 7920 6279 20e2 8098 736b 6574 only by ...sket │ │ │ │ │ -0000d680: 6368 e280 9920 616e 6420 6e6f 7420 7061 ch... and not pa │ │ │ │ │ -0000d690: 7373 6564 0a6f 6e20 746f 20e2 8098 5053 ssed.on to ...PS │ │ │ │ │ -0000d6a0: 5472 6963 6b73 e280 992e 2020 5468 6573 Tricks.... Thes │ │ │ │ │ -0000d6b0: 6520 6172 6520 7375 6d6d 6172 697a 6564 e are summarized │ │ │ │ │ -0000d6c0: 2069 6e20 7468 6520 666f 6c6c 6f77 696e in the followin │ │ │ │ │ -0000d6d0: 6720 7461 626c 652e 0a4b 6579 2020 2020 g table..Key │ │ │ │ │ -0000d6e0: 2020 2050 6f73 7369 626c 6520 7661 6c75 Possible valu │ │ │ │ │ -0000d6f0: 6573 2020 2020 2020 2020 2044 6573 6372 es Descr │ │ │ │ │ -0000d700: 6970 7469 6f6e 0a2d 2d2d 2d2d 2d2d 2d2d iption.--------- │ │ │ │ │ +0000caf0: 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e ................ │ │ │ │ │ +0000cb00: 2e0a 0ae2 8098 5469 6b5a 2f50 4746 e280 ......TikZ/PGF.. │ │ │ │ │ +0000cb10: 9920 616c 6c6f 7773 206e 616d 6564 2073 . allows named s │ │ │ │ │ +0000cb20: 7479 6c65 7320 6465 6669 6e65 6420 6279 tyles defined by │ │ │ │ │ +0000cb30: 2074 6865 2075 7365 722c 2066 6f72 2065 the user, for e │ │ │ │ │ +0000cb40: 7861 6d70 6c65 0a20 205c 7469 6b7a 7374 xample. \tikzst │ │ │ │ │ +0000cb50: 796c 657b 6d79 706f 6c79 676f 6e73 7479 yle{mypolygonsty │ │ │ │ │ +0000cb60: 6c65 7d20 3d20 5b66 696c 6c3d 626c 7565 le} = [fill=blue │ │ │ │ │ +0000cb70: 2132 302c 6669 6c6c 206f 7061 6369 7479 !20,fill opacity │ │ │ │ │ +0000cb80: 3d30 2e38 5d20 200a 2020 5c74 696b 7a73 =0.8] . \tikzs │ │ │ │ │ +0000cb90: 7479 6c65 7b6d 796c 696e 6573 7479 6c65 tyle{mylinestyle │ │ │ │ │ +0000cba0: 7d20 3d20 5b72 6564 2132 302c 6461 7368 } = [red!20,dash │ │ │ │ │ +0000cbb0: 6564 5d0a 5369 6e63 6520 e280 9873 6b65 ed].Since ...ske │ │ │ │ │ +0000cbc0: 7463 68e2 8099 2068 6173 206e 6f20 696e tch... has no in │ │ │ │ │ +0000cbd0: 666f 726d 6174 696f 6e20 6f6e 2074 6865 formation on the │ │ │ │ │ +0000cbe0: 2063 6f6e 7465 6e74 7320 6f66 2073 7563 contents of suc │ │ │ │ │ +0000cbf0: 6820 7374 796c 6573 2c20 6974 0a6f 6d69 h styles, it.omi │ │ │ │ │ +0000cc00: 7473 2074 6865 6d20 656e 7469 7265 6c79 ts them entirely │ │ │ │ │ +0000cc10: 2066 726f 6d20 6c69 6e65 732c 2070 6f6c from lines, pol │ │ │ │ │ +0000cc20: 7967 6f6e 732c 2061 6e64 2074 6865 6972 ygons, and their │ │ │ │ │ +0000cc30: 2065 6467 6573 2064 7572 696e 6720 6f70 edges during op │ │ │ │ │ +0000cc40: 7469 6f6e 0a73 706c 6974 7469 6e67 2e20 tion.splitting. │ │ │ │ │ +0000cc50: 2046 6f72 2065 7861 6d70 6c65 2c0a 2020 For example,. │ │ │ │ │ +0000cc60: 706f 6c79 676f 6e5b 7374 796c 653d 6d79 polygon[style=my │ │ │ │ │ +0000cc70: 706f 6c79 676f 6e73 7479 6c65 2c73 7479 polygonstyle,sty │ │ │ │ │ +0000cc80: 6c65 3d74 6869 636b 5d28 302c 302c 3129 le=thick](0,0,1) │ │ │ │ │ +0000cc90: 2831 2c30 2c30 2928 302c 312c 3029 0a20 (1,0,0)(0,1,0). │ │ │ │ │ +0000cca0: 206c 696e 655b 7374 796c 653d 6d79 6c69 line[style=myli │ │ │ │ │ +0000ccb0: 6e65 7374 796c 655d 282d 312c 2d31 2c2d nestyle](-1,-1,- │ │ │ │ │ +0000ccc0: 3129 2832 2c32 2c32 290a 7072 6f64 7563 1)(2,2,2).produc │ │ │ │ │ +0000ccd0: 6573 2074 6865 20e2 8098 5469 6b5a e280 es the ...TikZ.. │ │ │ │ │ +0000cce0: 9920 6f75 7470 7574 0a20 205c 6472 6177 . output. \draw │ │ │ │ │ +0000ccf0: 282d 312c 2d31 292d 2d28 2e33 3333 2c2e (-1,-1)--(.333,. │ │ │ │ │ +0000cd00: 3333 3329 3b0a 2020 5c66 696c 6c64 7261 333);. \filldra │ │ │ │ │ +0000cd10: 775b 7468 6963 6b2c 6669 6c6c 3d77 6869 w[thick,fill=whi │ │ │ │ │ +0000cd20: 7465 5d28 302c 3029 2d2d 2831 2c30 292d te](0,0)--(1,0)- │ │ │ │ │ +0000cd30: 2d28 302c 3129 2d2d 6379 636c 653b 0a20 -(0,1)--cycle;. │ │ │ │ │ +0000cd40: 205c 6472 6177 282e 3333 332c 2e33 3333 \draw(.333,.333 │ │ │ │ │ +0000cd50: 292d 2d28 322c 3229 3b0a 4e6f 7465 2074 )--(2,2);.Note t │ │ │ │ │ +0000cd60: 6861 7420 7468 6520 7573 6572 2d64 6566 hat the user-def │ │ │ │ │ +0000cd70: 696e 6564 2073 7479 6c65 7320 6172 6520 ined styles are │ │ │ │ │ +0000cd80: 6e6f 7420 7072 6573 656e 742e 2020 536b not present. Sk │ │ │ │ │ +0000cd90: 6574 6368 2061 6c73 6f20 6973 7375 6573 etch also issues │ │ │ │ │ +0000cda0: 0a77 6172 6e69 6e67 733a 0a20 2077 6172 .warnings:. war │ │ │ │ │ +0000cdb0: 6e69 6e67 2c20 756e 6b6e 6f77 6e20 706f ning, unknown po │ │ │ │ │ +0000cdc0: 6c79 676f 6e20 6f70 7469 6f6e 2073 7479 lygon option sty │ │ │ │ │ +0000cdd0: 6c65 3d6d 7970 6f6c 7967 6f6e 7374 796c le=mypolygonstyl │ │ │ │ │ +0000cde0: 6520 7769 6c6c 2062 6520 6967 6e6f 7265 e will be ignore │ │ │ │ │ +0000cdf0: 640a 2020 7761 726e 696e 672c 2075 6e6b d. warning, unk │ │ │ │ │ +0000ce00: 6e6f 776e 206c 696e 6520 6f70 7469 6f6e nown line option │ │ │ │ │ +0000ce10: 2073 7479 6c65 3d6d 796c 696e 6573 7479 style=mylinesty │ │ │ │ │ +0000ce20: 6c65 2077 696c 6c20 6265 2069 676e 6f72 le will be ignor │ │ │ │ │ +0000ce30: 6564 0a0a 2020 2054 6865 2072 656d 6564 ed.. The remed │ │ │ │ │ +0000ce40: 7920 6973 2074 6f20 7374 6174 6520 6578 y is to state ex │ │ │ │ │ +0000ce50: 706c 6963 6974 6c79 2077 6865 7468 6572 plicitly whether │ │ │ │ │ +0000ce60: 2061 2075 7365 722d 6465 6669 6e65 6420 a user-defined │ │ │ │ │ +0000ce70: 7374 796c 6520 7368 6f75 6c64 0a62 6520 style should.be │ │ │ │ │ +0000ce80: 6174 7463 6865 6420 746f 2070 6f6c 7967 attched to polyg │ │ │ │ │ +0000ce90: 6f6e 7320 6f72 206c 696e 6573 2069 6e20 ons or lines in │ │ │ │ │ +0000cea0: 7468 6520 e280 9854 696b 5ae2 8099 206f the ...TikZ... o │ │ │ │ │ +0000ceb0: 7574 7075 7420 7573 696e 670a 5f70 7365 utput using._pse │ │ │ │ │ +0000cec0: 7564 6f2d 6f70 7469 6f6e 735f 20e2 8098 udo-options_ ... │ │ │ │ │ +0000ced0: 6669 6c6c 2073 7479 6c65 e280 9920 616e fill style... an │ │ │ │ │ +0000cee0: 6420 e280 986c 696e 6520 7374 796c 65e2 d ...line style. │ │ │ │ │ +0000cef0: 8099 2c0a 2020 706f 6c79 676f 6e5b 6669 ..,. polygon[fi │ │ │ │ │ +0000cf00: 6c6c 2073 7479 6c65 3d6d 7970 6f6c 7967 ll style=mypolyg │ │ │ │ │ +0000cf10: 6f6e 7374 796c 652c 7374 796c 653d 7468 onstyle,style=th │ │ │ │ │ +0000cf20: 6963 6b5d 2830 2c30 2c31 2928 312c 302c ick](0,0,1)(1,0, │ │ │ │ │ +0000cf30: 3029 2830 2c31 2c30 290a 2020 6c69 6e65 0)(0,1,0). line │ │ │ │ │ +0000cf40: 5b6c 696e 6520 7374 796c 653d 6d79 6c69 [line style=myli │ │ │ │ │ +0000cf50: 6e65 7374 796c 655d 282d 312c 2d31 2c2d nestyle](-1,-1,- │ │ │ │ │ +0000cf60: 3129 2832 2c32 2c32 290a 4e6f 772c 2074 1)(2,2,2).Now, t │ │ │ │ │ +0000cf70: 6865 206f 7574 7075 7420 6973 0a20 205c he output is. \ │ │ │ │ │ +0000cf80: 6472 6177 5b6d 796c 696e 6573 7479 6c65 draw[mylinestyle │ │ │ │ │ +0000cf90: 5d28 2d31 2c2d 3129 2d2d 282e 3333 332c ](-1,-1)--(.333, │ │ │ │ │ +0000cfa0: 2e33 3333 293b 0a20 205c 6669 6c6c 6472 .333);. \filldr │ │ │ │ │ +0000cfb0: 6177 5b6d 7970 6f6c 7967 6f6e 7374 796c aw[mypolygonstyl │ │ │ │ │ +0000cfc0: 652c 7468 6963 6b5d 2830 2c30 292d 2d28 e,thick](0,0)--( │ │ │ │ │ +0000cfd0: 312c 3029 2d2d 2830 2c31 292d 2d63 7963 1,0)--(0,1)--cyc │ │ │ │ │ +0000cfe0: 6c65 3b0a 2020 5c64 7261 775b 6d79 6c69 le;. \draw[myli │ │ │ │ │ +0000cff0: 6e65 7374 796c 655d 282e 3333 332c 2e33 nestyle](.333,.3 │ │ │ │ │ +0000d000: 3333 292d 2d28 322c 3229 3b0a 0a20 2020 33)--(2,2);.. │ │ │ │ │ +0000d010: 4120 7573 6566 756c 2074 6563 686e 6971 A useful techniq │ │ │ │ │ +0000d020: 7565 2069 7320 746f 2069 6e63 6c75 6465 ue is to include │ │ │ │ │ +0000d030: 2075 7365 722d 6465 6669 6e65 6420 7374 user-defined st │ │ │ │ │ +0000d040: 796c 6520 6465 6669 6e69 7469 6f6e 7320 yle definitions │ │ │ │ │ +0000d050: 696e 0ae2 8098 736b 6574 6368 e280 9920 in....sketch... │ │ │ │ │ +0000d060: 636f 6465 2061 7320 e280 9873 7065 6369 code as ...speci │ │ │ │ │ +0000d070: 616c e280 9973 2077 6974 6820 6f70 7469 al...s with opti │ │ │ │ │ +0000d080: 6f6e 20e2 8098 5b6c 6179 3d75 6e64 6572 on ...[lay=under │ │ │ │ │ +0000d090: 5de2 8099 2074 6f20 656e 7375 7265 2074 ]... to ensure t │ │ │ │ │ +0000d0a0: 6861 7420 7468 650a 7374 796c 6573 2061 hat the.styles a │ │ │ │ │ +0000d0b0: 7265 2065 6d69 7474 6564 2066 6972 7374 re emitted first │ │ │ │ │ +0000d0c0: 2069 6e20 7468 6520 6f75 7470 7574 2c20 in the output, │ │ │ │ │ +0000d0d0: 6265 666f 7265 2061 6e79 2075 7365 7320 before any uses │ │ │ │ │ +0000d0e0: 6f66 2074 6865 2073 7479 6c65 0a6e 616d of the style.nam │ │ │ │ │ +0000d0f0: 6573 2e20 2028 3129 2020 466f 7220 6578 es. (1) For ex │ │ │ │ │ +0000d100: 616d 706c 652c 0a20 2073 7065 6369 616c ample,. special │ │ │ │ │ +0000d110: 7c5c 7469 6b7a 7374 796c 657b 6d79 706f |\tikzstyle{mypo │ │ │ │ │ +0000d120: 6c79 676f 6e73 7479 6c65 7d20 3d20 5b66 lygonstyle} = [f │ │ │ │ │ +0000d130: 696c 6c3d 626c 7565 2132 302c 6669 6c6c ill=blue!20,fill │ │ │ │ │ +0000d140: 206f 7061 6369 7479 3d30 2e38 5d7c 5b6c opacity=0.8]|[l │ │ │ │ │ +0000d150: 6179 3d75 6e64 6572 5d0a 2020 7370 6563 ay=under]. spec │ │ │ │ │ +0000d160: 6961 6c7c 5c74 696b 7a73 7479 6c65 7b6d ial|\tikzstyle{m │ │ │ │ │ +0000d170: 796c 696e 6573 7479 6c65 7d20 3d20 5b72 ylinestyle} = [r │ │ │ │ │ +0000d180: 6564 2132 302c 6461 7368 6564 5d7c 5b6c ed!20,dashed]|[l │ │ │ │ │ +0000d190: 6179 3d75 6e64 6572 5d0a 5468 6520 6175 ay=under].The au │ │ │ │ │ +0000d1a0: 7468 6f72 2069 7320 7265 7370 6f6e 7369 thor is responsi │ │ │ │ │ +0000d1b0: 626c 6520 666f 7220 7573 696e 6720 7468 ble for using th │ │ │ │ │ +0000d1c0: 6520 6b65 792c 20e2 8098 6c69 6e65 2073 e key, ...line s │ │ │ │ │ +0000d1d0: 7479 6c65 e280 9920 6f72 20e2 8098 6669 tyle... or ...fi │ │ │ │ │ +0000d1e0: 6c6c 0a73 7479 6c65 e280 992c 2074 6861 ll.style..., tha │ │ │ │ │ +0000d1f0: 7420 6d61 7463 6865 7320 7468 6520 636f t matches the co │ │ │ │ │ +0000d200: 6e74 656e 7420 6f66 2074 6865 2073 7479 ntent of the sty │ │ │ │ │ +0000d210: 6c65 2064 6566 696e 6974 696f 6e2e 0a0a le definition... │ │ │ │ │ +0000d220: 2020 202d 2d2d 2d2d 2d2d 2d2d 2d20 466f ---------- Fo │ │ │ │ │ +0000d230: 6f74 6e6f 7465 7320 2d2d 2d2d 2d2d 2d2d otnotes -------- │ │ │ │ │ +0000d240: 2d2d 0a0a 2020 2028 3129 2054 6869 7320 --.. (1) This │ │ │ │ │ +0000d250: 636c 6576 6572 2074 7269 636b 2069 7320 clever trick is │ │ │ │ │ +0000d260: 6475 6520 746f 204b 6a65 6c6c 204d 6167 due to Kjell Mag │ │ │ │ │ +0000d270: 6e65 2046 6175 736b 652e 0a0a 1f0a 4669 ne Fauske.....Fi │ │ │ │ │ +0000d280: 6c65 3a20 736b 6574 6368 2e69 6e66 6f2c le: sketch.info, │ │ │ │ │ +0000d290: 2020 4e6f 6465 3a20 5472 616e 7370 6172 Node: Transpar │ │ │ │ │ +0000d2a0: 656e 6379 2c20 204e 6578 743a 2049 6e74 ency, Next: Int │ │ │ │ │ +0000d2b0: 6572 6e61 6c20 6f70 7469 6f6e 732c 2020 ernal options, │ │ │ │ │ +0000d2c0: 5072 6576 3a20 5469 6b5a 2f50 4746 2075 Prev: TikZ/PGF u │ │ │ │ │ +0000d2d0: 7365 722d 6465 6669 6e65 6420 7374 796c ser-defined styl │ │ │ │ │ +0000d2e0: 6573 2c20 2055 703a 204f 7074 696f 6e73 es, Up: Options │ │ │ │ │ +0000d2f0: 0a0a 332e 312e 352e 3520 5472 616e 7370 ..3.1.5.5 Transp │ │ │ │ │ +0000d300: 6172 656e 6379 0a2e 2e2e 2e2e 2e2e 2e2e arency.......... │ │ │ │ │ +0000d310: 2e2e 2e2e 2e2e 2e2e 2e2e 2e0a 0a42 6f74 .............Bot │ │ │ │ │ +0000d320: 6820 e280 9850 5354 7269 636b 73e2 8099 h ...PSTricks... │ │ │ │ │ +0000d330: 2061 6e64 20e2 8098 5469 6b5a 2f50 4746 and ...TikZ/PGF │ │ │ │ │ +0000d340: e280 9920 7375 7070 6f72 7420 706f 6c79 ... support poly │ │ │ │ │ +0000d350: 676f 6e20 6f70 7469 6f6e 7320 7468 6174 gon options that │ │ │ │ │ +0000d360: 2068 6176 6520 7468 650a 6566 6665 6374 have the.effect │ │ │ │ │ +0000d370: 206f 6620 6d61 6b69 6e67 2074 6865 2070 of making the p │ │ │ │ │ +0000d380: 6f6c 7967 6f6e 2061 7070 6561 7220 7472 olygon appear tr │ │ │ │ │ +0000d390: 616e 7370 6172 656e 742e 2020 466f 7220 ansparent. For │ │ │ │ │ +0000d3a0: e280 9850 5354 7269 636b 73e2 8099 2c0a ...PSTricks...,. │ │ │ │ │ +0000d3b0: 6b65 7977 6f72 6420 e280 9874 7261 6e73 keyword ...trans │ │ │ │ │ +0000d3c0: 7061 6c70 6861 e280 9920 7761 7320 7573 palpha... was us │ │ │ │ │ +0000d3d0: 6564 2064 7572 696e 6720 696e 6974 6961 ed during initia │ │ │ │ │ +0000d3e0: 6c20 6465 7665 6c6f 706d 656e 7420 6f66 l development of │ │ │ │ │ +0000d3f0: 0a74 7261 6e73 7061 7265 6e63 7920 6665 .transparency fe │ │ │ │ │ +0000d400: 6174 7572 6573 2c20 616e 6420 e280 986f atures, and ...o │ │ │ │ │ +0000d410: 7061 6369 7479 e280 9920 7761 7320 6164 pacity... was ad │ │ │ │ │ +0000d420: 6f70 7465 6420 6c61 7465 722e 2020 e280 opted later. .. │ │ │ │ │ +0000d430: 9853 6b65 7463 68e2 8099 2068 6f6e 6f72 .Sketch... honor │ │ │ │ │ +0000d440: 730a 626f 7468 2e20 20e2 8098 5469 6b5a s.both. ...TikZ │ │ │ │ │ +0000d450: 2f50 4746 e280 9920 7573 6573 20e2 8098 /PGF... uses ... │ │ │ │ │ +0000d460: 6f70 6163 6974 79e2 8099 206f 6e6c 792e opacity... only. │ │ │ │ │ +0000d470: 2020 5768 656e 2074 7261 6e73 7061 7265 When transpare │ │ │ │ │ +0000d480: 6e74 2070 6f6c 7967 6f6e 7320 6172 6520 nt polygons are │ │ │ │ │ +0000d490: 696e 0a74 6865 2066 6f72 6567 726f 756e in.the foregroun │ │ │ │ │ +0000d4a0: 642c 206f 626a 6563 7473 2062 6568 696e d, objects behin │ │ │ │ │ +0000d4b0: 6420 7468 656d 2028 6472 6177 6e20 6561 d them (drawn ea │ │ │ │ │ +0000d4c0: 726c 6965 7229 2061 7265 2076 6973 6962 rlier) are visib │ │ │ │ │ +0000d4d0: 6c65 2077 6974 680a 636f 6c6f 7220 7375 le with.color su │ │ │ │ │ +0000d4e0: 6264 7565 6420 616e 6420 7469 6e74 6564 bdued and tinted │ │ │ │ │ +0000d4f0: 2e20 2054 6865 2068 6964 6465 6e20 7375 . The hidden su │ │ │ │ │ +0000d500: 7266 6163 6520 616c 676f 7269 7468 6d20 rface algorithm │ │ │ │ │ +0000d510: 6f66 20e2 8098 736b 6574 6368 e280 990a of ...sketch.... │ │ │ │ │ +0000d520: 776f 726b 7320 7765 6c6c 2077 6974 6820 works well with │ │ │ │ │ +0000d530: 7375 6368 2074 7261 6e73 7061 7265 6e74 such transparent │ │ │ │ │ +0000d540: 2070 6f6c 7967 6f6e 732e 0a0a 2020 204e polygons... N │ │ │ │ │ +0000d550: 6f74 6520 7468 6174 2063 756c 6c3d 6661 ote that cull=fa │ │ │ │ │ +0000d560: 6c73 6520 6d75 7374 2062 6520 7573 6564 lse must be used │ │ │ │ │ +0000d570: 2066 6f72 2072 6561 722d 6661 6369 6e67 for rear-facing │ │ │ │ │ +0000d580: 2070 6f6c 7967 6f6e 7320 746f 2062 650a polygons to be. │ │ │ │ │ +0000d590: 7669 7369 626c 6520 7768 656e 2070 6f73 visible when pos │ │ │ │ │ +0000d5a0: 6974 696f 6e65 6420 6265 6869 6e64 206f itioned behind o │ │ │ │ │ +0000d5b0: 7468 6572 2074 7261 6e73 7061 7265 6e74 ther transparent │ │ │ │ │ +0000d5c0: 2073 7572 6661 6365 732e 0a0a 1f0a 4669 surfaces.....Fi │ │ │ │ │ +0000d5d0: 6c65 3a20 736b 6574 6368 2e69 6e66 6f2c le: sketch.info, │ │ │ │ │ +0000d5e0: 2020 4e6f 6465 3a20 496e 7465 726e 616c Node: Internal │ │ │ │ │ +0000d5f0: 206f 7074 696f 6e73 2c20 2050 7265 763a options, Prev: │ │ │ │ │ +0000d600: 2054 7261 6e73 7061 7265 6e63 792c 2020 Transparency, │ │ │ │ │ +0000d610: 5570 3a20 4f70 7469 6f6e 730a 0a33 2e31 Up: Options..3.1 │ │ │ │ │ +0000d620: 2e35 2e36 2049 6e74 6572 6e61 6c20 6f70 .5.6 Internal op │ │ │ │ │ +0000d630: 7469 6f6e 730a 2e2e 2e2e 2e2e 2e2e 2e2e tions........... │ │ │ │ │ +0000d640: 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 0a0a ................ │ │ │ │ │ +0000d650: 5468 6572 6520 6172 6520 616c 736f 205f There are also _ │ │ │ │ │ +0000d660: 696e 7465 726e 616c 5f20 6f70 7469 6f6e internal_ option │ │ │ │ │ +0000d670: 7320 7573 6564 206f 6e6c 7920 6279 20e2 s used only by . │ │ │ │ │ +0000d680: 8098 736b 6574 6368 e280 9920 616e 6420 ..sketch... and │ │ │ │ │ +0000d690: 6e6f 7420 7061 7373 6564 0a6f 6e20 746f not passed.on to │ │ │ │ │ +0000d6a0: 20e2 8098 5053 5472 6963 6b73 e280 992e ...PSTricks.... │ │ │ │ │ +0000d6b0: 2020 5468 6573 6520 6172 6520 7375 6d6d These are summ │ │ │ │ │ +0000d6c0: 6172 697a 6564 2069 6e20 7468 6520 666f arized in the fo │ │ │ │ │ +0000d6d0: 6c6c 6f77 696e 6720 7461 626c 652e 0a4b llowing table..K │ │ │ │ │ +0000d6e0: 6579 2020 2020 2020 2050 6f73 7369 626c ey Possibl │ │ │ │ │ +0000d6f0: 6520 7661 6c75 6573 2020 2020 2020 2020 e values │ │ │ │ │ +0000d700: 2044 6573 6372 6970 7469 6f6e 0a2d 2d2d Description.--- │ │ │ │ │ 0000d710: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ 0000d720: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ 0000d730: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ 0000d740: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ 0000d750: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ -0000d760: 2d2d 2d2d 2d2d 2d0a e280 9863 756c 6ce2 -------....cull. │ │ │ │ │ -0000d770: 8099 2020 2020 e280 9874 7275 65e2 8099 .. ...true... │ │ │ │ │ -0000d780: 2c20 e280 9866 616c 7365 e280 9920 2020 , ...false... │ │ │ │ │ -0000d790: 2020 2020 2020 5475 726e 2063 756c 6c69 Turn culli │ │ │ │ │ -0000d7a0: 6e67 206f 6620 6261 636b 6661 6365 7320 ng of backfaces │ │ │ │ │ -0000d7b0: 6f6e 2061 6e64 206f 6666 2072 6573 7065 on and off respe │ │ │ │ │ -0000d7c0: 6374 6976 656c 7920 666f 7220 7468 6973 ctively for this │ │ │ │ │ -0000d7d0: 0a20 2020 2020 2020 2020 2020 2020 2020 . │ │ │ │ │ +0000d760: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d0a e280 -------------... │ │ │ │ │ +0000d770: 9863 756c 6ce2 8099 2020 2020 e280 9874 .cull... ...t │ │ │ │ │ +0000d780: 7275 65e2 8099 2c20 e280 9866 616c 7365 rue..., ...false │ │ │ │ │ +0000d790: e280 9920 2020 2020 2020 2020 5475 726e ... Turn │ │ │ │ │ +0000d7a0: 2063 756c 6c69 6e67 206f 6620 6261 636b culling of back │ │ │ │ │ +0000d7b0: 6661 6365 7320 6f6e 2061 6e64 206f 6666 faces on and off │ │ │ │ │ +0000d7c0: 2072 6573 7065 6374 6976 656c 7920 666f respectively fo │ │ │ │ │ +0000d7d0: 7220 7468 6973 0a20 2020 2020 2020 2020 r this. │ │ │ │ │ 0000d7e0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -0000d7f0: 2020 206f 626a 6563 742e 2020 5468 6520 object. The │ │ │ │ │ -0000d800: 6465 6661 756c 7420 7661 6c75 6520 6973 default value is │ │ │ │ │ -0000d810: 20e2 8098 7472 7565 e280 992e 0ae2 8098 ...true........ │ │ │ │ │ -0000d820: 6c61 79e2 8099 2020 2020 20e2 8098 6f76 lay... ...ov │ │ │ │ │ -0000d830: 6572 e280 992c 20e2 8098 696e e280 992c er..., ...in..., │ │ │ │ │ -0000d840: 20e2 8098 756e 6465 72e2 8099 2020 2046 ...under... F │ │ │ │ │ -0000d850: 6f72 6365 2074 6869 7320 6f62 6a65 6374 orce this object │ │ │ │ │ -0000d860: 2074 6f20 6265 20e2 8098 756e 6465 72e2 to be ...under. │ │ │ │ │ -0000d870: 8099 206f 7220 e280 986f 7665 72e2 8099 .. or ...over... │ │ │ │ │ -0000d880: 2061 6c6c 206f 7468 6572 206f 626a 6563 all other objec │ │ │ │ │ -0000d890: 7473 0a20 2020 2020 2020 2020 2020 2020 ts. │ │ │ │ │ +0000d7f0: 2020 2020 2020 2020 206f 626a 6563 742e object. │ │ │ │ │ +0000d800: 2020 5468 6520 6465 6661 756c 7420 7661 The default va │ │ │ │ │ +0000d810: 6c75 6520 6973 20e2 8098 7472 7565 e280 lue is ...true.. │ │ │ │ │ +0000d820: 992e 0ae2 8098 6c61 79e2 8099 2020 2020 ......lay... │ │ │ │ │ +0000d830: 20e2 8098 6f76 6572 e280 992c 20e2 8098 ...over..., ... │ │ │ │ │ +0000d840: 696e e280 992c 20e2 8098 756e 6465 72e2 in..., ...under. │ │ │ │ │ +0000d850: 8099 2020 2046 6f72 6365 2074 6869 7320 .. Force this │ │ │ │ │ +0000d860: 6f62 6a65 6374 2074 6f20 6265 20e2 8098 object to be ... │ │ │ │ │ +0000d870: 756e 6465 72e2 8099 206f 7220 e280 986f under... or ...o │ │ │ │ │ +0000d880: 7665 72e2 8099 2061 6c6c 206f 7468 6572 ver... all other │ │ │ │ │ +0000d890: 206f 626a 6563 7473 0a20 2020 2020 2020 objects. │ │ │ │ │ 0000d8a0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -0000d8b0: 2020 2020 2069 6e20 7468 6520 6465 7074 in the dept │ │ │ │ │ -0000d8c0: 6820 736f 7274 206f 7264 6572 2063 7265 h sort order cre │ │ │ │ │ -0000d8d0: 6174 6564 2062 7920 7468 6520 6869 6464 ated by the hidd │ │ │ │ │ -0000d8e0: 656e 2073 7572 6661 6365 0a20 2020 2020 en surface. │ │ │ │ │ -0000d8f0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -0000d900: 2020 2020 2020 2020 2020 2020 2061 6c67 alg │ │ │ │ │ -0000d910: 6f72 6974 686d 2e20 2054 6865 2064 6566 orithm. The def │ │ │ │ │ -0000d920: 6175 6c74 2076 616c 7565 20e2 8098 6f76 ault value ...ov │ │ │ │ │ -0000d930: 6572 e280 9920 6775 6172 616e 7465 6573 er... guarantees │ │ │ │ │ -0000d940: 2074 6861 7420 6f75 7470 7574 0a20 2020 that output. │ │ │ │ │ -0000d950: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -0000d960: 2020 2020 2020 2020 2020 2020 2020 2064 d │ │ │ │ │ -0000d970: 7565 2074 6f20 7468 6520 e280 9873 7065 ue to the ...spe │ │ │ │ │ -0000d980: 6369 616c e280 9920 7769 6c6c 2062 6520 cial... will be │ │ │ │ │ -0000d990: 7669 7369 626c 652e 0ae2 8098 7370 6c69 visible.....spli │ │ │ │ │ -0000d9a0: 74e2 8099 2020 20e2 8098 7472 7565 e280 t... ...true.. │ │ │ │ │ -0000d9b0: 992c 20e2 8098 6661 6c73 65e2 8099 2020 ., ...false... │ │ │ │ │ -0000d9c0: 2020 2020 2020 2054 7572 6e20 7370 6c69 Turn spli │ │ │ │ │ -0000d9d0: 7474 696e 6720 6f66 2073 7765 6570 2d67 tting of sweep-g │ │ │ │ │ -0000d9e0: 656e 6572 6174 6564 2062 6f64 7920 706f enerated body po │ │ │ │ │ -0000d9f0: 6c79 676f 6e73 206f 6e20 616e 6420 6f66 lygons on and of │ │ │ │ │ -0000da00: 660a 2020 2020 2020 2020 2020 2020 2020 f. │ │ │ │ │ +0000d8b0: 2020 2020 2020 2020 2020 2069 6e20 7468 in th │ │ │ │ │ +0000d8c0: 6520 6465 7074 6820 736f 7274 206f 7264 e depth sort ord │ │ │ │ │ +0000d8d0: 6572 2063 7265 6174 6564 2062 7920 7468 er created by th │ │ │ │ │ +0000d8e0: 6520 6869 6464 656e 2073 7572 6661 6365 e hidden surface │ │ │ │ │ +0000d8f0: 0a20 2020 2020 2020 2020 2020 2020 2020 . │ │ │ │ │ +0000d900: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +0000d910: 2020 2061 6c67 6f72 6974 686d 2e20 2054 algorithm. T │ │ │ │ │ +0000d920: 6865 2064 6566 6175 6c74 2076 616c 7565 he default value │ │ │ │ │ +0000d930: 20e2 8098 6f76 6572 e280 9920 6775 6172 ...over... guar │ │ │ │ │ +0000d940: 616e 7465 6573 2074 6861 7420 6f75 7470 antees that outp │ │ │ │ │ +0000d950: 7574 0a20 2020 2020 2020 2020 2020 2020 ut. │ │ │ │ │ +0000d960: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +0000d970: 2020 2020 2064 7565 2074 6f20 7468 6520 due to the │ │ │ │ │ +0000d980: e280 9873 7065 6369 616c e280 9920 7769 ...special... wi │ │ │ │ │ +0000d990: 6c6c 2062 6520 7669 7369 626c 652e 0ae2 ll be visible... │ │ │ │ │ +0000d9a0: 8098 7370 6c69 74e2 8099 2020 20e2 8098 ..split... ... │ │ │ │ │ +0000d9b0: 7472 7565 e280 992c 20e2 8098 6661 6c73 true..., ...fals │ │ │ │ │ +0000d9c0: 65e2 8099 2020 2020 2020 2020 2054 7572 e... Tur │ │ │ │ │ +0000d9d0: 6e20 7370 6c69 7474 696e 6720 6f66 2073 n splitting of s │ │ │ │ │ +0000d9e0: 7765 6570 2d67 656e 6572 6174 6564 2062 weep-generated b │ │ │ │ │ +0000d9f0: 6f64 7920 706f 6c79 676f 6e73 206f 6e20 ody polygons on │ │ │ │ │ +0000da00: 616e 6420 6f66 660a 2020 2020 2020 2020 and off. │ │ │ │ │ 0000da10: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -0000da20: 2020 2020 7265 7370 6563 7469 7665 6c79 respectively │ │ │ │ │ -0000da30: 2e20 202a 4e6f 7465 2053 7765 6570 733a . *Note Sweeps: │ │ │ │ │ -0000da40: 3a2e 2020 5468 6520 6465 6661 756c 7420 :. The default │ │ │ │ │ -0000da50: 7661 6c75 6520 e280 9874 7275 65e2 8099 value ...true... │ │ │ │ │ -0000da60: 0a20 2020 2020 2020 2020 2020 2020 2020 . │ │ │ │ │ +0000da20: 2020 2020 2020 2020 2020 7265 7370 6563 respec │ │ │ │ │ +0000da30: 7469 7665 6c79 2e20 202a 4e6f 7465 2053 tively. *Note S │ │ │ │ │ +0000da40: 7765 6570 733a 3a2e 2020 5468 6520 6465 weeps::. The de │ │ │ │ │ +0000da50: 6661 756c 7420 7661 6c75 6520 e280 9874 fault value ...t │ │ │ │ │ +0000da60: 7275 65e2 8099 0a20 2020 2020 2020 2020 rue.... │ │ │ │ │ 0000da70: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -0000da80: 2020 2063 6175 7365 7320 2277 6172 7065 causes "warpe │ │ │ │ │ -0000da90: 6422 2070 6f6c 7967 6f6e 7320 746f 2062 d" polygons to b │ │ │ │ │ -0000daa0: 6520 7370 6c69 7420 696e 746f 2074 7269 e split into tri │ │ │ │ │ -0000dab0: 616e 676c 6573 2c20 7768 6963 680a 2020 angles, which. │ │ │ │ │ -0000dac0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +0000da80: 2020 2020 2020 2020 2063 6175 7365 7320 causes │ │ │ │ │ +0000da90: 2277 6172 7065 6422 2070 6f6c 7967 6f6e "warped" polygon │ │ │ │ │ +0000daa0: 7320 746f 2062 6520 7370 6c69 7420 696e s to be split in │ │ │ │ │ +0000dab0: 746f 2074 7269 616e 676c 6573 2c20 7768 to triangles, wh │ │ │ │ │ +0000dac0: 6963 680a 2020 2020 2020 2020 2020 2020 ich. │ │ │ │ │ 0000dad0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -0000dae0: 6176 6f69 6473 206d 6973 7461 6b65 7320 avoids mistakes │ │ │ │ │ -0000daf0: 6279 2074 6865 2068 6964 6465 6e20 7375 by the hidden su │ │ │ │ │ -0000db00: 7266 6163 6520 616c 676f 7269 7468 6d2e rface algorithm. │ │ │ │ │ -0000db10: 0a0a 332e 312e 3620 506f 696e 7420 6c69 ..3.1.6 Point li │ │ │ │ │ -0000db20: 7374 730a 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d sts.------------ │ │ │ │ │ -0000db30: 2d2d 2d2d 2d0a 0a2a 5379 6e74 6178 3a2a -----..*Syntax:* │ │ │ │ │ -0000db40: 0a20 2020 2020 2858 312c 5931 2c5a 3129 . (X1,Y1,Z1) │ │ │ │ │ -0000db50: 2858 322c 5932 2c5a 3229 2e2e 2e0a 4120 (X2,Y2,Z2)....A │ │ │ │ │ -0000db60: 7365 7175 656e 6365 206f 6620 6f6e 6520 sequence of one │ │ │ │ │ -0000db70: 6f72 206d 6f72 6520 706f 696e 7473 206d or more points m │ │ │ │ │ -0000db80: 616b 6573 2061 2070 6f69 6e74 206c 6973 akes a point lis │ │ │ │ │ -0000db90: 742c 2061 2066 6561 7475 7265 2063 6f6d t, a feature com │ │ │ │ │ -0000dba0: 6d6f 6e20 746f 0a61 6c6c 2064 7261 7761 mon to.all drawa │ │ │ │ │ -0000dbb0: 626c 6573 2e20 2045 6163 6820 6f66 2074 bles. Each of t │ │ │ │ │ -0000dbc0: 6865 2070 6f69 6e74 2063 6f6d 706f 6e65 he point compone │ │ │ │ │ -0000dbd0: 6e74 7320 6973 2061 2073 6361 6c61 7220 nts is a scalar │ │ │ │ │ -0000dbe0: 6172 6974 686d 6574 6963 0a65 7870 7265 arithmetic.expre │ │ │ │ │ -0000dbf0: 7373 696f 6e2e 2020 416e 7920 706f 696e ssion. Any poin │ │ │ │ │ -0000dc00: 7420 6d61 7920 6861 7665 2074 6865 207a t may have the z │ │ │ │ │ -0000dc10: 2d63 6f6d 706f 6e65 6e74 206f 6d69 7474 -component omitt │ │ │ │ │ -0000dc20: 6564 3b20 6974 2077 696c 6c20 6465 6661 ed; it will defa │ │ │ │ │ -0000dc30: 756c 740a 746f 207a 3d30 2e0a 0a2a 204d ult.to z=0...* M │ │ │ │ │ -0000dc40: 656e 753a 0a0a 2a20 4472 6177 6162 6c65 enu:..* Drawable │ │ │ │ │ -0000dc50: 733a 3a20 2020 2020 2020 2020 2020 2020 s:: │ │ │ │ │ -0000dc60: 2020 2020 2020 5468 696e 6773 2074 6861 Things tha │ │ │ │ │ -0000dc70: 7420 6172 6520 6472 6177 6e2e 0a2a 2044 t are drawn..* D │ │ │ │ │ -0000dc80: 6566 696e 6974 696f 6e73 3a3a 2020 2020 efinitions:: │ │ │ │ │ -0000dc90: 2020 2020 2020 2020 2020 2020 2054 6869 Thi │ │ │ │ │ -0000dca0: 6e67 7320 7769 7468 206e 616d 6573 2e0a ngs with names.. │ │ │ │ │ -0000dcb0: 0a1f 0a46 696c 653a 2073 6b65 7463 682e ...File: sketch. │ │ │ │ │ -0000dcc0: 696e 666f 2c20 204e 6f64 653a 2044 7261 info, Node: Dra │ │ │ │ │ -0000dcd0: 7761 626c 6573 2c20 204e 6578 743a 2044 wables, Next: D │ │ │ │ │ -0000dce0: 6566 696e 6974 696f 6e73 2c20 2050 7265 efinitions, Pre │ │ │ │ │ -0000dcf0: 763a 204c 616e 6775 6167 6520 6261 7369 v: Language basi │ │ │ │ │ -0000dd00: 6373 2c20 2055 703a 2049 6e70 7574 206c cs, Up: Input l │ │ │ │ │ -0000dd10: 616e 6775 6167 650a 0a33 2e32 2044 7261 anguage..3.2 Dra │ │ │ │ │ -0000dd20: 7761 626c 6573 0a3d 3d3d 3d3d 3d3d 3d3d wables.========= │ │ │ │ │ -0000dd30: 3d3d 3d3d 0a0a 4472 6177 6162 6c65 7320 ====..Drawables │ │ │ │ │ -0000dd40: 6172 6520 7369 6d70 6c79 20e2 8098 736b are simply ...sk │ │ │ │ │ -0000dd50: 6574 6368 e280 9920 6f62 6a65 6374 7320 etch... objects │ │ │ │ │ -0000dd60: 7468 6174 206d 6967 6874 2061 7070 6561 that might appea │ │ │ │ │ -0000dd70: 7220 696e 2074 6865 2064 7261 7769 6e67 r in the drawing │ │ │ │ │ -0000dd80: 2e0a 5468 6579 2069 6e63 6c75 6465 2064 ..They include d │ │ │ │ │ -0000dd90: 6f74 732c 2070 6f6c 796c 696e 6573 2c20 ots, polylines, │ │ │ │ │ -0000dda0: 6375 7276 6573 2c20 706f 6c79 676f 6e73 curves, polygons │ │ │ │ │ -0000ddb0: 2c20 616e 6420 6d6f 7265 2063 6f6d 706c , and more compl │ │ │ │ │ -0000ddc0: 6578 206f 626a 6563 7473 0a74 6861 7420 ex objects.that │ │ │ │ │ -0000ddd0: 6172 6520 6275 696c 7420 7570 2066 726f are built up fro │ │ │ │ │ -0000dde0: 6d20 7369 6d70 6c65 7220 6f6e 6573 2069 m simpler ones i │ │ │ │ │ -0000ddf0: 6e20 7661 7269 6f75 7320 7761 7973 2e20 n various ways. │ │ │ │ │ -0000de00: 2046 696e 616c 6c79 2c20 e280 9c73 7065 Finally, ...spe │ │ │ │ │ -0000de10: 6369 616c e280 9d0a 6f62 6a65 6374 7320 cial....objects │ │ │ │ │ -0000de20: 6172 6520 7468 6f73 6520 636f 6d70 6f73 are those compos │ │ │ │ │ -0000de30: 6564 206f 6620 4c61 5465 5820 6f72 20e2 ed of LaTeX or . │ │ │ │ │ -0000de40: 8098 5053 5472 6963 6b73 e280 9920 636f ..PSTricks... co │ │ │ │ │ -0000de50: 6465 2c20 7065 7268 6170 730a 696e 636c de, perhaps.incl │ │ │ │ │ -0000de60: 7564 696e 6720 636f 6f72 6469 6e61 7465 uding coordinate │ │ │ │ │ -0000de70: 7320 616e 6420 616e 676c 6573 2063 6f6d s and angles com │ │ │ │ │ -0000de80: 7075 7465 6420 6279 20e2 8098 736b 6574 puted by ...sket │ │ │ │ │ -0000de90: 6368 e280 992e 0a0a 2a20 4d65 6e75 3a0a ch......* Menu:. │ │ │ │ │ -0000dea0: 0a2a 2044 6f74 733a 3a20 2020 2020 2020 .* Dots:: │ │ │ │ │ +0000dae0: 2020 2020 2020 6176 6f69 6473 206d 6973 avoids mis │ │ │ │ │ +0000daf0: 7461 6b65 7320 6279 2074 6865 2068 6964 takes by the hid │ │ │ │ │ +0000db00: 6465 6e20 7375 7266 6163 6520 616c 676f den surface algo │ │ │ │ │ +0000db10: 7269 7468 6d2e 0a0a 332e 312e 3620 506f rithm...3.1.6 Po │ │ │ │ │ +0000db20: 696e 7420 6c69 7374 730a 2d2d 2d2d 2d2d int lists.------ │ │ │ │ │ +0000db30: 2d2d 2d2d 2d2d 2d2d 2d2d 2d0a 0a2a 5379 -----------..*Sy │ │ │ │ │ +0000db40: 6e74 6178 3a2a 0a20 2020 2020 2858 312c ntax:*. (X1, │ │ │ │ │ +0000db50: 5931 2c5a 3129 2858 322c 5932 2c5a 3229 Y1,Z1)(X2,Y2,Z2) │ │ │ │ │ +0000db60: 2e2e 2e0a 4120 7365 7175 656e 6365 206f ....A sequence o │ │ │ │ │ +0000db70: 6620 6f6e 6520 6f72 206d 6f72 6520 706f f one or more po │ │ │ │ │ +0000db80: 696e 7473 206d 616b 6573 2061 2070 6f69 ints makes a poi │ │ │ │ │ +0000db90: 6e74 206c 6973 742c 2061 2066 6561 7475 nt list, a featu │ │ │ │ │ +0000dba0: 7265 2063 6f6d 6d6f 6e20 746f 0a61 6c6c re common to.all │ │ │ │ │ +0000dbb0: 2064 7261 7761 626c 6573 2e20 2045 6163 drawables. Eac │ │ │ │ │ +0000dbc0: 6820 6f66 2074 6865 2070 6f69 6e74 2063 h of the point c │ │ │ │ │ +0000dbd0: 6f6d 706f 6e65 6e74 7320 6973 2061 2073 omponents is a s │ │ │ │ │ +0000dbe0: 6361 6c61 7220 6172 6974 686d 6574 6963 calar arithmetic │ │ │ │ │ +0000dbf0: 0a65 7870 7265 7373 696f 6e2e 2020 416e .expression. An │ │ │ │ │ +0000dc00: 7920 706f 696e 7420 6d61 7920 6861 7665 y point may have │ │ │ │ │ +0000dc10: 2074 6865 207a 2d63 6f6d 706f 6e65 6e74 the z-component │ │ │ │ │ +0000dc20: 206f 6d69 7474 6564 3b20 6974 2077 696c omitted; it wil │ │ │ │ │ +0000dc30: 6c20 6465 6661 756c 740a 746f 207a 3d30 l default.to z=0 │ │ │ │ │ +0000dc40: 2e0a 0a2a 204d 656e 753a 0a0a 2a20 4472 ...* Menu:..* Dr │ │ │ │ │ +0000dc50: 6177 6162 6c65 733a 3a20 2020 2020 2020 awables:: │ │ │ │ │ +0000dc60: 2020 2020 2020 2020 2020 2020 5468 696e Thin │ │ │ │ │ +0000dc70: 6773 2074 6861 7420 6172 6520 6472 6177 gs that are draw │ │ │ │ │ +0000dc80: 6e2e 0a2a 2044 6566 696e 6974 696f 6e73 n..* Definitions │ │ │ │ │ +0000dc90: 3a3a 2020 2020 2020 2020 2020 2020 2020 :: │ │ │ │ │ +0000dca0: 2020 2054 6869 6e67 7320 7769 7468 206e Things with n │ │ │ │ │ +0000dcb0: 616d 6573 2e0a 0a1f 0a46 696c 653a 2073 ames.....File: s │ │ │ │ │ +0000dcc0: 6b65 7463 682e 696e 666f 2c20 204e 6f64 ketch.info, Nod │ │ │ │ │ +0000dcd0: 653a 2044 7261 7761 626c 6573 2c20 204e e: Drawables, N │ │ │ │ │ +0000dce0: 6578 743a 2044 6566 696e 6974 696f 6e73 ext: Definitions │ │ │ │ │ +0000dcf0: 2c20 2050 7265 763a 204c 616e 6775 6167 , Prev: Languag │ │ │ │ │ +0000dd00: 6520 6261 7369 6373 2c20 2055 703a 2049 e basics, Up: I │ │ │ │ │ +0000dd10: 6e70 7574 206c 616e 6775 6167 650a 0a33 nput language..3 │ │ │ │ │ +0000dd20: 2e32 2044 7261 7761 626c 6573 0a3d 3d3d .2 Drawables.=== │ │ │ │ │ +0000dd30: 3d3d 3d3d 3d3d 3d3d 3d3d 0a0a 4472 6177 ==========..Draw │ │ │ │ │ +0000dd40: 6162 6c65 7320 6172 6520 7369 6d70 6c79 ables are simply │ │ │ │ │ +0000dd50: 20e2 8098 736b 6574 6368 e280 9920 6f62 ...sketch... ob │ │ │ │ │ +0000dd60: 6a65 6374 7320 7468 6174 206d 6967 6874 jects that might │ │ │ │ │ +0000dd70: 2061 7070 6561 7220 696e 2074 6865 2064 appear in the d │ │ │ │ │ +0000dd80: 7261 7769 6e67 2e0a 5468 6579 2069 6e63 rawing..They inc │ │ │ │ │ +0000dd90: 6c75 6465 2064 6f74 732c 2070 6f6c 796c lude dots, polyl │ │ │ │ │ +0000dda0: 696e 6573 2c20 6375 7276 6573 2c20 706f ines, curves, po │ │ │ │ │ +0000ddb0: 6c79 676f 6e73 2c20 616e 6420 6d6f 7265 lygons, and more │ │ │ │ │ +0000ddc0: 2063 6f6d 706c 6578 206f 626a 6563 7473 complex objects │ │ │ │ │ +0000ddd0: 0a74 6861 7420 6172 6520 6275 696c 7420 .that are built │ │ │ │ │ +0000dde0: 7570 2066 726f 6d20 7369 6d70 6c65 7220 up from simpler │ │ │ │ │ +0000ddf0: 6f6e 6573 2069 6e20 7661 7269 6f75 7320 ones in various │ │ │ │ │ +0000de00: 7761 7973 2e20 2046 696e 616c 6c79 2c20 ways. Finally, │ │ │ │ │ +0000de10: e280 9c73 7065 6369 616c e280 9d0a 6f62 ...special....ob │ │ │ │ │ +0000de20: 6a65 6374 7320 6172 6520 7468 6f73 6520 jects are those │ │ │ │ │ +0000de30: 636f 6d70 6f73 6564 206f 6620 4c61 5465 composed of LaTe │ │ │ │ │ +0000de40: 5820 6f72 20e2 8098 5053 5472 6963 6b73 X or ...PSTricks │ │ │ │ │ +0000de50: e280 9920 636f 6465 2c20 7065 7268 6170 ... code, perhap │ │ │ │ │ +0000de60: 730a 696e 636c 7564 696e 6720 636f 6f72 s.including coor │ │ │ │ │ +0000de70: 6469 6e61 7465 7320 616e 6420 616e 676c dinates and angl │ │ │ │ │ +0000de80: 6573 2063 6f6d 7075 7465 6420 6279 20e2 es computed by . │ │ │ │ │ +0000de90: 8098 736b 6574 6368 e280 992e 0a0a 2a20 ..sketch......* │ │ │ │ │ +0000dea0: 4d65 6e75 3a0a 0a2a 2044 6f74 733a 3a20 Menu:..* Dots:: │ │ │ │ │ 0000deb0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -0000dec0: 2044 7261 7720 646f 7473 2e0a 2a20 4c69 Draw dots..* Li │ │ │ │ │ -0000ded0: 6e65 733a 3a20 2020 2020 2020 2020 2020 nes:: │ │ │ │ │ -0000dee0: 2020 2020 2020 2020 2020 2020 4472 6177 Draw │ │ │ │ │ -0000def0: 2070 6f6c 796c 696e 6573 2e0a 2a20 4375 polylines..* Cu │ │ │ │ │ -0000df00: 7276 6573 3a3a 2020 2020 2020 2020 2020 rves:: │ │ │ │ │ -0000df10: 2020 2020 2020 2020 2020 2020 4472 6177 Draw │ │ │ │ │ -0000df20: 2063 7572 7665 732e 0a2a 2050 6f6c 7967 curves..* Polyg │ │ │ │ │ -0000df30: 6f6e 733a 3a20 2020 2020 2020 2020 2020 ons:: │ │ │ │ │ -0000df40: 2020 2020 2020 2020 2044 7261 7720 706f Draw po │ │ │ │ │ -0000df50: 6c79 676f 6e73 2e0a 2a20 5370 6563 6961 lygons..* Specia │ │ │ │ │ -0000df60: 6c73 3a3a 2020 2020 2020 2020 2020 2020 ls:: │ │ │ │ │ -0000df70: 2020 2020 2020 2020 456d 6265 6420 7261 Embed ra │ │ │ │ │ -0000df80: 7720 4c61 5465 5820 616e 6420 e280 9850 w LaTeX and ...P │ │ │ │ │ -0000df90: 5354 7269 636b 73e2 8099 2e0a 2a20 5377 STricks.....* Sw │ │ │ │ │ -0000dfa0: 6565 7073 3a3a 2020 2020 2020 2020 2020 eeps:: │ │ │ │ │ -0000dfb0: 2020 2020 2020 2020 2020 2020 4472 6177 Draw │ │ │ │ │ -0000dfc0: 2073 7765 6570 7320 6f66 2064 6f74 7320 sweeps of dots │ │ │ │ │ -0000dfd0: 616e 6420 706f 6c79 6c69 6e65 732e 0a2a and polylines..* │ │ │ │ │ -0000dfe0: 2042 6c6f 636b 733a 3a20 2020 2020 2020 Blocks:: │ │ │ │ │ -0000dff0: 2020 2020 2020 2020 2020 2020 2020 2047 G │ │ │ │ │ -0000e000: 726f 7570 206f 7468 6572 2064 7261 7761 roup other drawa │ │ │ │ │ -0000e010: 626c 6573 2e0a 2a20 5265 7065 6174 733a bles..* Repeats: │ │ │ │ │ -0000e020: 3a20 2020 2020 2020 2020 2020 2020 2020 : │ │ │ │ │ -0000e030: 2020 2020 2020 4472 6177 2074 7261 6e73 Draw trans │ │ │ │ │ -0000e040: 666f 726d 6564 2063 6f70 6965 7320 6f66 formed copies of │ │ │ │ │ -0000e050: 206f 626a 6563 7473 2e0a 2a20 5075 7473 objects..* Puts │ │ │ │ │ -0000e060: 3a3a 2020 2020 2020 2020 2020 2020 2020 :: │ │ │ │ │ -0000e070: 2020 2020 2020 2020 2020 4472 6177 206f Draw o │ │ │ │ │ -0000e080: 6e65 206f 626a 6563 7420 7472 616e 7366 ne object transf │ │ │ │ │ -0000e090: 6f72 6d65 642e 0a0a 1f0a 4669 6c65 3a20 ormed.....File: │ │ │ │ │ -0000e0a0: 736b 6574 6368 2e69 6e66 6f2c 2020 4e6f sketch.info, No │ │ │ │ │ -0000e0b0: 6465 3a20 446f 7473 2c20 204e 6578 743a de: Dots, Next: │ │ │ │ │ -0000e0c0: 204c 696e 6573 2c20 2050 7265 763a 2044 Lines, Prev: D │ │ │ │ │ -0000e0d0: 7261 7761 626c 6573 2c20 2055 703a 2044 rawables, Up: D │ │ │ │ │ -0000e0e0: 7261 7761 626c 6573 0a0a 332e 322e 3120 rawables..3.2.1 │ │ │ │ │ -0000e0f0: 446f 7473 0a2d 2d2d 2d2d 2d2d 2d2d 2d0a Dots.----------. │ │ │ │ │ -0000e100: 0a2a 5379 6e74 6178 3a2a 0a20 2020 2020 .*Syntax:*. │ │ │ │ │ -0000e110: 646f 7473 5b4f 5054 494f 4e53 5d20 504f dots[OPTIONS] PO │ │ │ │ │ -0000e120: 494e 545f 4c49 5354 0a54 6869 7320 636f INT_LIST.This co │ │ │ │ │ -0000e130: 6d6d 616e 6420 6973 2074 6865 2074 6872 mmand is the thr │ │ │ │ │ -0000e140: 6565 2d64 696d 656e 7369 6f6e 616c 2065 ee-dimensional e │ │ │ │ │ -0000e150: 7175 6976 616c 656e 7420 6f66 2074 6865 quivalent of the │ │ │ │ │ -0000e160: 20e2 8098 5053 5472 6963 6b73 e280 990a ...PSTricks.... │ │ │ │ │ -0000e170: 636f 6d6d 616e 6420 e280 985c 7073 646f command ...\psdo │ │ │ │ │ -0000e180: 7473 e280 992e 0a0a 1f0a 4669 6c65 3a20 ts........File: │ │ │ │ │ -0000e190: 736b 6574 6368 2e69 6e66 6f2c 2020 4e6f sketch.info, No │ │ │ │ │ -0000e1a0: 6465 3a20 4c69 6e65 732c 2020 4e65 7874 de: Lines, Next │ │ │ │ │ -0000e1b0: 3a20 4375 7276 6573 2c20 2050 7265 763a : Curves, Prev: │ │ │ │ │ -0000e1c0: 2044 6f74 732c 2020 5570 3a20 4472 6177 Dots, Up: Draw │ │ │ │ │ -0000e1d0: 6162 6c65 730a 0a33 2e32 2e32 204c 696e ables..3.2.2 Lin │ │ │ │ │ -0000e1e0: 6573 0a2d 2d2d 2d2d 2d2d 2d2d 2d2d 0a0a es.-----------.. │ │ │ │ │ -0000e1f0: 2a53 796e 7461 783a 2a0a 2020 2020 206c *Syntax:*. l │ │ │ │ │ -0000e200: 696e 655b 4f50 5449 4f4e 535d 2050 4f49 ine[OPTIONS] POI │ │ │ │ │ -0000e210: 4e54 5f4c 4953 540a 5468 6973 2063 6f6d NT_LIST.This com │ │ │ │ │ -0000e220: 6d61 6e64 2069 7320 7468 6520 7468 7265 mand is the thre │ │ │ │ │ -0000e230: 652d 6469 6d65 6e73 696f 6e61 6c20 6571 e-dimensional eq │ │ │ │ │ -0000e240: 7569 7661 6c65 6e74 206f 6620 7468 6520 uivalent of the │ │ │ │ │ -0000e250: e280 9850 5354 7269 636b 73e2 8099 0a63 ...PSTricks....c │ │ │ │ │ -0000e260: 6f6d 6d61 6e64 20e2 8098 5c70 736c 696e ommand ...\pslin │ │ │ │ │ -0000e270: 65e2 8099 2e0a 0a1f 0a46 696c 653a 2073 e........File: s │ │ │ │ │ -0000e280: 6b65 7463 682e 696e 666f 2c20 204e 6f64 ketch.info, Nod │ │ │ │ │ -0000e290: 653a 2043 7572 7665 732c 2020 4e65 7874 e: Curves, Next │ │ │ │ │ -0000e2a0: 3a20 506f 6c79 676f 6e73 2c20 2050 7265 : Polygons, Pre │ │ │ │ │ -0000e2b0: 763a 204c 696e 6573 2c20 2055 703a 2044 v: Lines, Up: D │ │ │ │ │ -0000e2c0: 7261 7761 626c 6573 0a0a 332e 322e 3320 rawables..3.2.3 │ │ │ │ │ -0000e2d0: 4375 7276 6573 0a2d 2d2d 2d2d 2d2d 2d2d Curves.--------- │ │ │ │ │ -0000e2e0: 2d2d 2d0a 0a2a 5379 6e74 6178 3a2a 0a20 ---..*Syntax:*. │ │ │ │ │ -0000e2f0: 2020 2020 6375 7276 655b 4f50 5449 4f4e curve[OPTION │ │ │ │ │ -0000e300: 535d 2050 4f49 4e54 5f4c 4953 540a 5468 S] POINT_LIST.Th │ │ │ │ │ -0000e310: 6973 2063 6f6d 6d61 6e64 2069 7320 7468 is command is th │ │ │ │ │ -0000e320: 6520 7468 7265 652d 6469 6d65 6e73 696f e three-dimensio │ │ │ │ │ -0000e330: 6e61 6c20 6571 7569 7661 6c65 6e74 206f nal equivalent o │ │ │ │ │ -0000e340: 6620 7468 6520 e280 9850 5354 7269 636b f the ...PSTrick │ │ │ │ │ -0000e350: 73e2 8099 0a63 6f6d 6d61 6e64 20e2 8098 s....command ... │ │ │ │ │ -0000e360: 5c70 7363 7572 7665 e280 992e 2020 4974 \pscurve.... It │ │ │ │ │ -0000e370: 2069 7320 6e6f 7420 696d 706c 656d 656e is not implemen │ │ │ │ │ -0000e380: 7465 6420 696e 2074 6865 2063 7572 7265 ted in the curre │ │ │ │ │ -0000e390: 6e74 2076 6572 7369 6f6e 206f 660a e280 nt version of... │ │ │ │ │ -0000e3a0: 9873 6b65 7463 68e2 8099 2e0a 0a1f 0a46 .sketch........F │ │ │ │ │ -0000e3b0: 696c 653a 2073 6b65 7463 682e 696e 666f ile: sketch.info │ │ │ │ │ -0000e3c0: 2c20 204e 6f64 653a 2050 6f6c 7967 6f6e , Node: Polygon │ │ │ │ │ -0000e3d0: 732c 2020 4e65 7874 3a20 5370 6563 6961 s, Next: Specia │ │ │ │ │ -0000e3e0: 6c73 2c20 2050 7265 763a 2043 7572 7665 ls, Prev: Curve │ │ │ │ │ -0000e3f0: 732c 2020 5570 3a20 4472 6177 6162 6c65 s, Up: Drawable │ │ │ │ │ -0000e400: 730a 0a33 2e32 2e34 2050 6f6c 7967 6f6e s..3.2.4 Polygon │ │ │ │ │ -0000e410: 730a 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d s.-------------- │ │ │ │ │ -0000e420: 0a0a 2a53 796e 7461 783a 2a0a 2020 2020 ..*Syntax:*. │ │ │ │ │ -0000e430: 2070 6f6c 7967 6f6e 5b4f 5054 494f 4e53 polygon[OPTIONS │ │ │ │ │ -0000e440: 5d20 504f 494e 545f 4c49 5354 0a54 6869 ] POINT_LIST.Thi │ │ │ │ │ -0000e450: 7320 636f 6d6d 616e 6420 6973 2074 6865 s command is the │ │ │ │ │ -0000e460: 2074 6872 6565 2d64 696d 656e 7369 6f6e three-dimension │ │ │ │ │ -0000e470: 616c 2065 7175 6976 616c 656e 7420 6f66 al equivalent of │ │ │ │ │ -0000e480: 2074 6865 20e2 8098 5053 5472 6963 6b73 the ...PSTricks │ │ │ │ │ -0000e490: e280 990a 636f 6d6d 616e 6420 e280 985c ....command ...\ │ │ │ │ │ -0000e4a0: 7073 706f 6c79 676f 6ee2 8099 2e20 2054 pspolygon.... T │ │ │ │ │ -0000e4b0: 6865 20e2 8098 736b 6574 6368 e280 9920 he ...sketch... │ │ │ │ │ -0000e4c0: 6869 6464 656e 2073 7572 6661 6365 2061 hidden surface a │ │ │ │ │ -0000e4d0: 6c67 6f72 6974 686d 2061 7373 756d 6573 lgorithm assumes │ │ │ │ │ -0000e4e0: 0a74 6861 7420 706f 6c79 676f 6e73 2061 .that polygons a │ │ │ │ │ -0000e4f0: 7265 2063 6f6e 7665 7820 616e 6420 706c re convex and pl │ │ │ │ │ -0000e500: 616e 6172 2e20 2049 6e20 7072 6163 7469 anar. In practi │ │ │ │ │ -0000e510: 6365 2c20 6472 6177 696e 6773 206d 6179 ce, drawings may │ │ │ │ │ -0000e520: 2077 656c 6c0a 7475 726e 206f 7574 2063 well.turn out c │ │ │ │ │ -0000e530: 6f72 7265 6374 6c79 2065 7665 6e20 6966 orrectly even if │ │ │ │ │ -0000e540: 2074 6865 7365 2061 7373 756d 7074 696f these assumptio │ │ │ │ │ -0000e550: 6e73 2061 7265 2076 696f 6c61 7465 642e ns are violated. │ │ │ │ │ -0000e560: 0a0a 1f0a 4669 6c65 3a20 736b 6574 6368 ....File: sketch │ │ │ │ │ -0000e570: 2e69 6e66 6f2c 2020 4e6f 6465 3a20 5370 .info, Node: Sp │ │ │ │ │ -0000e580: 6563 6961 6c73 2c20 204e 6578 743a 2053 ecials, Next: S │ │ │ │ │ -0000e590: 7765 6570 732c 2020 5072 6576 3a20 506f weeps, Prev: Po │ │ │ │ │ -0000e5a0: 6c79 676f 6e73 2c20 2055 703a 2044 7261 lygons, Up: Dra │ │ │ │ │ -0000e5b0: 7761 626c 6573 0a0a 332e 322e 3520 5370 wables..3.2.5 Sp │ │ │ │ │ -0000e5c0: 6563 6961 6c73 0a2d 2d2d 2d2d 2d2d 2d2d ecials.--------- │ │ │ │ │ -0000e5d0: 2d2d 2d2d 2d0a 0a2a 5379 6e74 6178 3a2a -----..*Syntax:* │ │ │ │ │ -0000e5e0: 0a20 2020 2020 7370 6563 6961 6c20 2452 . special $R │ │ │ │ │ -0000e5f0: 4157 5f54 4558 5424 5b4f 5054 494f 4e53 AW_TEXT$[OPTIONS │ │ │ │ │ -0000e600: 5d20 4152 475f 4c49 5354 0a48 6572 6520 ] ARG_LIST.Here │ │ │ │ │ -0000e610: e280 9824 e280 9920 6361 6e20 6265 2061 ...$... can be a │ │ │ │ │ -0000e620: 6e79 2063 6861 7261 6374 6572 2061 6e64 ny character and │ │ │ │ │ -0000e630: 2069 7320 7573 6564 2074 6f20 6465 6c69 is used to deli │ │ │ │ │ -0000e640: 6d69 7420 7468 6520 7374 6172 7420 616e mit the start an │ │ │ │ │ -0000e650: 6420 656e 640a 6f66 2052 4157 5f54 4558 d end.of RAW_TEX │ │ │ │ │ -0000e660: 542e 2020 5468 6520 636f 6d6d 616e 6420 T. The command │ │ │ │ │ -0000e670: 656d 6265 6473 2052 4157 5f54 4558 5420 embeds RAW_TEXT │ │ │ │ │ -0000e680: 696e 2074 6865 20e2 8098 736b 6574 6368 in the ...sketch │ │ │ │ │ -0000e690: e280 9920 6f75 7470 7574 2061 6674 6572 ... output after │ │ │ │ │ -0000e6a0: 0a70 6572 666f 726d 696e 6720 7375 6273 .performing subs │ │ │ │ │ -0000e6b0: 7469 7475 7469 6f6e 7320 6173 2066 6f6c titutions as fol │ │ │ │ │ -0000e6c0: 6c6f 7773 2e0a 2020 20e2 80a2 20e2 8098 lows.. ... ... │ │ │ │ │ -0000e6d0: 2349 e280 9920 7768 6572 6520 4920 6973 #I... where I is │ │ │ │ │ -0000e6e0: 2061 2070 6f73 6974 6976 6520 696e 7465 a positive inte │ │ │ │ │ -0000e6f0: 6765 7220 6973 2072 6570 6c61 6365 6420 ger is replaced │ │ │ │ │ -0000e700: 6279 2074 6865 2049 2774 6820 7661 6c75 by the I'th valu │ │ │ │ │ -0000e710: 6520 696e 0a20 2020 2020 4152 475f 4c49 e in. ARG_LI │ │ │ │ │ -0000e720: 5354 2e20 2050 6f69 6e74 2061 6e64 2076 ST. Point and v │ │ │ │ │ -0000e730: 6563 746f 7220 6172 6775 6d65 6e74 7320 ector arguments │ │ │ │ │ -0000e740: 6265 636f 6d65 2074 776f 2d64 696d 656e become two-dimen │ │ │ │ │ -0000e750: 7369 6f6e 616c 0a20 2020 2020 706f 696e sional. poin │ │ │ │ │ -0000e760: 7473 2c20 7768 6963 6820 6172 6520 7468 ts, which are th │ │ │ │ │ -0000e770: 6520 7472 616e 7366 6f72 6d65 6420 3364 e transformed 3d │ │ │ │ │ -0000e780: 2061 7267 756d 656e 7473 2070 726f 6a65 arguments proje │ │ │ │ │ -0000e790: 6374 6564 206f 6e74 6f20 7468 650a 2020 cted onto the. │ │ │ │ │ -0000e7a0: 2020 2058 2d59 2070 6c61 6e65 2e20 2054 X-Y plane. T │ │ │ │ │ -0000e7b0: 6869 7320 616c 6c6f 7773 2074 776f 2d64 his allows two-d │ │ │ │ │ -0000e7c0: 696d 656e 7469 6f6e 616c 206f 7574 7075 imentional outpu │ │ │ │ │ -0000e7d0: 7420 656c 656d 656e 7473 2073 7563 6820 t elements such │ │ │ │ │ -0000e7e0: 6173 0a20 2020 2020 6c61 6265 6c73 2074 as. labels t │ │ │ │ │ -0000e7f0: 6f20 6265 2065 6173 696c 7920 706f 7369 o be easily posi │ │ │ │ │ -0000e800: 7469 6f6e 6564 2077 6974 6820 7265 7370 tioned with resp │ │ │ │ │ -0000e810: 6563 7420 746f 2074 6872 6565 2d64 696d ect to three-dim │ │ │ │ │ -0000e820: 656e 7369 6f6e 616c 0a20 2020 2020 6665 ensional. fe │ │ │ │ │ -0000e830: 6174 7572 6573 2069 6e20 7468 6520 6472 atures in the dr │ │ │ │ │ -0000e840: 6177 696e 672e 2020 5363 616c 6172 2061 awing. Scalar a │ │ │ │ │ -0000e850: 7267 756d 656e 7473 2061 7265 2073 7562 rguments are sub │ │ │ │ │ -0000e860: 7369 7475 7465 6420 6469 7265 6374 6c79 situted directly │ │ │ │ │ -0000e870: 2e0a 2020 2020 204e 6f20 7472 616e 7366 .. No transf │ │ │ │ │ -0000e880: 6f72 6d61 7469 6f6e 2069 7320 6170 706c ormation is appl │ │ │ │ │ -0000e890: 6965 642e 0a20 2020 e280 a220 e280 9823 ied.. ... ...# │ │ │ │ │ -0000e8a0: 7b49 7de2 8099 2069 7320 616c 736f 2072 {I}... is also r │ │ │ │ │ -0000e8b0: 6570 6c61 6365 6420 6173 2061 626f 7665 eplaced as above │ │ │ │ │ -0000e8c0: 2e0a 2020 20e2 80a2 20e2 8098 2349 2732 .. ... ...#I'2 │ │ │ │ │ -0000e8d0: e280 9920 6973 2072 6570 6c61 6365 6420 ... is replaced │ │ │ │ │ -0000e8e0: 6173 2061 626f 7665 2066 6f72 2070 6f69 as above for poi │ │ │ │ │ -0000e8f0: 6e74 7320 6f72 2076 6563 746f 7273 2e20 nts or vectors. │ │ │ │ │ -0000e900: 2049 7420 6973 2061 6e20 6572 726f 720a It is an error. │ │ │ │ │ -0000e910: 2020 2020 2066 6f72 2074 6865 2049 2774 for the I't │ │ │ │ │ -0000e920: 6820 6172 6775 6d65 6e74 2074 6f20 6265 h argument to be │ │ │ │ │ -0000e930: 2061 2073 6361 6c61 722e 0a20 2020 e280 a scalar.. .. │ │ │ │ │ -0000e940: a220 e280 9823 4927 78e2 8099 2c20 e280 . ...#I'x..., .. │ │ │ │ │ -0000e950: 9823 4927 79e2 8099 2c20 6f72 20e2 8098 .#I'y..., or ... │ │ │ │ │ -0000e960: 2349 277a e280 9920 6973 2072 6570 6c61 #I'z... is repla │ │ │ │ │ -0000e970: 6365 642c 2072 6573 7065 6374 6976 656c ced, respectivel │ │ │ │ │ -0000e980: 792c 2062 7920 7468 6520 7363 616c 6172 y, by the scalar │ │ │ │ │ -0000e990: 0a20 2020 2020 582c 2059 2c20 6f72 205a . X, Y, or Z │ │ │ │ │ -0000e9a0: 2d63 6f6f 7264 696e 6174 6520 6f66 2074 -coordinate of t │ │ │ │ │ -0000e9b0: 6865 2061 7267 756d 656e 7420 706f 696e he argument poin │ │ │ │ │ -0000e9c0: 7420 6f72 2076 6563 746f 722e 2020 4974 t or vector. It │ │ │ │ │ -0000e9d0: 2069 7320 616e 0a20 2020 2020 6572 726f is an. erro │ │ │ │ │ -0000e9e0: 7220 666f 7220 7468 6520 4927 7468 2061 r for the I'th a │ │ │ │ │ -0000e9f0: 7267 756d 656e 7420 746f 2062 6520 6120 rgument to be a │ │ │ │ │ -0000ea00: 7363 616c 6172 2e0a 2020 20e2 80a2 20e2 scalar.. ... . │ │ │ │ │ -0000ea10: 8098 2349 2733 e280 9920 6973 2072 6570 ..#I'3... is rep │ │ │ │ │ -0000ea20: 6c61 6365 6420 6279 2074 6865 2074 6872 laced by the thr │ │ │ │ │ -0000ea30: 6565 2d64 696d 656e 7369 6f6e 616c 2074 ee-dimensional t │ │ │ │ │ -0000ea40: 7261 6e73 666f 726d 6564 2061 7267 756d ransformed argum │ │ │ │ │ -0000ea50: 656e 742e 0a20 2020 2020 4e6f 7465 2074 ent.. Note t │ │ │ │ │ -0000ea60: 6861 7420 6966 2061 2070 6572 7370 6563 hat if a perspec │ │ │ │ │ -0000ea70: 7469 7665 2074 7261 6e73 666f 726d 6174 tive transformat │ │ │ │ │ -0000ea80: 696f 6e20 6861 7320 6265 656e 2061 7070 ion has been app │ │ │ │ │ -0000ea90: 6c69 6564 2c20 7468 650a 2020 2020 205a lied, the. Z │ │ │ │ │ -0000eaa0: 2d63 6f6f 7264 696e 6174 6520 6861 7320 -coordinate has │ │ │ │ │ -0000eab0: 6c69 7474 6c65 2067 656f 6d65 7472 6963 little geometric │ │ │ │ │ -0000eac0: 2073 6967 6e69 6669 6361 6e63 652c 2074 significance, t │ │ │ │ │ -0000ead0: 686f 7567 6820 6974 0a20 2020 2020 6163 hough it. ac │ │ │ │ │ -0000eae0: 6375 7261 7465 6c79 2069 6e64 6963 6174 curately indicat │ │ │ │ │ -0000eaf0: 6573 2072 656c 6174 6976 6520 6465 7074 es relative dept │ │ │ │ │ -0000eb00: 682e 0a20 2020 e280 a220 e280 9823 492d h.. ... ...#I- │ │ │ │ │ -0000eb10: 4ae2 8099 2077 6865 7265 2049 2061 6e64 J... where I and │ │ │ │ │ -0000eb20: 204a 2061 7265 2070 6f73 6974 6976 6520 J are positive │ │ │ │ │ -0000eb30: 696e 7465 6765 7273 2069 7320 7265 706c integers is repl │ │ │ │ │ -0000eb40: 6163 6564 2062 7920 6120 7374 7269 6e67 aced by a string │ │ │ │ │ -0000eb50: 0a20 2020 2020 e280 987b 414e 474c 457d . ...{ANGLE} │ │ │ │ │ -0000eb60: e280 9920 7768 6572 6520 414e 474c 4520 ... where ANGLE │ │ │ │ │ -0000eb70: 6973 2074 6865 2070 6f6c 6172 2061 6e67 is the polar ang │ │ │ │ │ -0000eb80: 6c65 206f 6620 6120 7665 6374 6f72 2066 le of a vector f │ │ │ │ │ -0000eb90: 726f 6d20 7468 6520 4927 7468 0a20 2020 rom the I'th. │ │ │ │ │ -0000eba0: 2020 706f 696e 7420 696e 2050 4f49 4e54 point in POINT │ │ │ │ │ -0000ebb0: 5f4c 4953 5420 746f 2074 6865 204a 2774 _LIST to the J't │ │ │ │ │ -0000ebc0: 6820 706f 696e 7420 7072 6f6a 6563 7465 h point projecte │ │ │ │ │ -0000ebd0: 6420 696e 746f 2074 6865 2078 2d79 2070 d into the x-y p │ │ │ │ │ -0000ebe0: 6c61 6e65 2e0a 2020 2020 2049 7420 6973 lane.. It is │ │ │ │ │ -0000ebf0: 2061 6e20 6572 726f 7220 666f 7220 7468 an error for th │ │ │ │ │ -0000ec00: 6520 4927 7468 206f 7220 4a27 7468 2061 e I'th or J'th a │ │ │ │ │ -0000ec10: 7267 756d 656e 7420 746f 2062 6520 6120 rgument to be a │ │ │ │ │ -0000ec20: 7363 616c 6172 206f 7220 610a 2020 2020 scalar or a. │ │ │ │ │ -0000ec30: 2076 6563 746f 722e 0a20 2020 e280 a220 vector.. ... │ │ │ │ │ -0000ec40: e280 9823 7b49 2d4a 7de2 8099 2069 7320 ...#{I-J}... is │ │ │ │ │ -0000ec50: 616c 736f 2072 6570 6c61 6365 6420 6173 also replaced as │ │ │ │ │ -0000ec60: 2061 626f 7665 2e0a 2020 20e2 80a2 20e2 above.. ... . │ │ │ │ │ -0000ec70: 8098 2323 e280 9920 6973 2072 6570 6c61 ..##... is repla │ │ │ │ │ -0000ec80: 6365 6420 7769 7468 20e2 8098 23e2 8099 ced with ...#... │ │ │ │ │ -0000ec90: 2e0a 5468 6520 666f 726d 7320 7769 7468 ..The forms with │ │ │ │ │ -0000eca0: 2062 7261 6365 7320 e280 987b 207d e280 braces ...{ }.. │ │ │ │ │ -0000ecb0: 9920 6172 6520 7573 6566 756c 2077 6865 . are useful whe │ │ │ │ │ -0000ecc0: 6e20 7468 6520 6172 6775 6d65 6e74 2069 n the argument i │ │ │ │ │ -0000ecd0: 7320 696d 6d65 6469 6174 656c 790a 666f s immediately.fo │ │ │ │ │ -0000ece0: 6c6c 6f77 6564 2062 7920 6120 6469 6769 llowed by a digi │ │ │ │ │ -0000ecf0: 7420 6f72 2061 2074 6963 6b20 6368 6172 t or a tick char │ │ │ │ │ -0000ed00: 6163 7465 7220 7468 6174 2069 7320 7061 acter that is pa │ │ │ │ │ -0000ed10: 7274 206f 6620 7468 6520 5465 5820 636f rt of the TeX co │ │ │ │ │ -0000ed20: 6465 2e0a 0a20 2020 5468 6520 6f6e 6c79 de... The only │ │ │ │ │ -0000ed30: 2075 7365 6675 6c20 6f70 7469 6f6e 206f useful option o │ │ │ │ │ -0000ed40: 6620 e280 9873 7065 6369 616c e280 9920 f ...special... │ │ │ │ │ -0000ed50: 6973 20e2 8098 6c61 79e2 8099 2c20 7768 is ...lay..., wh │ │ │ │ │ -0000ed60: 6963 6820 6465 7465 726d 696e 6573 2069 ich determines i │ │ │ │ │ -0000ed70: 6620 7468 650a 7375 6273 7469 7475 6564 f the.substitued │ │ │ │ │ -0000ed80: 2072 6177 2074 6578 7420 6973 2065 6d69 raw text is emi │ │ │ │ │ -0000ed90: 7474 6564 2062 6566 6f72 652c 2061 6674 tted before, aft │ │ │ │ │ -0000eda0: 6572 2c20 6f72 2075 7369 6e67 2074 6865 er, or using the │ │ │ │ │ -0000edb0: 2066 6972 7374 2070 6f69 6e74 0a69 6e20 first point.in │ │ │ │ │ -0000edc0: 504f 494e 545f 4c49 5354 2061 7320 616e POINT_LIST as an │ │ │ │ │ -0000edd0: 2069 6e64 6963 6174 6f72 206f 6620 6465 indicator of de │ │ │ │ │ -0000ede0: 7074 682e 2020 5468 6573 6520 6f63 6375 pth. These occu │ │ │ │ │ -0000edf0: 722c 2072 6573 7065 6374 6976 656c 792c r, respectively, │ │ │ │ │ -0000ee00: 2077 6974 680a e280 986c 6179 3d75 6e64 with....lay=und │ │ │ │ │ -0000ee10: 6572 e280 992c 20e2 8098 6c61 793d 6f76 er..., ...lay=ov │ │ │ │ │ -0000ee20: 6572 e280 992c 2061 6e64 20e2 8098 6c61 er..., and ...la │ │ │ │ │ -0000ee30: 793d 696e e280 992e 2020 5365 6520 2a6e y=in.... See *n │ │ │ │ │ -0000ee40: 6f74 6520 5370 6563 6961 6c20 6f62 6a65 ote Special obje │ │ │ │ │ -0000ee50: 6374 733a 3a20 616e 640a 2a6e 6f74 6520 cts:: and.*note │ │ │ │ │ -0000ee60: 5469 6b5a 2f50 4746 2075 7365 722d 6465 TikZ/PGF user-de │ │ │ │ │ -0000ee70: 6669 6e65 6420 7374 796c 6573 3a3a 2066 fined styles:: f │ │ │ │ │ -0000ee80: 6f72 2065 7861 6d70 6c65 732e 2020 2a4e or examples. *N │ │ │ │ │ -0000ee90: 6f74 6520 496e 7465 726e 616c 0a6f 7074 ote Internal.opt │ │ │ │ │ -0000eea0: 696f 6e73 3a3a 2e0a 0a1f 0a46 696c 653a ions::.....File: │ │ │ │ │ -0000eeb0: 2073 6b65 7463 682e 696e 666f 2c20 204e sketch.info, N │ │ │ │ │ -0000eec0: 6f64 653a 2053 7765 6570 732c 2020 4e65 ode: Sweeps, Ne │ │ │ │ │ -0000eed0: 7874 3a20 426c 6f63 6b73 2c20 2050 7265 xt: Blocks, Pre │ │ │ │ │ -0000eee0: 763a 2053 7065 6369 616c 732c 2020 5570 v: Specials, Up │ │ │ │ │ -0000eef0: 3a20 4472 6177 6162 6c65 730a 0a33 2e32 : Drawables..3.2 │ │ │ │ │ -0000ef00: 2e36 2053 7765 6570 730a 2d2d 2d2d 2d2d .6 Sweeps.------ │ │ │ │ │ -0000ef10: 2d2d 2d2d 2d2d 0a0a 2a53 796e 7461 783a ------..*Syntax: │ │ │ │ │ -0000ef20: 2a0a 2020 2020 2073 7765 6570 207b 204e *. sweep { N │ │ │ │ │ -0000ef30: 2c20 545f 312c 2054 5f32 2c20 2e2e 2e2c , T_1, T_2, ..., │ │ │ │ │ -0000ef40: 2054 5f52 207d 5b4f 5054 494f 4e53 5d20 T_R }[OPTIONS] │ │ │ │ │ -0000ef50: 5357 4550 545f 4f42 4a45 4354 0a20 2020 SWEPT_OBJECT. │ │ │ │ │ -0000ef60: 2020 7377 6565 7020 7b20 4e3c 3e2c 2054 sweep { N<>, T │ │ │ │ │ -0000ef70: 5f31 2c20 545f 322c 202e 2e2e 2c20 545f _1, T_2, ..., T_ │ │ │ │ │ -0000ef80: 5220 7d5b 4f50 5449 4f4e 535d 2053 5745 R }[OPTIONS] SWE │ │ │ │ │ -0000ef90: 5054 5f4f 424a 4543 540a 5468 6520 7377 PT_OBJECT.The sw │ │ │ │ │ -0000efa0: 6565 7020 636f 6e6e 6563 7473 204e 2028 eep connects N ( │ │ │ │ │ -0000efb0: 6f72 2070 6572 6861 7073 204e 2b31 2920 or perhaps N+1) │ │ │ │ │ -0000efc0: 636f 7069 6573 206f 6620 5357 4550 545f copies of SWEPT_ │ │ │ │ │ -0000efd0: 4f42 4a45 4354 2069 6e20 6f72 6465 7220 OBJECT in order │ │ │ │ │ -0000efe0: 746f 0a63 7265 6174 6520 6120 6e65 7720 to.create a new │ │ │ │ │ -0000eff0: 6f62 6a65 6374 206f 6620 6869 6768 6572 object of higher │ │ │ │ │ -0000f000: 2064 696d 656e 7369 6f6e 2e20 2054 6865 dimension. The │ │ │ │ │ -0000f010: 2054 5f49 2028 666f 7220 6920 6265 7477 T_I (for i betw │ │ │ │ │ -0000f020: 6565 6e20 3120 616e 640a 7229 2061 7265 een 1 and.r) are │ │ │ │ │ -0000f030: 2074 7261 6e73 666f 726d 732e 2020 5468 transforms. Th │ │ │ │ │ -0000f040: 6520 6b27 7468 2063 6f70 7920 6f66 2053 e k'th copy of S │ │ │ │ │ -0000f050: 5745 5054 5f4f 424a 4543 5420 6973 2070 WEPT_OBJECT is p │ │ │ │ │ -0000f060: 726f 6475 6365 6420 6279 0a61 7070 6c79 roduced by.apply │ │ │ │ │ -0000f070: 696e 6720 7468 6520 666f 6c6c 6f77 696e ing the followin │ │ │ │ │ -0000f080: 6720 7472 616e 7366 6f72 6d20 746f 2074 g transform to t │ │ │ │ │ -0000f090: 6865 206f 7269 6769 6e61 6c2e 0a20 2020 he original.. │ │ │ │ │ -0000f0a0: 2020 545f 315e 6b20 7468 656e 2054 5f32 T_1^k then T_2 │ │ │ │ │ -0000f0b0: 5e6b 2074 6865 6e20 2e2e 2e20 7468 656e ^k then ... then │ │ │ │ │ -0000f0c0: 2054 5f52 5e6b 0a48 6572 6520 545e 6b20 T_R^k.Here T^k │ │ │ │ │ -0000f0d0: 6d65 616e 7320 2274 7261 6e73 666f 726d means "transform │ │ │ │ │ -0000f0e0: 2054 2061 7070 6c69 6564 206b 2074 696d T applied k tim │ │ │ │ │ -0000f0f0: 6573 2e22 2020 5468 6520 6f72 6967 696e es." The origin │ │ │ │ │ -0000f100: 616c 206f 626a 6563 7420 6973 0a74 6865 al object is.the │ │ │ │ │ -0000f110: 207a 6572 6f27 7468 2063 6f70 792c 2077 zero'th copy, w │ │ │ │ │ -0000f120: 6974 6820 6b3d 3020 616e 6420 6566 6665 ith k=0 and effe │ │ │ │ │ -0000f130: 6374 6976 656c 7920 6e6f 2074 7261 6e73 ctively no trans │ │ │ │ │ -0000f140: 666f 726d 2061 7070 6c69 6564 2028 545e form applied (T^ │ │ │ │ │ -0000f150: 303d 492c 0a74 6865 2069 6465 6e74 6974 0=I,.the identit │ │ │ │ │ -0000f160: 7920 7472 616e 7366 6f72 6d29 2e0a 0a20 y transform)... │ │ │ │ │ -0000f170: 2020 5468 6520 6d65 7468 6f64 206f 6620 The method of │ │ │ │ │ -0000f180: 636f 6e6e 6563 7469 6e67 2074 6865 2063 connecting the c │ │ │ │ │ -0000f190: 6f70 6965 7320 6465 7065 6e64 7320 6f6e opies depends on │ │ │ │ │ -0000f1a0: 2074 6865 2074 7970 6520 6f66 0a53 5745 the type of.SWE │ │ │ │ │ -0000f1b0: 5054 5f4f 424a 4543 5420 616e 6420 6f6e PT_OBJECT and on │ │ │ │ │ -0000f1c0: 2077 6865 7468 6572 2074 6865 2063 6c6f whether the clo │ │ │ │ │ -0000f1d0: 7375 7265 2074 6167 20e2 8098 3c3e e280 sure tag ...<>.. │ │ │ │ │ -0000f1e0: 9920 6973 2070 7265 7365 6e74 206f 7220 . is present or │ │ │ │ │ -0000f1f0: 6e6f 742e 0a0a 2020 2041 6e20 6578 616d not... An exam │ │ │ │ │ -0000f200: 706c 6520 6f66 2061 2073 7765 6570 2077 ple of a sweep w │ │ │ │ │ -0000f210: 6865 7265 2072 3d32 2069 7320 7468 6520 here r=2 is the │ │ │ │ │ -0000f220: 4d6f 6269 7573 2066 6967 7572 6520 6174 Mobius figure at │ │ │ │ │ -0000f230: 202a 6e6f 7465 204d 6f72 6520 746f 0a6c *note More to.l │ │ │ │ │ -0000f240: 6561 726e 3a3a 2e0a 0a2a 204d 656e 753a earn::...* Menu: │ │ │ │ │ -0000f250: 0a0a 2a20 5377 6570 7420 706f 696e 7473 ..* Swept points │ │ │ │ │ -0000f260: 3a3a 2020 2020 2020 2020 2020 2020 2020 :: │ │ │ │ │ -0000f270: 2020 5377 6570 7420 706f 696e 7473 206d Swept points m │ │ │ │ │ -0000f280: 616b 6520 6c69 6e65 7320 6f72 2070 6f6c ake lines or pol │ │ │ │ │ -0000f290: 7967 6f6e 732e 0a2a 2053 7765 7074 206c ygons..* Swept l │ │ │ │ │ -0000f2a0: 696e 6573 3a3a 2020 2020 2020 2020 2020 ines:: │ │ │ │ │ -0000f2b0: 2020 2020 2020 2053 7765 7074 206c 696e Swept lin │ │ │ │ │ -0000f2c0: 6573 206d 616b 6520 6f70 656e 206f 7220 es make open or │ │ │ │ │ -0000f2d0: 636c 6f73 6564 2073 7572 6661 6365 732e closed surfaces. │ │ │ │ │ -0000f2e0: 0a2a 2053 7765 7074 2070 6f6c 7967 6f6e .* Swept polygon │ │ │ │ │ -0000f2f0: 733a 3a20 2020 2020 2020 2020 2020 2020 s:: │ │ │ │ │ -0000f300: 2053 7765 7074 2070 6f6c 7967 6f6e 7320 Swept polygons │ │ │ │ │ -0000f310: 6d61 6b65 2063 6c6f 7365 6420 7375 7266 make closed surf │ │ │ │ │ -0000f320: 6163 6573 2e0a 2a20 5377 6570 7420 626c aces..* Swept bl │ │ │ │ │ -0000f330: 6f63 6b73 3a3a 2020 2020 2020 2020 2020 ocks:: │ │ │ │ │ -0000f340: 2020 2020 2020 5377 6570 7420 626c 6f63 Swept bloc │ │ │ │ │ -0000f350: 6b20 e289 a120 626c 6f63 6b20 6f66 2073 k ... block of s │ │ │ │ │ -0000f360: 7765 6570 732e 0a2a 2053 7765 6570 2066 weeps..* Sweep f │ │ │ │ │ -0000f370: 6163 6520 7370 6c69 7474 696e 673a 3a20 ace splitting:: │ │ │ │ │ -0000f380: 2020 2020 2020 2046 6978 696e 6720 7761 Fixing wa │ │ │ │ │ -0000f390: 7270 6564 2066 6163 6573 2077 6974 6820 rped faces with │ │ │ │ │ -0000f3a0: 7472 6961 6e67 6c65 732e 0a0a 1f0a 4669 triangles.....Fi │ │ │ │ │ -0000f3b0: 6c65 3a20 736b 6574 6368 2e69 6e66 6f2c le: sketch.info, │ │ │ │ │ -0000f3c0: 2020 4e6f 6465 3a20 5377 6570 7420 706f Node: Swept po │ │ │ │ │ -0000f3d0: 696e 7473 2c20 204e 6578 743a 2053 7765 ints, Next: Swe │ │ │ │ │ -0000f3e0: 7074 206c 696e 6573 2c20 2050 7265 763a pt lines, Prev: │ │ │ │ │ -0000f3f0: 2053 7765 6570 732c 2020 5570 3a20 5377 Sweeps, Up: Sw │ │ │ │ │ -0000f400: 6565 7073 0a0a 332e 322e 362e 3120 5377 eeps..3.2.6.1 Sw │ │ │ │ │ -0000f410: 6570 7420 706f 696e 7473 0a2e 2e2e 2e2e ept points...... │ │ │ │ │ -0000f420: 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e0a ................ │ │ │ │ │ -0000f430: 0a49 6620 5357 4550 545f 4f42 4a45 4354 .If SWEPT_OBJECT │ │ │ │ │ -0000f440: 2069 7320 6120 706f 696e 7420 6c69 7374 is a point list │ │ │ │ │ -0000f450: 2061 6e64 2074 6865 7265 2069 7320 6e6f and there is no │ │ │ │ │ -0000f460: 2063 6c6f 7375 7265 2074 6167 2c20 7468 closure tag, th │ │ │ │ │ -0000f470: 656e 0ae2 8098 7377 6565 70e2 8099 2063 en....sweep... c │ │ │ │ │ -0000f480: 6f6e 6e65 6374 7320 4e2b 3120 7375 6363 onnects N+1 succ │ │ │ │ │ -0000f490: 6573 7369 7665 2063 6f70 6965 7320 6f66 essive copies of │ │ │ │ │ -0000f4a0: 2065 6163 6820 706f 696e 7420 2869 6e63 each point (inc │ │ │ │ │ -0000f4b0: 6c75 6469 6e67 2074 6865 0a6f 7269 6769 luding the.origi │ │ │ │ │ -0000f4c0: 6e61 6c29 2077 6974 6820 7374 7261 6967 nal) with straig │ │ │ │ │ -0000f4d0: 6874 206c 696e 6520 7365 676d 656e 7473 ht line segments │ │ │ │ │ -0000f4e0: 2074 6f20 666f 726d 2061 2070 6f6c 796c to form a polyl │ │ │ │ │ -0000f4f0: 696e 652e 2020 4966 2074 6865 7265 2061 ine. If there a │ │ │ │ │ -0000f500: 7265 0a6d 2070 6f69 6e74 7320 696e 2074 re.m points in t │ │ │ │ │ -0000f510: 6865 206f 7269 6769 6e61 6c20 706f 696e he original poin │ │ │ │ │ -0000f520: 7420 6c69 7374 2c20 7468 656e 206d 2070 t list, then m p │ │ │ │ │ -0000f530: 6f6c 796c 696e 6573 2077 6974 6820 4e20 olylines with N │ │ │ │ │ -0000f540: 7365 676d 656e 7473 0a65 6163 6820 6172 segments.each ar │ │ │ │ │ -0000f550: 6520 666f 726d 6564 2062 7920 7468 6520 e formed by the │ │ │ │ │ -0000f560: 7377 6565 702e 2020 496e 2074 6869 7320 sweep. In this │ │ │ │ │ -0000f570: 6d61 6e6e 6572 2c20 e280 9873 7765 6570 manner, ...sweep │ │ │ │ │ -0000f580: e280 9920 666f 726d 7320 6120 7365 7420 ... forms a set │ │ │ │ │ -0000f590: 6f66 0a6f 6e65 2d64 696d 656e 7369 6f6e of.one-dimension │ │ │ │ │ -0000f5a0: 616c 206f 626a 6563 7473 2028 706f 6c79 al objects (poly │ │ │ │ │ -0000f5b0: 6c69 6e65 7329 2066 726f 6d20 7a65 726f lines) from zero │ │ │ │ │ -0000f5c0: 2d64 696d 656e 7369 6f6e 616c 206f 6e65 -dimensional one │ │ │ │ │ -0000f5d0: 7320 2870 6f69 6e74 7329 2e0a 0a20 2020 s (points)... │ │ │ │ │ -0000f5e0: 5768 656e 2074 6865 7265 205f 6973 5f20 When there _is_ │ │ │ │ │ -0000f5f0: 6120 636c 6f73 7572 6520 7461 672c 20e2 a closure tag, . │ │ │ │ │ -0000f600: 8098 7377 6565 70e2 8099 2063 6f6e 6e65 ..sweep... conne │ │ │ │ │ -0000f610: 6374 7320 4e20 7375 6363 6573 7369 7665 cts N successive │ │ │ │ │ -0000f620: 2063 6f70 6965 730a 6f66 2065 6163 6820 copies.of each │ │ │ │ │ -0000f630: 706f 696e 7420 2869 6e63 6c75 6469 6e67 point (including │ │ │ │ │ -0000f640: 2074 6865 206f 7269 6769 6e61 6c29 2077 the original) w │ │ │ │ │ -0000f650: 6974 6820 7374 7261 6967 6874 206c 696e ith straight lin │ │ │ │ │ -0000f660: 6520 7365 676d 656e 7473 2061 6e64 0a66 e segments and.f │ │ │ │ │ -0000f670: 696e 616c 6c79 2063 6f6e 6e65 6374 7320 inally connects │ │ │ │ │ -0000f680: 7468 6520 6c61 7374 2063 6f70 7920 6261 the last copy ba │ │ │ │ │ -0000f690: 636b 2074 6f20 7468 6520 6f72 6967 696e ck to the origin │ │ │ │ │ -0000f6a0: 616c 2074 6f20 666f 726d 2061 2070 6f6c al to form a pol │ │ │ │ │ -0000f6b0: 7967 6f6e 0a77 6974 6820 4e20 7369 6465 ygon.with N side │ │ │ │ │ -0000f6c0: 732e 2020 4966 2074 6865 7265 2061 7265 s. If there are │ │ │ │ │ -0000f6d0: 206d 2070 6f69 6e74 7320 696e 2074 6865 m points in the │ │ │ │ │ -0000f6e0: 206f 7269 6769 6e61 6c20 706f 696e 7420 original point │ │ │ │ │ -0000f6f0: 6c69 7374 2c20 7468 656e 206d 0a70 6f6c list, then m.pol │ │ │ │ │ -0000f700: 7967 6f6e 7320 7769 7468 204e 2073 6964 ygons with N sid │ │ │ │ │ -0000f710: 6573 2065 6163 6820 6172 6520 666f 726d es each are form │ │ │ │ │ -0000f720: 6564 2062 7920 7468 6520 7377 6565 702e ed by the sweep. │ │ │ │ │ -0000f730: 2020 496e 2074 6869 7320 6d61 6e6e 6572 In this manner │ │ │ │ │ -0000f740: 2c0a e280 9873 7765 6570 e280 9920 666f ,....sweep... fo │ │ │ │ │ -0000f750: 726d 7320 6120 7365 7420 6f66 2074 776f rms a set of two │ │ │ │ │ -0000f760: 2d64 696d 656e 7369 6f6e 616c 206f 626a -dimensional obj │ │ │ │ │ -0000f770: 6563 7473 2028 706f 6c79 676f 6e73 2920 ects (polygons) │ │ │ │ │ -0000f780: 6672 6f6d 0a7a 6572 6f2d 6469 6d65 6e73 from.zero-dimens │ │ │ │ │ -0000f790: 696f 6e61 6c20 6f6e 6573 2028 706f 696e ional ones (poin │ │ │ │ │ -0000f7a0: 7473 292e 0a0a 2020 204f 7074 696f 6e73 ts)... Options │ │ │ │ │ -0000f7b0: 206f 6620 7468 6520 e280 9873 7765 6570 of the ...sweep │ │ │ │ │ -0000f7c0: e280 9920 6172 6520 636f 7069 6564 2064 ... are copied d │ │ │ │ │ -0000f7d0: 6972 6563 746c 7920 746f 2074 6865 2072 irectly to the r │ │ │ │ │ -0000f7e0: 6573 756c 7469 6e67 0a70 6f6c 796c 696e esulting.polylin │ │ │ │ │ -0000f7f0: 6528 7329 2e0a 0a1f 0a46 696c 653a 2073 e(s).....File: s │ │ │ │ │ -0000f800: 6b65 7463 682e 696e 666f 2c20 204e 6f64 ketch.info, Nod │ │ │ │ │ -0000f810: 653a 2053 7765 7074 206c 696e 6573 2c20 e: Swept lines, │ │ │ │ │ -0000f820: 204e 6578 743a 2053 7765 7074 2070 6f6c Next: Swept pol │ │ │ │ │ -0000f830: 7967 6f6e 732c 2020 5072 6576 3a20 5377 ygons, Prev: Sw │ │ │ │ │ -0000f840: 6570 7420 706f 696e 7473 2c20 2055 703a ept points, Up: │ │ │ │ │ -0000f850: 2053 7765 6570 730a 0a33 2e32 2e36 2e32 Sweeps..3.2.6.2 │ │ │ │ │ -0000f860: 2053 7765 7074 206c 696e 6573 0a2e 2e2e Swept lines.... │ │ │ │ │ -0000f870: 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e ................ │ │ │ │ │ -0000f880: 0a0a 4966 2053 5745 5054 5f4f 424a 4543 ..If SWEPT_OBJEC │ │ │ │ │ -0000f890: 5420 6973 2061 2070 6f6c 796c 696e 6520 T is a polyline │ │ │ │ │ -0000f8a0: 616e 6420 7468 6572 6520 6973 206e 6f20 and there is no │ │ │ │ │ -0000f8b0: 636c 6f73 7572 6520 7461 672c 2074 6865 closure tag, the │ │ │ │ │ -0000f8c0: 6e20 e280 9873 7765 6570 e280 990a 636f n ...sweep....co │ │ │ │ │ -0000f8d0: 6e6e 6563 7473 204e 2b31 2073 7563 6365 nnects N+1 succe │ │ │ │ │ -0000f8e0: 7373 6976 6520 636f 7069 6573 206f 6620 ssive copies of │ │ │ │ │ -0000f8f0: 7468 6520 706f 6c79 6c69 6e65 2028 696e the polyline (in │ │ │ │ │ -0000f900: 636c 7564 696e 6720 7468 6520 6f72 6967 cluding the orig │ │ │ │ │ -0000f910: 696e 616c 290a 7769 7468 2066 6f75 722d inal).with four- │ │ │ │ │ -0000f920: 7369 6465 6420 706f 6c79 676f 6e73 2c20 sided polygons, │ │ │ │ │ -0000f930: 6561 6368 2070 6169 7220 6f66 2063 6f70 each pair of cop │ │ │ │ │ -0000f940: 6965 7320 6769 7669 6e67 2072 6973 6520 ies giving rise │ │ │ │ │ -0000f950: 746f 2061 2022 706f 6c79 676f 6e0a 7374 to a "polygon.st │ │ │ │ │ -0000f960: 7269 702e 2220 2049 6620 7468 6572 6520 rip." If there │ │ │ │ │ -0000f970: 6172 6520 6d20 706f 696e 7473 2069 6e20 are m points in │ │ │ │ │ -0000f980: 7468 6520 6f72 6967 696e 616c 2070 6f6c the original pol │ │ │ │ │ -0000f990: 796c 696e 652c 2074 6865 6e20 286d 2d31 yline, then (m-1 │ │ │ │ │ -0000f9a0: 294e 0a70 6f6c 7967 6f6e 7320 6172 6520 )N.polygons are │ │ │ │ │ -0000f9b0: 666f 726d 6564 2062 7920 7468 6520 7377 formed by the sw │ │ │ │ │ -0000f9c0: 6565 702e 2020 5765 2063 616c 6c20 7468 eep. We call th │ │ │ │ │ -0000f9d0: 6573 6520 e280 9c62 6f64 7920 706f 6c79 ese ...body poly │ │ │ │ │ -0000f9e0: 676f 6e73 e280 9d2e 2020 496e 0a74 6869 gons.... In.thi │ │ │ │ │ -0000f9f0: 7320 6d61 6e6e 6572 2c20 e280 9873 7765 s manner, ...swe │ │ │ │ │ -0000fa00: 6570 e280 9920 666f 726d 7320 6120 7477 ep... forms a tw │ │ │ │ │ -0000fa10: 6f2d 6469 6d65 6e73 696f 6e61 6c20 7375 o-dimensional su │ │ │ │ │ -0000fa20: 7266 6163 6520 6672 6f6d 2066 726f 6d20 rface from from │ │ │ │ │ -0000fa30: 610a 6f6e 652d 6469 6d65 6e73 696f 6e61 a.one-dimensiona │ │ │ │ │ -0000fa40: 6c20 706f 6c79 6c69 6e65 2e0a 0a20 2020 l polyline... │ │ │ │ │ -0000fa50: 5468 6520 6f72 6465 7220 6f66 2076 6572 The order of ver │ │ │ │ │ -0000fa60: 7469 6365 7320 7072 6f64 7563 6564 2062 tices produced b │ │ │ │ │ -0000fa70: 7920 e280 9873 7765 6570 e280 9920 6973 y ...sweep... is │ │ │ │ │ -0000fa80: 2069 6d70 6f72 7461 6e74 2e20 2049 6620 important. If │ │ │ │ │ -0000fa90: 610a 706f 6c79 676f 6e27 7320 7665 7274 a.polygon's vert │ │ │ │ │ -0000faa0: 6963 6573 2064 6f20 6e6f 7420 6170 7065 ices do not appe │ │ │ │ │ -0000fab0: 6172 2069 6e20 636f 756e 7465 722d 636c ar in counter-cl │ │ │ │ │ -0000fac0: 6f63 6b77 6973 6520 6f72 6465 7220 696e ockwise order in │ │ │ │ │ -0000fad0: 2074 6865 2066 696e 616c 0a69 6d61 6765 the final.image │ │ │ │ │ -0000fae0: 2c20 7468 6520 706f 6c79 676f 6e20 7769 , the polygon wi │ │ │ │ │ -0000faf0: 6c6c 2062 6520 6375 6c6c 6564 2028 756e ll be culled (un │ │ │ │ │ -0000fb00: 6c65 7373 20e2 8098 6375 6c6c 3d66 616c less ...cull=fal │ │ │ │ │ -0000fb10: 7365 e280 9920 6973 2073 6574 292e 2020 se... is set). │ │ │ │ │ -0000fb20: 4966 2074 6865 0a70 6f69 6e74 7320 696e If the.points in │ │ │ │ │ -0000fb30: 2074 6865 206b 2774 6820 636f 7079 206f the k'th copy o │ │ │ │ │ -0000fb40: 6620 7468 6520 706f 6c79 6c69 6e65 2061 f the polyline a │ │ │ │ │ -0000fb50: 7265 2050 5f31 2c20 505f 322c 202e 2e2e re P_1, P_2, ... │ │ │ │ │ -0000fb60: 2c20 505f 6d2c 2061 6e64 2074 6865 0a70 , P_m, and the.p │ │ │ │ │ -0000fb70: 6f69 6e74 7320 696e 2074 6865 206e 6578 oints in the nex │ │ │ │ │ -0000fb80: 7420 636f 7079 2c20 7468 6520 286b 2b31 t copy, the (k+1 │ │ │ │ │ -0000fb90: 2973 742c 2061 7265 2050 5f31 272c 2050 )st, are P_1', P │ │ │ │ │ -0000fba0: 5f32 272c 202e 2e2e 2c20 505f 6d27 2c20 _2', ..., P_m', │ │ │ │ │ -0000fbb0: 7468 656e 0a74 6865 2076 6572 7465 7820 then.the vertex │ │ │ │ │ -0000fbc0: 6f72 6465 7220 6f66 2074 6865 2067 656e order of the gen │ │ │ │ │ -0000fbd0: 6572 6174 6564 2070 6f6c 7967 6f6e 7320 erated polygons │ │ │ │ │ -0000fbe0: 6973 0a20 2020 2020 426f 6479 2070 6f6c is. Body pol │ │ │ │ │ -0000fbf0: 7967 6f6e 2031 3a20 505f 3220 505f 3120 ygon 1: P_2 P_1 │ │ │ │ │ -0000fc00: 505f 3127 2050 5f32 270a 2020 2020 2042 P_1' P_2'. B │ │ │ │ │ -0000fc10: 6f64 7920 706f 6c79 676f 6e20 323a 2050 ody polygon 2: P │ │ │ │ │ -0000fc20: 5f33 2050 5f32 2050 5f32 2720 505f 3327 _3 P_2 P_2' P_3' │ │ │ │ │ -0000fc30: 0a20 2020 2020 2e2e 2e0a 2020 2020 2042 . .... B │ │ │ │ │ -0000fc40: 6f64 7920 706f 6c79 676f 6e20 6d2d 313a ody polygon m-1: │ │ │ │ │ -0000fc50: 2050 5f6d 2050 5f7b 6d2d 317d 2050 5f7b P_m P_{m-1} P_{ │ │ │ │ │ -0000fc60: 6d2d 317d 2720 505f 6d27 0a0a 2020 204f m-1}' P_m'.. O │ │ │ │ │ -0000fc70: 7074 696f 6e73 206f 6620 756e 636c 6f73 ptions of unclos │ │ │ │ │ -0000fc80: 6564 206c 696e 6520 7377 6565 7073 2061 ed line sweeps a │ │ │ │ │ -0000fc90: 7265 2063 6f70 6965 6420 746f 2065 6163 re copied to eac │ │ │ │ │ -0000fca0: 6820 6f75 7470 7574 2070 6f6c 7967 6f6e h output polygon │ │ │ │ │ -0000fcb0: 2e0a 4f70 7469 6f6e 7320 6f66 2074 6865 ..Options of the │ │ │ │ │ -0000fcc0: 2073 7765 7074 206c 696e 6520 6172 6520 swept line are │ │ │ │ │ -0000fcd0: 6967 6e6f 7265 642e 0a0a 2020 2057 6865 ignored... Whe │ │ │ │ │ -0000fce0: 6e20 7468 6572 6520 5f69 735f 2061 2063 n there _is_ a c │ │ │ │ │ -0000fcf0: 6c6f 7375 7265 2074 6167 2c20 7468 656e losure tag, then │ │ │ │ │ -0000fd00: 20e2 8098 7377 6565 70e2 8099 2063 6f6e ...sweep... con │ │ │ │ │ -0000fd10: 6e65 6374 7320 4e20 7375 6363 6573 7369 nects N successi │ │ │ │ │ -0000fd20: 7665 0a63 6f70 6965 7320 6f66 2074 6865 ve.copies of the │ │ │ │ │ -0000fd30: 2070 6f6c 796c 696e 6520 2869 6e63 6c75 polyline (inclu │ │ │ │ │ -0000fd40: 6469 6e67 2074 6865 206f 7269 6769 6e61 ding the origina │ │ │ │ │ -0000fd50: 6c29 2077 6974 6820 666f 7572 2d73 6964 l) with four-sid │ │ │ │ │ -0000fd60: 6564 2062 6f64 790a 706f 6c79 676f 6e73 ed body.polygons │ │ │ │ │ -0000fd70: 206a 7573 7420 6173 2074 6865 2063 6173 just as the cas │ │ │ │ │ -0000fd80: 6520 7769 7468 206e 6f20 636c 6f73 7572 e with no closur │ │ │ │ │ -0000fd90: 6520 7461 672e 2020 4974 2074 6865 6e20 e tag. It then │ │ │ │ │ -0000fda0: 636f 6e6e 6563 7473 2074 6865 0a6c 6173 connects the.las │ │ │ │ │ -0000fdb0: 7420 636f 7079 2062 6163 6b20 746f 2074 t copy back to t │ │ │ │ │ -0000fdc0: 6865 206f 7269 6769 6e61 6c20 746f 2066 he original to f │ │ │ │ │ -0000fdd0: 6f72 6d20 6120 7269 6262 6f6e 2d73 6861 orm a ribbon-sha │ │ │ │ │ -0000fde0: 7065 6420 7375 7266 6163 6520 7468 6174 ped surface that │ │ │ │ │ -0000fdf0: 0a63 6c6f 7365 7320 6f6e 2069 7473 656c .closes on itsel │ │ │ │ │ -0000fe00: 6620 7769 7468 2074 776f 2068 6f6c 6573 f with two holes │ │ │ │ │ -0000fe10: 2072 656d 6169 6e69 6e67 2e0a 0a20 2020 remaining... │ │ │ │ │ -0000fe20: 4669 6e61 6c6c 792c 2074 6865 2073 7765 Finally, the swe │ │ │ │ │ -0000fe30: 6570 2061 6464 7320 7477 6f20 6d6f 7265 ep adds two more │ │ │ │ │ -0000fe40: 2070 6f6c 7967 6f6e 7320 746f 2073 6561 polygons to sea │ │ │ │ │ -0000fe50: 6c20 7468 6520 686f 6c65 7320 616e 6420 l the holes and │ │ │ │ │ -0000fe60: 666f 726d 0a61 2063 6c6f 7365 6420 7375 form.a closed su │ │ │ │ │ -0000fe70: 7266 6163 6520 7468 6174 2c20 6465 7065 rface that, depe │ │ │ │ │ -0000fe80: 6e64 696e 6720 6f6e 2074 6865 2073 7765 nding on the swe │ │ │ │ │ -0000fe90: 6570 2074 7261 6e73 666f 726d 732c 206d ep transforms, m │ │ │ │ │ -0000fea0: 6179 2072 6570 7265 7365 6e74 0a74 6865 ay represent.the │ │ │ │ │ -0000feb0: 2062 6f75 6e64 6172 7920 6f66 2061 2073 boundary of a s │ │ │ │ │ -0000fec0: 6f6c 6964 2e20 2049 6e20 7468 6973 206d olid. In this m │ │ │ │ │ -0000fed0: 616e 6e65 722c 20e2 8098 7377 6565 70e2 anner, ...sweep. │ │ │ │ │ -0000fee0: 8099 2066 6f72 6d73 2074 6865 2062 6f75 .. forms the bou │ │ │ │ │ -0000fef0: 6e64 6172 7920 6f66 0a61 2074 6872 6565 ndary of.a three │ │ │ │ │ -0000ff00: 2d64 696d 656e 7369 6f6e 616c 206f 626a -dimensional obj │ │ │ │ │ -0000ff10: 6563 7420 6672 6f6d 2061 206f 6e65 2d64 ect from a one-d │ │ │ │ │ -0000ff20: 696d 656e 7369 6f6e 616c 2070 6f6c 796c imensional polyl │ │ │ │ │ -0000ff30: 696e 652e 2020 5765 2063 616c 6c0a 7468 ine. We call.th │ │ │ │ │ -0000ff40: 6573 6520 686f 6c65 2d66 696c 6c69 6e67 ese hole-filling │ │ │ │ │ -0000ff50: 2070 6f6c 7967 6f6e 7320 e280 9c65 6e64 polygons ...end │ │ │ │ │ -0000ff60: 73e2 809d 2e0a 0a20 2020 5468 6520 6f72 s...... The or │ │ │ │ │ -0000ff70: 6465 7220 6f66 2076 6572 7469 6365 7320 der of vertices │ │ │ │ │ -0000ff80: 6f66 2065 6e64 2070 6f6c 7967 6f6e 7320 of end polygons │ │ │ │ │ -0000ff90: 6973 2069 6d70 6f72 7461 6e74 2066 6f72 is important for │ │ │ │ │ -0000ffa0: 2063 6f72 7265 6374 0a63 756c 6c69 6e67 correct.culling │ │ │ │ │ -0000ffb0: 2061 7320 6465 7363 7269 6265 6420 6162 as described ab │ │ │ │ │ -0000ffc0: 6f76 652e 2020 4966 2050 5f31 5e31 2c20 ove. If P_1^1, │ │ │ │ │ -0000ffd0: 505f 315e 322c 202e 2e2e 2c20 505f 315e P_1^2, ..., P_1^ │ │ │ │ │ -0000ffe0: 6e20 6172 6520 7468 6520 4e0a 636f 7069 n are the N.copi │ │ │ │ │ -0000fff0: 6573 206f 6620 7468 6520 6669 7273 7420 es of the first │ │ │ │ │ -00010000: 706f 6c79 6c69 6e65 2070 6f69 6e74 2061 polyline point a │ │ │ │ │ -00010010: 6e64 2050 5f6d 5e31 2c20 505f 6d5e 322c nd P_m^1, P_m^2, │ │ │ │ │ -00010020: 202e 2e2e 202c 505f 6d5e 6e20 6172 6520 ... ,P_m^n are │ │ │ │ │ -00010030: 7468 650a 4e20 636f 7069 6573 206f 6620 the.N copies of │ │ │ │ │ -00010040: 7468 6520 6c61 7374 2070 6f6c 796c 696e the last polylin │ │ │ │ │ -00010050: 6520 706f 696e 742c 2074 6865 6e20 7468 e point, then th │ │ │ │ │ -00010060: 6520 656e 6420 706f 6c79 676f 6e20 7665 e end polygon ve │ │ │ │ │ -00010070: 7274 6578 206f 7264 6572 0a69 730a 2020 rtex order.is. │ │ │ │ │ -00010080: 2020 2045 6e64 2070 6f6c 7967 6f6e 2031 End polygon 1 │ │ │ │ │ -00010090: 3a20 505f 315e 6e2c 2050 5f31 5e7b 6e2d : P_1^n, P_1^{n- │ │ │ │ │ -000100a0: 317d 2c20 2e2e 2e20 2c50 5f31 5e31 0a20 1}, ... ,P_1^1. │ │ │ │ │ -000100b0: 2020 2020 456e 6420 706f 6c79 676f 6e20 End polygon │ │ │ │ │ -000100c0: 323a 2050 5f6d 5e31 2c20 505f 6d5e 322c 2: P_m^1, P_m^2, │ │ │ │ │ -000100d0: 202e 2e2e 202c 505f 6d5e 6e0a 0a20 2020 ... ,P_m^n.. │ │ │ │ │ -000100e0: 4966 2074 6865 7265 2061 7265 206e 6f20 If there are no │ │ │ │ │ -000100f0: 6f70 7469 6f6e 7320 6f6e 2074 6865 2073 options on the s │ │ │ │ │ -00010100: 7765 7074 206c 696e 652c 2074 6865 6e20 wept line, then │ │ │ │ │ -00010110: 7468 6520 e280 9873 7765 6570 e280 9920 the ...sweep... │ │ │ │ │ -00010120: 6f70 7469 6f6e 730a 6172 6520 636f 7069 options.are copi │ │ │ │ │ -00010130: 6564 2074 6f20 6561 6368 206f 7574 7075 ed to each outpu │ │ │ │ │ -00010140: 7420 706f 6c79 676f 6e2e 2020 4966 2074 t polygon. If t │ │ │ │ │ -00010150: 6865 2073 7765 7074 206c 696e 6520 646f he swept line do │ │ │ │ │ -00010160: 6573 2068 6176 6520 6f70 7469 6f6e 732c es have options, │ │ │ │ │ -00010170: 0a74 6865 7365 2061 7265 2063 6f70 6965 .these are copie │ │ │ │ │ -00010180: 6420 746f 2063 6f72 7265 7370 6f6e 6469 d to correspondi │ │ │ │ │ -00010190: 6e67 2062 6f64 7920 706f 6c79 676f 6e73 ng body polygons │ │ │ │ │ -000101a0: 3b20 7468 6520 7377 6565 7020 6f70 7469 ; the sweep opti │ │ │ │ │ -000101b0: 6f6e 7320 6172 650a 636f 7069 6564 2074 ons are.copied t │ │ │ │ │ -000101c0: 6f20 7468 6520 656e 6420 706f 6c79 676f o the end polygo │ │ │ │ │ -000101d0: 6e73 2e20 2049 6e20 7468 6973 206d 616e ns. In this man │ │ │ │ │ -000101e0: 6e65 722c 2062 6f64 7920 616e 6420 656e ner, body and en │ │ │ │ │ -000101f0: 6473 206d 6179 2062 6520 6472 6177 6e0a ds may be drawn. │ │ │ │ │ -00010200: 7769 7468 2064 6966 6665 7265 6e74 2063 with different c │ │ │ │ │ -00010210: 6861 7261 6374 6572 6973 7469 6373 2073 haracteristics s │ │ │ │ │ -00010220: 7563 6820 6173 20e2 8098 6669 6c6c 636f uch as ...fillco │ │ │ │ │ -00010230: 6c6f 72e2 8099 2e0a 0a1f 0a46 696c 653a lor........File: │ │ │ │ │ -00010240: 2073 6b65 7463 682e 696e 666f 2c20 204e sketch.info, N │ │ │ │ │ -00010250: 6f64 653a 2053 7765 7074 2070 6f6c 7967 ode: Swept polyg │ │ │ │ │ -00010260: 6f6e 732c 2020 4e65 7874 3a20 5377 6570 ons, Next: Swep │ │ │ │ │ -00010270: 7420 626c 6f63 6b73 2c20 2050 7265 763a t blocks, Prev: │ │ │ │ │ -00010280: 2053 7765 7074 206c 696e 6573 2c20 2055 Swept lines, U │ │ │ │ │ -00010290: 703a 2053 7765 6570 730a 0a33 2e32 2e36 p: Sweeps..3.2.6 │ │ │ │ │ -000102a0: 2e33 2053 7765 7074 2070 6f6c 7967 6f6e .3 Swept polygon │ │ │ │ │ -000102b0: 730a 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e s............... │ │ │ │ │ -000102c0: 2e2e 2e2e 2e2e 2e2e 0a0a 4966 2053 5745 ..........If SWE │ │ │ │ │ -000102d0: 5054 5f4f 424a 4543 5420 6973 2061 2070 PT_OBJECT is a p │ │ │ │ │ -000102e0: 6f6c 7967 6f6e 2c20 7468 6520 e280 9873 olygon, the ...s │ │ │ │ │ -000102f0: 7765 6570 e280 9920 636f 6e6e 6563 7473 weep... connects │ │ │ │ │ -00010300: 204e 2b31 2073 7563 6365 7373 6976 6520 N+1 successive │ │ │ │ │ -00010310: 636f 7069 6573 0a6f 6620 7468 6520 636c copies.of the cl │ │ │ │ │ -00010320: 6f73 6564 2070 6f6c 796c 696e 6520 626f osed polyline bo │ │ │ │ │ -00010330: 7264 6572 206f 6620 7468 6520 706f 6c79 rder of the poly │ │ │ │ │ -00010340: 676f 6e20 746f 2066 6f72 6d20 626f 6479 gon to form body │ │ │ │ │ -00010350: 2070 6f6c 7967 6f6e 730a 6578 6163 746c polygons.exactl │ │ │ │ │ -00010360: 7920 6173 2074 686f 7567 6820 7468 6520 y as though the │ │ │ │ │ -00010370: 626f 7264 6572 2077 6572 6520 6120 7377 border were a sw │ │ │ │ │ -00010380: 6570 7420 706f 6c79 6c69 6e65 2061 7320 ept polyline as │ │ │ │ │ -00010390: 6465 7363 7269 6265 6420 696e 202a 6e6f described in *no │ │ │ │ │ -000103a0: 7465 0a53 7765 7074 206c 696e 6573 3a3a te.Swept lines:: │ │ │ │ │ -000103b0: 2e20 2049 6620 7468 6572 6520 6172 6520 . If there are │ │ │ │ │ -000103c0: 6d20 706f 696e 7473 2069 6e20 7468 6520 m points in the │ │ │ │ │ -000103d0: 6f72 6967 696e 616c 2070 6f6c 7967 6f6e original polygon │ │ │ │ │ -000103e0: 2c20 7468 656e 206d 4e0a 626f 6479 2070 , then mN.body p │ │ │ │ │ -000103f0: 6f6c 7967 6f6e 7320 6172 6520 666f 726d olygons are form │ │ │ │ │ -00010400: 6564 2062 7920 7468 6973 2073 7765 6570 ed by this sweep │ │ │ │ │ -00010410: 2e20 2054 6865 2062 6f64 7920 706f 6c79 . The body poly │ │ │ │ │ -00010420: 676f 6e73 2066 6f72 6d20 616e 0ae2 809c gons form an.... │ │ │ │ │ -00010430: 6578 7472 7573 696f 6ee2 809d 206f 6620 extrusion... of │ │ │ │ │ -00010440: 7468 6520 626f 756e 6461 7279 206f 6620 the boundary of │ │ │ │ │ -00010450: 7468 6520 6f72 6967 696e 616c 2070 6f6c the original pol │ │ │ │ │ -00010460: 7967 6f6e 2077 6974 6820 7477 6f20 686f ygon with two ho │ │ │ │ │ -00010470: 6c65 7320 6174 0a74 6865 206f 7065 6e20 les at.the open │ │ │ │ │ -00010480: 656e 6473 2e0a 0a20 2020 4669 6e61 6c6c ends... Finall │ │ │ │ │ -00010490: 792c 2074 6865 2073 7765 6570 2061 6464 y, the sweep add │ │ │ │ │ -000104a0: 7320 7477 6f20 636f 7069 6573 206f 6620 s two copies of │ │ │ │ │ -000104b0: 7468 6520 6f72 6967 696e 616c 2070 6f6c the original pol │ │ │ │ │ -000104c0: 7967 6f6e 2074 6f20 636f 7665 720a 7468 ygon to cover.th │ │ │ │ │ -000104d0: 6520 686f 6c65 732e 2020 5765 2063 616c e holes. We cal │ │ │ │ │ -000104e0: 6c20 7468 6573 6520 686f 6c65 2d66 696c l these hole-fil │ │ │ │ │ -000104f0: 6c69 6e67 2070 6f6c 7967 6f6e 7320 e280 ling polygons .. │ │ │ │ │ -00010500: 9c65 6e64 73e2 809d 2e20 2049 6e20 7468 .ends.... In th │ │ │ │ │ -00010510: 6973 206d 616e 6e65 722c 0ae2 8098 7377 is manner,....sw │ │ │ │ │ -00010520: 6565 70e2 8099 2066 6f72 6d73 2074 6865 eep... forms the │ │ │ │ │ -00010530: 2062 6f75 6e64 6172 7920 6f66 2061 2074 boundary of a t │ │ │ │ │ -00010540: 6872 6565 2d64 696d 656e 7369 6f6e 616c hree-dimensional │ │ │ │ │ -00010550: 206f 626a 6563 7420 6672 6f6d 2061 0a74 object from a.t │ │ │ │ │ -00010560: 776f 2d64 696d 656e 7369 6f6e 616c 2070 wo-dimensional p │ │ │ │ │ -00010570: 6f6c 7967 6f6e 2e0a 0a20 2020 5468 6520 olygon... The │ │ │ │ │ -00010580: 6f72 6465 7220 6f66 2076 6572 7469 6365 order of vertice │ │ │ │ │ -00010590: 7320 6f66 2065 6e64 2070 6f6c 7967 6f6e s of end polygon │ │ │ │ │ -000105a0: 7320 6973 2069 6d70 6f72 7461 6e74 2066 s is important f │ │ │ │ │ -000105b0: 6f72 2063 6f72 7265 6374 0a63 756c 6c69 or correct.culli │ │ │ │ │ -000105c0: 6e67 2061 7320 6465 7363 7269 6265 6420 ng as described │ │ │ │ │ -000105d0: 6162 6f76 652e 2020 416e 2065 7861 6374 above. An exact │ │ │ │ │ -000105e0: 2063 6f70 7920 6f66 2074 6865 206f 7269 copy of the ori │ │ │ │ │ -000105f0: 6769 6e61 6c20 706f 6c79 676f 6e20 7769 ginal polygon wi │ │ │ │ │ -00010600: 7468 0a76 6572 7465 7820 6f72 6465 7220 th.vertex order │ │ │ │ │ -00010610: 696e 7461 6374 2066 6f72 6d73 2074 6865 intact forms the │ │ │ │ │ -00010620: 2066 6972 7374 2065 6e64 2070 6f6c 7967 first end polyg │ │ │ │ │ -00010630: 6f6e 2e20 2054 6865 206f 7468 6572 2065 on. The other e │ │ │ │ │ -00010640: 6e64 2070 6f6c 7967 6f6e 0a72 6573 756c nd polygon.resul │ │ │ │ │ -00010650: 7473 2066 726f 6d20 7472 616e 7366 6f72 ts from transfor │ │ │ │ │ -00010660: 6d69 6e67 2061 6e64 2074 6865 2072 6576 ming and the rev │ │ │ │ │ -00010670: 6572 7369 6e67 2074 6865 206f 7264 6572 ersing the order │ │ │ │ │ -00010680: 206f 6620 7665 7274 6963 6573 2069 6e20 of vertices in │ │ │ │ │ -00010690: 7468 650a 6f72 6967 696e 616c 2e20 2054 the.original. T │ │ │ │ │ -000106a0: 6865 2074 7261 6e73 666f 726d 2070 6c61 he transform pla │ │ │ │ │ -000106b0: 6365 7320 7468 6520 6f72 6967 696e 616c ces the original │ │ │ │ │ -000106c0: 2070 6f6c 7967 6f6e 2061 7420 7468 6520 polygon at the │ │ │ │ │ -000106d0: 756e 636f 7665 7265 640a 686f 6c65 3b20 uncovered.hole; │ │ │ │ │ -000106e0: 6974 2069 730a 2020 2020 2054 5f31 5e6e it is. T_1^n │ │ │ │ │ -000106f0: 2074 6865 6e20 545f 325e 6e20 7468 656e then T_2^n then │ │ │ │ │ -00010700: 202e 2e2e 2074 6865 6e20 545f 525e 6e2e ... then T_R^n. │ │ │ │ │ -00010710: 0a49 6620 7468 6572 6520 6172 6520 6e6f .If there are no │ │ │ │ │ -00010720: 206f 7074 696f 6e73 206f 6e20 7468 6520 options on the │ │ │ │ │ -00010730: 7377 6570 7420 706f 6c79 676f 6e2c 2074 swept polygon, t │ │ │ │ │ -00010740: 6865 6e20 7468 6520 e280 9873 7765 6570 hen the ...sweep │ │ │ │ │ -00010750: e280 9920 6f70 7469 6f6e 730a 6172 6520 ... options.are │ │ │ │ │ -00010760: 636f 7069 6564 2074 6f20 6561 6368 206f copied to each o │ │ │ │ │ -00010770: 7574 7075 7420 706f 6c79 676f 6e2e 2020 utput polygon. │ │ │ │ │ -00010780: 4966 2074 6865 2073 7765 7074 2070 6f6c If the swept pol │ │ │ │ │ -00010790: 7967 6f6e 2064 6f65 7320 6861 7665 0a6f ygon does have.o │ │ │ │ │ -000107a0: 7074 696f 6e73 2c20 7468 6573 6520 6172 ptions, these ar │ │ │ │ │ -000107b0: 6520 636f 7069 6564 2074 6f20 7468 6520 e copied to the │ │ │ │ │ -000107c0: 656e 6473 3b20 7468 6520 7377 6565 7020 ends; the sweep │ │ │ │ │ -000107d0: 6f70 7469 6f6e 7320 6172 6520 636f 7069 options are copi │ │ │ │ │ -000107e0: 6564 2074 6f0a 7468 6520 626f 6479 2070 ed to.the body p │ │ │ │ │ -000107f0: 6f6c 7967 6f6e 732e 2020 496e 2074 6869 olygons. In thi │ │ │ │ │ -00010800: 7320 6d61 6e6e 6572 2c20 626f 6479 2061 s manner, body a │ │ │ │ │ -00010810: 6e64 2065 6e64 7320 6d61 7920 6265 2064 nd ends may be d │ │ │ │ │ -00010820: 7261 776e 2077 6974 680a 6469 6666 6572 rawn with.differ │ │ │ │ │ -00010830: 656e 7420 6368 6172 6163 7465 7269 7374 ent characterist │ │ │ │ │ -00010840: 6963 7320 7375 6368 2061 7320 e280 9866 ics such as ...f │ │ │ │ │ -00010850: 696c 6c63 6f6c 6f72 e280 992e 0a0a 1f0a illcolor........ │ │ │ │ │ -00010860: 4669 6c65 3a20 736b 6574 6368 2e69 6e66 File: sketch.inf │ │ │ │ │ -00010870: 6f2c 2020 4e6f 6465 3a20 5377 6570 7420 o, Node: Swept │ │ │ │ │ -00010880: 626c 6f63 6b73 2c20 204e 6578 743a 2053 blocks, Next: S │ │ │ │ │ -00010890: 7765 6570 2066 6163 6520 7370 6c69 7474 weep face splitt │ │ │ │ │ -000108a0: 696e 672c 2020 5072 6576 3a20 5377 6570 ing, Prev: Swep │ │ │ │ │ -000108b0: 7420 706f 6c79 676f 6e73 2c20 2055 703a t polygons, Up: │ │ │ │ │ -000108c0: 2053 7765 6570 730a 0a33 2e32 2e36 2e34 Sweeps..3.2.6.4 │ │ │ │ │ -000108d0: 2053 7765 7074 2062 6c6f 636b 730a 2e2e Swept blocks... │ │ │ │ │ -000108e0: 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e ................ │ │ │ │ │ -000108f0: 2e2e 0a0a 5468 6520 7377 6570 7420 6f62 ....The swept ob │ │ │ │ │ -00010900: 6a65 6374 2053 5745 5054 5f4f 424a 4543 ject SWEPT_OBJEC │ │ │ │ │ -00010910: 5420 6d61 7920 616c 736f 2062 6520 616e T may also be an │ │ │ │ │ -00010920: 7920 636f 6c6c 6563 7469 6f6e 206f 6620 y collection of │ │ │ │ │ -00010930: 706f 6c79 6c69 6e65 730a 616e 6420 706f polylines.and po │ │ │ │ │ -00010940: 6c79 676f 6e73 2e20 2054 6869 7320 6d61 lygons. This ma │ │ │ │ │ -00010950: 7920 6265 2061 2062 6c6f 636b 2063 6f6d y be a block com │ │ │ │ │ -00010960: 706f 7365 6420 6f66 20e2 8098 6c69 6e65 posed of ...line │ │ │ │ │ -00010970: e280 9920 616e 642f 6f72 20e2 8098 706f ... and/or ...po │ │ │ │ │ -00010980: 6c79 676f 6ee2 8099 0a63 6f6d 6d61 6e64 lygon....command │ │ │ │ │ -00010990: 7320 696e 2062 7261 6365 7320 e280 987b s in braces ...{ │ │ │ │ │ -000109a0: 207d e280 992c 206f 7220 6974 206d 6179 }..., or it may │ │ │ │ │ -000109b0: 2062 6520 7468 6520 7265 7375 6c74 206f be the result o │ │ │ │ │ -000109c0: 6620 6120 e280 9872 6570 6561 74e2 8099 f a ...repeat... │ │ │ │ │ -000109d0: 2c20 616e 6f74 6865 720a e280 9873 7765 , another....swe │ │ │ │ │ -000109e0: 6570 e280 992c 2065 7463 2e20 2054 6865 ep..., etc. The │ │ │ │ │ -000109f0: 2073 7765 6570 2061 6374 7320 696e 6465 sweep acts inde │ │ │ │ │ -00010a00: 7065 6e64 656e 746c 7920 6f6e 2065 6163 pendently on eac │ │ │ │ │ -00010a10: 6820 6f62 6a65 6374 2069 6e20 7468 6520 h object in the │ │ │ │ │ -00010a20: 626c 6f63 6b0a 6578 6163 746c 7920 6173 block.exactly as │ │ │ │ │ -00010a30: 2069 6620 6974 2077 6572 6520 6120 7369 if it were a si │ │ │ │ │ -00010a40: 6e67 6c65 2073 7765 7074 206f 626a 6563 ngle swept objec │ │ │ │ │ -00010a50: 7420 6465 7363 7269 6265 6420 6162 6f76 t described abov │ │ │ │ │ -00010a60: 6520 696e 202a 6e6f 7465 0a53 7765 7074 e in *note.Swept │ │ │ │ │ -00010a70: 206c 696e 6573 3a3a 2061 6e64 202a 6e6f lines:: and *no │ │ │ │ │ -00010a80: 7465 2053 7765 7074 2070 6f6c 7967 6f6e te Swept polygon │ │ │ │ │ -00010a90: 733a 3a2e 0a0a 1f0a 4669 6c65 3a20 736b s::.....File: sk │ │ │ │ │ -00010aa0: 6574 6368 2e69 6e66 6f2c 2020 4e6f 6465 etch.info, Node │ │ │ │ │ -00010ab0: 3a20 5377 6565 7020 6661 6365 2073 706c : Sweep face spl │ │ │ │ │ -00010ac0: 6974 7469 6e67 2c20 2050 7265 763a 2053 itting, Prev: S │ │ │ │ │ -00010ad0: 7765 7074 2062 6c6f 636b 732c 2020 5570 wept blocks, Up │ │ │ │ │ -00010ae0: 3a20 5377 6565 7073 0a0a 332e 322e 362e : Sweeps..3.2.6. │ │ │ │ │ -00010af0: 3520 5377 6565 7020 6661 6365 2073 706c 5 Sweep face spl │ │ │ │ │ -00010b00: 6974 7469 6e67 0a2e 2e2e 2e2e 2e2e 2e2e itting.......... │ │ │ │ │ +0000dec0: 2020 2020 2020 2044 7261 7720 646f 7473 Draw dots │ │ │ │ │ +0000ded0: 2e0a 2a20 4c69 6e65 733a 3a20 2020 2020 ..* Lines:: │ │ │ │ │ +0000dee0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +0000def0: 2020 4472 6177 2070 6f6c 796c 696e 6573 Draw polylines │ │ │ │ │ +0000df00: 2e0a 2a20 4375 7276 6573 3a3a 2020 2020 ..* Curves:: │ │ │ │ │ +0000df10: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +0000df20: 2020 4472 6177 2063 7572 7665 732e 0a2a Draw curves..* │ │ │ │ │ +0000df30: 2050 6f6c 7967 6f6e 733a 3a20 2020 2020 Polygons:: │ │ │ │ │ +0000df40: 2020 2020 2020 2020 2020 2020 2020 2044 D │ │ │ │ │ +0000df50: 7261 7720 706f 6c79 676f 6e73 2e0a 2a20 raw polygons..* │ │ │ │ │ +0000df60: 5370 6563 6961 6c73 3a3a 2020 2020 2020 Specials:: │ │ │ │ │ +0000df70: 2020 2020 2020 2020 2020 2020 2020 456d Em │ │ │ │ │ +0000df80: 6265 6420 7261 7720 4c61 5465 5820 616e bed raw LaTeX an │ │ │ │ │ +0000df90: 6420 e280 9850 5354 7269 636b 73e2 8099 d ...PSTricks... │ │ │ │ │ +0000dfa0: 2e0a 2a20 5377 6565 7073 3a3a 2020 2020 ..* Sweeps:: │ │ │ │ │ +0000dfb0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +0000dfc0: 2020 4472 6177 2073 7765 6570 7320 6f66 Draw sweeps of │ │ │ │ │ +0000dfd0: 2064 6f74 7320 616e 6420 706f 6c79 6c69 dots and polyli │ │ │ │ │ +0000dfe0: 6e65 732e 0a2a 2042 6c6f 636b 733a 3a20 nes..* Blocks:: │ │ │ │ │ +0000dff0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +0000e000: 2020 2020 2047 726f 7570 206f 7468 6572 Group other │ │ │ │ │ +0000e010: 2064 7261 7761 626c 6573 2e0a 2a20 5265 drawables..* Re │ │ │ │ │ +0000e020: 7065 6174 733a 3a20 2020 2020 2020 2020 peats:: │ │ │ │ │ +0000e030: 2020 2020 2020 2020 2020 2020 4472 6177 Draw │ │ │ │ │ +0000e040: 2074 7261 6e73 666f 726d 6564 2063 6f70 transformed cop │ │ │ │ │ +0000e050: 6965 7320 6f66 206f 626a 6563 7473 2e0a ies of objects.. │ │ │ │ │ +0000e060: 2a20 5075 7473 3a3a 2020 2020 2020 2020 * Puts:: │ │ │ │ │ +0000e070: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +0000e080: 4472 6177 206f 6e65 206f 626a 6563 7420 Draw one object │ │ │ │ │ +0000e090: 7472 616e 7366 6f72 6d65 642e 0a0a 1f0a transformed..... │ │ │ │ │ +0000e0a0: 4669 6c65 3a20 736b 6574 6368 2e69 6e66 File: sketch.inf │ │ │ │ │ +0000e0b0: 6f2c 2020 4e6f 6465 3a20 446f 7473 2c20 o, Node: Dots, │ │ │ │ │ +0000e0c0: 204e 6578 743a 204c 696e 6573 2c20 2050 Next: Lines, P │ │ │ │ │ +0000e0d0: 7265 763a 2044 7261 7761 626c 6573 2c20 rev: Drawables, │ │ │ │ │ +0000e0e0: 2055 703a 2044 7261 7761 626c 6573 0a0a Up: Drawables.. │ │ │ │ │ +0000e0f0: 332e 322e 3120 446f 7473 0a2d 2d2d 2d2d 3.2.1 Dots.----- │ │ │ │ │ +0000e100: 2d2d 2d2d 2d0a 0a2a 5379 6e74 6178 3a2a -----..*Syntax:* │ │ │ │ │ +0000e110: 0a20 2020 2020 646f 7473 5b4f 5054 494f . dots[OPTIO │ │ │ │ │ +0000e120: 4e53 5d20 504f 494e 545f 4c49 5354 0a54 NS] POINT_LIST.T │ │ │ │ │ +0000e130: 6869 7320 636f 6d6d 616e 6420 6973 2074 his command is t │ │ │ │ │ +0000e140: 6865 2074 6872 6565 2d64 696d 656e 7369 he three-dimensi │ │ │ │ │ +0000e150: 6f6e 616c 2065 7175 6976 616c 656e 7420 onal equivalent │ │ │ │ │ +0000e160: 6f66 2074 6865 20e2 8098 5053 5472 6963 of the ...PSTric │ │ │ │ │ +0000e170: 6b73 e280 990a 636f 6d6d 616e 6420 e280 ks....command .. │ │ │ │ │ +0000e180: 985c 7073 646f 7473 e280 992e 0a0a 1f0a .\psdots........ │ │ │ │ │ +0000e190: 4669 6c65 3a20 736b 6574 6368 2e69 6e66 File: sketch.inf │ │ │ │ │ +0000e1a0: 6f2c 2020 4e6f 6465 3a20 4c69 6e65 732c o, Node: Lines, │ │ │ │ │ +0000e1b0: 2020 4e65 7874 3a20 4375 7276 6573 2c20 Next: Curves, │ │ │ │ │ +0000e1c0: 2050 7265 763a 2044 6f74 732c 2020 5570 Prev: Dots, Up │ │ │ │ │ +0000e1d0: 3a20 4472 6177 6162 6c65 730a 0a33 2e32 : Drawables..3.2 │ │ │ │ │ +0000e1e0: 2e32 204c 696e 6573 0a2d 2d2d 2d2d 2d2d .2 Lines.------- │ │ │ │ │ +0000e1f0: 2d2d 2d2d 0a0a 2a53 796e 7461 783a 2a0a ----..*Syntax:*. │ │ │ │ │ +0000e200: 2020 2020 206c 696e 655b 4f50 5449 4f4e line[OPTION │ │ │ │ │ +0000e210: 535d 2050 4f49 4e54 5f4c 4953 540a 5468 S] POINT_LIST.Th │ │ │ │ │ +0000e220: 6973 2063 6f6d 6d61 6e64 2069 7320 7468 is command is th │ │ │ │ │ +0000e230: 6520 7468 7265 652d 6469 6d65 6e73 696f e three-dimensio │ │ │ │ │ +0000e240: 6e61 6c20 6571 7569 7661 6c65 6e74 206f nal equivalent o │ │ │ │ │ +0000e250: 6620 7468 6520 e280 9850 5354 7269 636b f the ...PSTrick │ │ │ │ │ +0000e260: 73e2 8099 0a63 6f6d 6d61 6e64 20e2 8098 s....command ... │ │ │ │ │ +0000e270: 5c70 736c 696e 65e2 8099 2e0a 0a1f 0a46 \psline........F │ │ │ │ │ +0000e280: 696c 653a 2073 6b65 7463 682e 696e 666f ile: sketch.info │ │ │ │ │ +0000e290: 2c20 204e 6f64 653a 2043 7572 7665 732c , Node: Curves, │ │ │ │ │ +0000e2a0: 2020 4e65 7874 3a20 506f 6c79 676f 6e73 Next: Polygons │ │ │ │ │ +0000e2b0: 2c20 2050 7265 763a 204c 696e 6573 2c20 , Prev: Lines, │ │ │ │ │ +0000e2c0: 2055 703a 2044 7261 7761 626c 6573 0a0a Up: Drawables.. │ │ │ │ │ +0000e2d0: 332e 322e 3320 4375 7276 6573 0a2d 2d2d 3.2.3 Curves.--- │ │ │ │ │ +0000e2e0: 2d2d 2d2d 2d2d 2d2d 2d0a 0a2a 5379 6e74 ---------..*Synt │ │ │ │ │ +0000e2f0: 6178 3a2a 0a20 2020 2020 6375 7276 655b ax:*. curve[ │ │ │ │ │ +0000e300: 4f50 5449 4f4e 535d 2050 4f49 4e54 5f4c OPTIONS] POINT_L │ │ │ │ │ +0000e310: 4953 540a 5468 6973 2063 6f6d 6d61 6e64 IST.This command │ │ │ │ │ +0000e320: 2069 7320 7468 6520 7468 7265 652d 6469 is the three-di │ │ │ │ │ +0000e330: 6d65 6e73 696f 6e61 6c20 6571 7569 7661 mensional equiva │ │ │ │ │ +0000e340: 6c65 6e74 206f 6620 7468 6520 e280 9850 lent of the ...P │ │ │ │ │ +0000e350: 5354 7269 636b 73e2 8099 0a63 6f6d 6d61 STricks....comma │ │ │ │ │ +0000e360: 6e64 20e2 8098 5c70 7363 7572 7665 e280 nd ...\pscurve.. │ │ │ │ │ +0000e370: 992e 2020 4974 2069 7320 6e6f 7420 696d .. It is not im │ │ │ │ │ +0000e380: 706c 656d 656e 7465 6420 696e 2074 6865 plemented in the │ │ │ │ │ +0000e390: 2063 7572 7265 6e74 2076 6572 7369 6f6e current version │ │ │ │ │ +0000e3a0: 206f 660a e280 9873 6b65 7463 68e2 8099 of....sketch... │ │ │ │ │ +0000e3b0: 2e0a 0a1f 0a46 696c 653a 2073 6b65 7463 .....File: sketc │ │ │ │ │ +0000e3c0: 682e 696e 666f 2c20 204e 6f64 653a 2050 h.info, Node: P │ │ │ │ │ +0000e3d0: 6f6c 7967 6f6e 732c 2020 4e65 7874 3a20 olygons, Next: │ │ │ │ │ +0000e3e0: 5370 6563 6961 6c73 2c20 2050 7265 763a Specials, Prev: │ │ │ │ │ +0000e3f0: 2043 7572 7665 732c 2020 5570 3a20 4472 Curves, Up: Dr │ │ │ │ │ +0000e400: 6177 6162 6c65 730a 0a33 2e32 2e34 2050 awables..3.2.4 P │ │ │ │ │ +0000e410: 6f6c 7967 6f6e 730a 2d2d 2d2d 2d2d 2d2d olygons.-------- │ │ │ │ │ +0000e420: 2d2d 2d2d 2d2d 0a0a 2a53 796e 7461 783a ------..*Syntax: │ │ │ │ │ +0000e430: 2a0a 2020 2020 2070 6f6c 7967 6f6e 5b4f *. polygon[O │ │ │ │ │ +0000e440: 5054 494f 4e53 5d20 504f 494e 545f 4c49 PTIONS] POINT_LI │ │ │ │ │ +0000e450: 5354 0a54 6869 7320 636f 6d6d 616e 6420 ST.This command │ │ │ │ │ +0000e460: 6973 2074 6865 2074 6872 6565 2d64 696d is the three-dim │ │ │ │ │ +0000e470: 656e 7369 6f6e 616c 2065 7175 6976 616c ensional equival │ │ │ │ │ +0000e480: 656e 7420 6f66 2074 6865 20e2 8098 5053 ent of the ...PS │ │ │ │ │ +0000e490: 5472 6963 6b73 e280 990a 636f 6d6d 616e Tricks....comman │ │ │ │ │ +0000e4a0: 6420 e280 985c 7073 706f 6c79 676f 6ee2 d ...\pspolygon. │ │ │ │ │ +0000e4b0: 8099 2e20 2054 6865 20e2 8098 736b 6574 ... The ...sket │ │ │ │ │ +0000e4c0: 6368 e280 9920 6869 6464 656e 2073 7572 ch... hidden sur │ │ │ │ │ +0000e4d0: 6661 6365 2061 6c67 6f72 6974 686d 2061 face algorithm a │ │ │ │ │ +0000e4e0: 7373 756d 6573 0a74 6861 7420 706f 6c79 ssumes.that poly │ │ │ │ │ +0000e4f0: 676f 6e73 2061 7265 2063 6f6e 7665 7820 gons are convex │ │ │ │ │ +0000e500: 616e 6420 706c 616e 6172 2e20 2049 6e20 and planar. In │ │ │ │ │ +0000e510: 7072 6163 7469 6365 2c20 6472 6177 696e practice, drawin │ │ │ │ │ +0000e520: 6773 206d 6179 2077 656c 6c0a 7475 726e gs may well.turn │ │ │ │ │ +0000e530: 206f 7574 2063 6f72 7265 6374 6c79 2065 out correctly e │ │ │ │ │ +0000e540: 7665 6e20 6966 2074 6865 7365 2061 7373 ven if these ass │ │ │ │ │ +0000e550: 756d 7074 696f 6e73 2061 7265 2076 696f umptions are vio │ │ │ │ │ +0000e560: 6c61 7465 642e 0a0a 1f0a 4669 6c65 3a20 lated.....File: │ │ │ │ │ +0000e570: 736b 6574 6368 2e69 6e66 6f2c 2020 4e6f sketch.info, No │ │ │ │ │ +0000e580: 6465 3a20 5370 6563 6961 6c73 2c20 204e de: Specials, N │ │ │ │ │ +0000e590: 6578 743a 2053 7765 6570 732c 2020 5072 ext: Sweeps, Pr │ │ │ │ │ +0000e5a0: 6576 3a20 506f 6c79 676f 6e73 2c20 2055 ev: Polygons, U │ │ │ │ │ +0000e5b0: 703a 2044 7261 7761 626c 6573 0a0a 332e p: Drawables..3. │ │ │ │ │ +0000e5c0: 322e 3520 5370 6563 6961 6c73 0a2d 2d2d 2.5 Specials.--- │ │ │ │ │ +0000e5d0: 2d2d 2d2d 2d2d 2d2d 2d2d 2d0a 0a2a 5379 -----------..*Sy │ │ │ │ │ +0000e5e0: 6e74 6178 3a2a 0a20 2020 2020 7370 6563 ntax:*. spec │ │ │ │ │ +0000e5f0: 6961 6c20 2452 4157 5f54 4558 5424 5b4f ial $RAW_TEXT$[O │ │ │ │ │ +0000e600: 5054 494f 4e53 5d20 4152 475f 4c49 5354 PTIONS] ARG_LIST │ │ │ │ │ +0000e610: 0a48 6572 6520 e280 9824 e280 9920 6361 .Here ...$... ca │ │ │ │ │ +0000e620: 6e20 6265 2061 6e79 2063 6861 7261 6374 n be any charact │ │ │ │ │ +0000e630: 6572 2061 6e64 2069 7320 7573 6564 2074 er and is used t │ │ │ │ │ +0000e640: 6f20 6465 6c69 6d69 7420 7468 6520 7374 o delimit the st │ │ │ │ │ +0000e650: 6172 7420 616e 6420 656e 640a 6f66 2052 art and end.of R │ │ │ │ │ +0000e660: 4157 5f54 4558 542e 2020 5468 6520 636f AW_TEXT. The co │ │ │ │ │ +0000e670: 6d6d 616e 6420 656d 6265 6473 2052 4157 mmand embeds RAW │ │ │ │ │ +0000e680: 5f54 4558 5420 696e 2074 6865 20e2 8098 _TEXT in the ... │ │ │ │ │ +0000e690: 736b 6574 6368 e280 9920 6f75 7470 7574 sketch... output │ │ │ │ │ +0000e6a0: 2061 6674 6572 0a70 6572 666f 726d 696e after.performin │ │ │ │ │ +0000e6b0: 6720 7375 6273 7469 7475 7469 6f6e 7320 g substitutions │ │ │ │ │ +0000e6c0: 6173 2066 6f6c 6c6f 7773 2e0a 2020 20e2 as follows.. . │ │ │ │ │ +0000e6d0: 80a2 20e2 8098 2349 e280 9920 7768 6572 .. ...#I... wher │ │ │ │ │ +0000e6e0: 6520 4920 6973 2061 2070 6f73 6974 6976 e I is a positiv │ │ │ │ │ +0000e6f0: 6520 696e 7465 6765 7220 6973 2072 6570 e integer is rep │ │ │ │ │ +0000e700: 6c61 6365 6420 6279 2074 6865 2049 2774 laced by the I't │ │ │ │ │ +0000e710: 6820 7661 6c75 6520 696e 0a20 2020 2020 h value in. │ │ │ │ │ +0000e720: 4152 475f 4c49 5354 2e20 2050 6f69 6e74 ARG_LIST. Point │ │ │ │ │ +0000e730: 2061 6e64 2076 6563 746f 7220 6172 6775 and vector argu │ │ │ │ │ +0000e740: 6d65 6e74 7320 6265 636f 6d65 2074 776f ments become two │ │ │ │ │ +0000e750: 2d64 696d 656e 7369 6f6e 616c 0a20 2020 -dimensional. │ │ │ │ │ +0000e760: 2020 706f 696e 7473 2c20 7768 6963 6820 points, which │ │ │ │ │ +0000e770: 6172 6520 7468 6520 7472 616e 7366 6f72 are the transfor │ │ │ │ │ +0000e780: 6d65 6420 3364 2061 7267 756d 656e 7473 med 3d arguments │ │ │ │ │ +0000e790: 2070 726f 6a65 6374 6564 206f 6e74 6f20 projected onto │ │ │ │ │ +0000e7a0: 7468 650a 2020 2020 2058 2d59 2070 6c61 the. X-Y pla │ │ │ │ │ +0000e7b0: 6e65 2e20 2054 6869 7320 616c 6c6f 7773 ne. This allows │ │ │ │ │ +0000e7c0: 2074 776f 2d64 696d 656e 7469 6f6e 616c two-dimentional │ │ │ │ │ +0000e7d0: 206f 7574 7075 7420 656c 656d 656e 7473 output elements │ │ │ │ │ +0000e7e0: 2073 7563 6820 6173 0a20 2020 2020 6c61 such as. la │ │ │ │ │ +0000e7f0: 6265 6c73 2074 6f20 6265 2065 6173 696c bels to be easil │ │ │ │ │ +0000e800: 7920 706f 7369 7469 6f6e 6564 2077 6974 y positioned wit │ │ │ │ │ +0000e810: 6820 7265 7370 6563 7420 746f 2074 6872 h respect to thr │ │ │ │ │ +0000e820: 6565 2d64 696d 656e 7369 6f6e 616c 0a20 ee-dimensional. │ │ │ │ │ +0000e830: 2020 2020 6665 6174 7572 6573 2069 6e20 features in │ │ │ │ │ +0000e840: 7468 6520 6472 6177 696e 672e 2020 5363 the drawing. Sc │ │ │ │ │ +0000e850: 616c 6172 2061 7267 756d 656e 7473 2061 alar arguments a │ │ │ │ │ +0000e860: 7265 2073 7562 7369 7475 7465 6420 6469 re subsituted di │ │ │ │ │ +0000e870: 7265 6374 6c79 2e0a 2020 2020 204e 6f20 rectly.. No │ │ │ │ │ +0000e880: 7472 616e 7366 6f72 6d61 7469 6f6e 2069 transformation i │ │ │ │ │ +0000e890: 7320 6170 706c 6965 642e 0a20 2020 e280 s applied.. .. │ │ │ │ │ +0000e8a0: a220 e280 9823 7b49 7de2 8099 2069 7320 . ...#{I}... is │ │ │ │ │ +0000e8b0: 616c 736f 2072 6570 6c61 6365 6420 6173 also replaced as │ │ │ │ │ +0000e8c0: 2061 626f 7665 2e0a 2020 20e2 80a2 20e2 above.. ... . │ │ │ │ │ +0000e8d0: 8098 2349 2732 e280 9920 6973 2072 6570 ..#I'2... is rep │ │ │ │ │ +0000e8e0: 6c61 6365 6420 6173 2061 626f 7665 2066 laced as above f │ │ │ │ │ +0000e8f0: 6f72 2070 6f69 6e74 7320 6f72 2076 6563 or points or vec │ │ │ │ │ +0000e900: 746f 7273 2e20 2049 7420 6973 2061 6e20 tors. It is an │ │ │ │ │ +0000e910: 6572 726f 720a 2020 2020 2066 6f72 2074 error. for t │ │ │ │ │ +0000e920: 6865 2049 2774 6820 6172 6775 6d65 6e74 he I'th argument │ │ │ │ │ +0000e930: 2074 6f20 6265 2061 2073 6361 6c61 722e to be a scalar. │ │ │ │ │ +0000e940: 0a20 2020 e280 a220 e280 9823 4927 78e2 . ... ...#I'x. │ │ │ │ │ +0000e950: 8099 2c20 e280 9823 4927 79e2 8099 2c20 .., ...#I'y..., │ │ │ │ │ +0000e960: 6f72 20e2 8098 2349 277a e280 9920 6973 or ...#I'z... is │ │ │ │ │ +0000e970: 2072 6570 6c61 6365 642c 2072 6573 7065 replaced, respe │ │ │ │ │ +0000e980: 6374 6976 656c 792c 2062 7920 7468 6520 ctively, by the │ │ │ │ │ +0000e990: 7363 616c 6172 0a20 2020 2020 582c 2059 scalar. X, Y │ │ │ │ │ +0000e9a0: 2c20 6f72 205a 2d63 6f6f 7264 696e 6174 , or Z-coordinat │ │ │ │ │ +0000e9b0: 6520 6f66 2074 6865 2061 7267 756d 656e e of the argumen │ │ │ │ │ +0000e9c0: 7420 706f 696e 7420 6f72 2076 6563 746f t point or vecto │ │ │ │ │ +0000e9d0: 722e 2020 4974 2069 7320 616e 0a20 2020 r. It is an. │ │ │ │ │ +0000e9e0: 2020 6572 726f 7220 666f 7220 7468 6520 error for the │ │ │ │ │ +0000e9f0: 4927 7468 2061 7267 756d 656e 7420 746f I'th argument to │ │ │ │ │ +0000ea00: 2062 6520 6120 7363 616c 6172 2e0a 2020 be a scalar.. │ │ │ │ │ +0000ea10: 20e2 80a2 20e2 8098 2349 2733 e280 9920 ... ...#I'3... │ │ │ │ │ +0000ea20: 6973 2072 6570 6c61 6365 6420 6279 2074 is replaced by t │ │ │ │ │ +0000ea30: 6865 2074 6872 6565 2d64 696d 656e 7369 he three-dimensi │ │ │ │ │ +0000ea40: 6f6e 616c 2074 7261 6e73 666f 726d 6564 onal transformed │ │ │ │ │ +0000ea50: 2061 7267 756d 656e 742e 0a20 2020 2020 argument.. │ │ │ │ │ +0000ea60: 4e6f 7465 2074 6861 7420 6966 2061 2070 Note that if a p │ │ │ │ │ +0000ea70: 6572 7370 6563 7469 7665 2074 7261 6e73 erspective trans │ │ │ │ │ +0000ea80: 666f 726d 6174 696f 6e20 6861 7320 6265 formation has be │ │ │ │ │ +0000ea90: 656e 2061 7070 6c69 6564 2c20 7468 650a en applied, the. │ │ │ │ │ +0000eaa0: 2020 2020 205a 2d63 6f6f 7264 696e 6174 Z-coordinat │ │ │ │ │ +0000eab0: 6520 6861 7320 6c69 7474 6c65 2067 656f e has little geo │ │ │ │ │ +0000eac0: 6d65 7472 6963 2073 6967 6e69 6669 6361 metric significa │ │ │ │ │ +0000ead0: 6e63 652c 2074 686f 7567 6820 6974 0a20 nce, though it. │ │ │ │ │ +0000eae0: 2020 2020 6163 6375 7261 7465 6c79 2069 accurately i │ │ │ │ │ +0000eaf0: 6e64 6963 6174 6573 2072 656c 6174 6976 ndicates relativ │ │ │ │ │ +0000eb00: 6520 6465 7074 682e 0a20 2020 e280 a220 e depth.. ... │ │ │ │ │ +0000eb10: e280 9823 492d 4ae2 8099 2077 6865 7265 ...#I-J... where │ │ │ │ │ +0000eb20: 2049 2061 6e64 204a 2061 7265 2070 6f73 I and J are pos │ │ │ │ │ +0000eb30: 6974 6976 6520 696e 7465 6765 7273 2069 itive integers i │ │ │ │ │ +0000eb40: 7320 7265 706c 6163 6564 2062 7920 6120 s replaced by a │ │ │ │ │ +0000eb50: 7374 7269 6e67 0a20 2020 2020 e280 987b string. ...{ │ │ │ │ │ +0000eb60: 414e 474c 457d e280 9920 7768 6572 6520 ANGLE}... where │ │ │ │ │ +0000eb70: 414e 474c 4520 6973 2074 6865 2070 6f6c ANGLE is the pol │ │ │ │ │ +0000eb80: 6172 2061 6e67 6c65 206f 6620 6120 7665 ar angle of a ve │ │ │ │ │ +0000eb90: 6374 6f72 2066 726f 6d20 7468 6520 4927 ctor from the I' │ │ │ │ │ +0000eba0: 7468 0a20 2020 2020 706f 696e 7420 696e th. point in │ │ │ │ │ +0000ebb0: 2050 4f49 4e54 5f4c 4953 5420 746f 2074 POINT_LIST to t │ │ │ │ │ +0000ebc0: 6865 204a 2774 6820 706f 696e 7420 7072 he J'th point pr │ │ │ │ │ +0000ebd0: 6f6a 6563 7465 6420 696e 746f 2074 6865 ojected into the │ │ │ │ │ +0000ebe0: 2078 2d79 2070 6c61 6e65 2e0a 2020 2020 x-y plane.. │ │ │ │ │ +0000ebf0: 2049 7420 6973 2061 6e20 6572 726f 7220 It is an error │ │ │ │ │ +0000ec00: 666f 7220 7468 6520 4927 7468 206f 7220 for the I'th or │ │ │ │ │ +0000ec10: 4a27 7468 2061 7267 756d 656e 7420 746f J'th argument to │ │ │ │ │ +0000ec20: 2062 6520 6120 7363 616c 6172 206f 7220 be a scalar or │ │ │ │ │ +0000ec30: 610a 2020 2020 2076 6563 746f 722e 0a20 a. vector.. │ │ │ │ │ +0000ec40: 2020 e280 a220 e280 9823 7b49 2d4a 7de2 ... ...#{I-J}. │ │ │ │ │ +0000ec50: 8099 2069 7320 616c 736f 2072 6570 6c61 .. is also repla │ │ │ │ │ +0000ec60: 6365 6420 6173 2061 626f 7665 2e0a 2020 ced as above.. │ │ │ │ │ +0000ec70: 20e2 80a2 20e2 8098 2323 e280 9920 6973 ... ...##... is │ │ │ │ │ +0000ec80: 2072 6570 6c61 6365 6420 7769 7468 20e2 replaced with . │ │ │ │ │ +0000ec90: 8098 23e2 8099 2e0a 5468 6520 666f 726d ..#.....The form │ │ │ │ │ +0000eca0: 7320 7769 7468 2062 7261 6365 7320 e280 s with braces .. │ │ │ │ │ +0000ecb0: 987b 207d e280 9920 6172 6520 7573 6566 .{ }... are usef │ │ │ │ │ +0000ecc0: 756c 2077 6865 6e20 7468 6520 6172 6775 ul when the argu │ │ │ │ │ +0000ecd0: 6d65 6e74 2069 7320 696d 6d65 6469 6174 ment is immediat │ │ │ │ │ +0000ece0: 656c 790a 666f 6c6c 6f77 6564 2062 7920 ely.followed by │ │ │ │ │ +0000ecf0: 6120 6469 6769 7420 6f72 2061 2074 6963 a digit or a tic │ │ │ │ │ +0000ed00: 6b20 6368 6172 6163 7465 7220 7468 6174 k character that │ │ │ │ │ +0000ed10: 2069 7320 7061 7274 206f 6620 7468 6520 is part of the │ │ │ │ │ +0000ed20: 5465 5820 636f 6465 2e0a 0a20 2020 5468 TeX code... Th │ │ │ │ │ +0000ed30: 6520 6f6e 6c79 2075 7365 6675 6c20 6f70 e only useful op │ │ │ │ │ +0000ed40: 7469 6f6e 206f 6620 e280 9873 7065 6369 tion of ...speci │ │ │ │ │ +0000ed50: 616c e280 9920 6973 20e2 8098 6c61 79e2 al... is ...lay. │ │ │ │ │ +0000ed60: 8099 2c20 7768 6963 6820 6465 7465 726d .., which determ │ │ │ │ │ +0000ed70: 696e 6573 2069 6620 7468 650a 7375 6273 ines if the.subs │ │ │ │ │ +0000ed80: 7469 7475 6564 2072 6177 2074 6578 7420 titued raw text │ │ │ │ │ +0000ed90: 6973 2065 6d69 7474 6564 2062 6566 6f72 is emitted befor │ │ │ │ │ +0000eda0: 652c 2061 6674 6572 2c20 6f72 2075 7369 e, after, or usi │ │ │ │ │ +0000edb0: 6e67 2074 6865 2066 6972 7374 2070 6f69 ng the first poi │ │ │ │ │ +0000edc0: 6e74 0a69 6e20 504f 494e 545f 4c49 5354 nt.in POINT_LIST │ │ │ │ │ +0000edd0: 2061 7320 616e 2069 6e64 6963 6174 6f72 as an indicator │ │ │ │ │ +0000ede0: 206f 6620 6465 7074 682e 2020 5468 6573 of depth. Thes │ │ │ │ │ +0000edf0: 6520 6f63 6375 722c 2072 6573 7065 6374 e occur, respect │ │ │ │ │ +0000ee00: 6976 656c 792c 2077 6974 680a e280 986c ively, with....l │ │ │ │ │ +0000ee10: 6179 3d75 6e64 6572 e280 992c 20e2 8098 ay=under..., ... │ │ │ │ │ +0000ee20: 6c61 793d 6f76 6572 e280 992c 2061 6e64 lay=over..., and │ │ │ │ │ +0000ee30: 20e2 8098 6c61 793d 696e e280 992e 2020 ...lay=in.... │ │ │ │ │ +0000ee40: 5365 6520 2a6e 6f74 6520 5370 6563 6961 See *note Specia │ │ │ │ │ +0000ee50: 6c20 6f62 6a65 6374 733a 3a20 616e 640a l objects:: and. │ │ │ │ │ +0000ee60: 2a6e 6f74 6520 5469 6b5a 2f50 4746 2075 *note TikZ/PGF u │ │ │ │ │ +0000ee70: 7365 722d 6465 6669 6e65 6420 7374 796c ser-defined styl │ │ │ │ │ +0000ee80: 6573 3a3a 2066 6f72 2065 7861 6d70 6c65 es:: for example │ │ │ │ │ +0000ee90: 732e 2020 2a4e 6f74 6520 496e 7465 726e s. *Note Intern │ │ │ │ │ +0000eea0: 616c 0a6f 7074 696f 6e73 3a3a 2e0a 0a1f al.options::.... │ │ │ │ │ +0000eeb0: 0a46 696c 653a 2073 6b65 7463 682e 696e .File: sketch.in │ │ │ │ │ +0000eec0: 666f 2c20 204e 6f64 653a 2053 7765 6570 fo, Node: Sweep │ │ │ │ │ +0000eed0: 732c 2020 4e65 7874 3a20 426c 6f63 6b73 s, Next: Blocks │ │ │ │ │ +0000eee0: 2c20 2050 7265 763a 2053 7065 6369 616c , Prev: Special │ │ │ │ │ +0000eef0: 732c 2020 5570 3a20 4472 6177 6162 6c65 s, Up: Drawable │ │ │ │ │ +0000ef00: 730a 0a33 2e32 2e36 2053 7765 6570 730a s..3.2.6 Sweeps. │ │ │ │ │ +0000ef10: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 0a0a 2a53 ------------..*S │ │ │ │ │ +0000ef20: 796e 7461 783a 2a0a 2020 2020 2073 7765 yntax:*. swe │ │ │ │ │ +0000ef30: 6570 207b 204e 2c20 545f 312c 2054 5f32 ep { N, T_1, T_2 │ │ │ │ │ +0000ef40: 2c20 2e2e 2e2c 2054 5f52 207d 5b4f 5054 , ..., T_R }[OPT │ │ │ │ │ +0000ef50: 494f 4e53 5d20 5357 4550 545f 4f42 4a45 IONS] SWEPT_OBJE │ │ │ │ │ +0000ef60: 4354 0a20 2020 2020 7377 6565 7020 7b20 CT. sweep { │ │ │ │ │ +0000ef70: 4e3c 3e2c 2054 5f31 2c20 545f 322c 202e N<>, T_1, T_2, . │ │ │ │ │ +0000ef80: 2e2e 2c20 545f 5220 7d5b 4f50 5449 4f4e .., T_R }[OPTION │ │ │ │ │ +0000ef90: 535d 2053 5745 5054 5f4f 424a 4543 540a S] SWEPT_OBJECT. │ │ │ │ │ +0000efa0: 5468 6520 7377 6565 7020 636f 6e6e 6563 The sweep connec │ │ │ │ │ +0000efb0: 7473 204e 2028 6f72 2070 6572 6861 7073 ts N (or perhaps │ │ │ │ │ +0000efc0: 204e 2b31 2920 636f 7069 6573 206f 6620 N+1) copies of │ │ │ │ │ +0000efd0: 5357 4550 545f 4f42 4a45 4354 2069 6e20 SWEPT_OBJECT in │ │ │ │ │ +0000efe0: 6f72 6465 7220 746f 0a63 7265 6174 6520 order to.create │ │ │ │ │ +0000eff0: 6120 6e65 7720 6f62 6a65 6374 206f 6620 a new object of │ │ │ │ │ +0000f000: 6869 6768 6572 2064 696d 656e 7369 6f6e higher dimension │ │ │ │ │ +0000f010: 2e20 2054 6865 2054 5f49 2028 666f 7220 . The T_I (for │ │ │ │ │ +0000f020: 6920 6265 7477 6565 6e20 3120 616e 640a i between 1 and. │ │ │ │ │ +0000f030: 7229 2061 7265 2074 7261 6e73 666f 726d r) are transform │ │ │ │ │ +0000f040: 732e 2020 5468 6520 6b27 7468 2063 6f70 s. The k'th cop │ │ │ │ │ +0000f050: 7920 6f66 2053 5745 5054 5f4f 424a 4543 y of SWEPT_OBJEC │ │ │ │ │ +0000f060: 5420 6973 2070 726f 6475 6365 6420 6279 T is produced by │ │ │ │ │ +0000f070: 0a61 7070 6c79 696e 6720 7468 6520 666f .applying the fo │ │ │ │ │ +0000f080: 6c6c 6f77 696e 6720 7472 616e 7366 6f72 llowing transfor │ │ │ │ │ +0000f090: 6d20 746f 2074 6865 206f 7269 6769 6e61 m to the origina │ │ │ │ │ +0000f0a0: 6c2e 0a20 2020 2020 545f 315e 6b20 7468 l.. T_1^k th │ │ │ │ │ +0000f0b0: 656e 2054 5f32 5e6b 2074 6865 6e20 2e2e en T_2^k then .. │ │ │ │ │ +0000f0c0: 2e20 7468 656e 2054 5f52 5e6b 0a48 6572 . then T_R^k.Her │ │ │ │ │ +0000f0d0: 6520 545e 6b20 6d65 616e 7320 2274 7261 e T^k means "tra │ │ │ │ │ +0000f0e0: 6e73 666f 726d 2054 2061 7070 6c69 6564 nsform T applied │ │ │ │ │ +0000f0f0: 206b 2074 696d 6573 2e22 2020 5468 6520 k times." The │ │ │ │ │ +0000f100: 6f72 6967 696e 616c 206f 626a 6563 7420 original object │ │ │ │ │ +0000f110: 6973 0a74 6865 207a 6572 6f27 7468 2063 is.the zero'th c │ │ │ │ │ +0000f120: 6f70 792c 2077 6974 6820 6b3d 3020 616e opy, with k=0 an │ │ │ │ │ +0000f130: 6420 6566 6665 6374 6976 656c 7920 6e6f d effectively no │ │ │ │ │ +0000f140: 2074 7261 6e73 666f 726d 2061 7070 6c69 transform appli │ │ │ │ │ +0000f150: 6564 2028 545e 303d 492c 0a74 6865 2069 ed (T^0=I,.the i │ │ │ │ │ +0000f160: 6465 6e74 6974 7920 7472 616e 7366 6f72 dentity transfor │ │ │ │ │ +0000f170: 6d29 2e0a 0a20 2020 5468 6520 6d65 7468 m)... The meth │ │ │ │ │ +0000f180: 6f64 206f 6620 636f 6e6e 6563 7469 6e67 od of connecting │ │ │ │ │ +0000f190: 2074 6865 2063 6f70 6965 7320 6465 7065 the copies depe │ │ │ │ │ +0000f1a0: 6e64 7320 6f6e 2074 6865 2074 7970 6520 nds on the type │ │ │ │ │ +0000f1b0: 6f66 0a53 5745 5054 5f4f 424a 4543 5420 of.SWEPT_OBJECT │ │ │ │ │ +0000f1c0: 616e 6420 6f6e 2077 6865 7468 6572 2074 and on whether t │ │ │ │ │ +0000f1d0: 6865 2063 6c6f 7375 7265 2074 6167 20e2 he closure tag . │ │ │ │ │ +0000f1e0: 8098 3c3e e280 9920 6973 2070 7265 7365 ..<>... is prese │ │ │ │ │ +0000f1f0: 6e74 206f 7220 6e6f 742e 0a0a 2020 2041 nt or not... A │ │ │ │ │ +0000f200: 6e20 6578 616d 706c 6520 6f66 2061 2073 n example of a s │ │ │ │ │ +0000f210: 7765 6570 2077 6865 7265 2072 3d32 2069 weep where r=2 i │ │ │ │ │ +0000f220: 7320 7468 6520 4d6f 6269 7573 2066 6967 s the Mobius fig │ │ │ │ │ +0000f230: 7572 6520 6174 202a 6e6f 7465 204d 6f72 ure at *note Mor │ │ │ │ │ +0000f240: 6520 746f 0a6c 6561 726e 3a3a 2e0a 0a2a e to.learn::...* │ │ │ │ │ +0000f250: 204d 656e 753a 0a0a 2a20 5377 6570 7420 Menu:..* Swept │ │ │ │ │ +0000f260: 706f 696e 7473 3a3a 2020 2020 2020 2020 points:: │ │ │ │ │ +0000f270: 2020 2020 2020 2020 5377 6570 7420 706f Swept po │ │ │ │ │ +0000f280: 696e 7473 206d 616b 6520 6c69 6e65 7320 ints make lines │ │ │ │ │ +0000f290: 6f72 2070 6f6c 7967 6f6e 732e 0a2a 2053 or polygons..* S │ │ │ │ │ +0000f2a0: 7765 7074 206c 696e 6573 3a3a 2020 2020 wept lines:: │ │ │ │ │ +0000f2b0: 2020 2020 2020 2020 2020 2020 2053 7765 Swe │ │ │ │ │ +0000f2c0: 7074 206c 696e 6573 206d 616b 6520 6f70 pt lines make op │ │ │ │ │ +0000f2d0: 656e 206f 7220 636c 6f73 6564 2073 7572 en or closed sur │ │ │ │ │ +0000f2e0: 6661 6365 732e 0a2a 2053 7765 7074 2070 faces..* Swept p │ │ │ │ │ +0000f2f0: 6f6c 7967 6f6e 733a 3a20 2020 2020 2020 olygons:: │ │ │ │ │ +0000f300: 2020 2020 2020 2053 7765 7074 2070 6f6c Swept pol │ │ │ │ │ +0000f310: 7967 6f6e 7320 6d61 6b65 2063 6c6f 7365 ygons make close │ │ │ │ │ +0000f320: 6420 7375 7266 6163 6573 2e0a 2a20 5377 d surfaces..* Sw │ │ │ │ │ +0000f330: 6570 7420 626c 6f63 6b73 3a3a 2020 2020 ept blocks:: │ │ │ │ │ +0000f340: 2020 2020 2020 2020 2020 2020 5377 6570 Swep │ │ │ │ │ +0000f350: 7420 626c 6f63 6b20 e289 a120 626c 6f63 t block ... bloc │ │ │ │ │ +0000f360: 6b20 6f66 2073 7765 6570 732e 0a2a 2053 k of sweeps..* S │ │ │ │ │ +0000f370: 7765 6570 2066 6163 6520 7370 6c69 7474 weep face splitt │ │ │ │ │ +0000f380: 696e 673a 3a20 2020 2020 2020 2046 6978 ing:: Fix │ │ │ │ │ +0000f390: 696e 6720 7761 7270 6564 2066 6163 6573 ing warped faces │ │ │ │ │ +0000f3a0: 2077 6974 6820 7472 6961 6e67 6c65 732e with triangles. │ │ │ │ │ +0000f3b0: 0a0a 1f0a 4669 6c65 3a20 736b 6574 6368 ....File: sketch │ │ │ │ │ +0000f3c0: 2e69 6e66 6f2c 2020 4e6f 6465 3a20 5377 .info, Node: Sw │ │ │ │ │ +0000f3d0: 6570 7420 706f 696e 7473 2c20 204e 6578 ept points, Nex │ │ │ │ │ +0000f3e0: 743a 2053 7765 7074 206c 696e 6573 2c20 t: Swept lines, │ │ │ │ │ +0000f3f0: 2050 7265 763a 2053 7765 6570 732c 2020 Prev: Sweeps, │ │ │ │ │ +0000f400: 5570 3a20 5377 6565 7073 0a0a 332e 322e Up: Sweeps..3.2. │ │ │ │ │ +0000f410: 362e 3120 5377 6570 7420 706f 696e 7473 6.1 Swept points │ │ │ │ │ +0000f420: 0a2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e ................ │ │ │ │ │ +0000f430: 2e2e 2e2e 2e0a 0a49 6620 5357 4550 545f .......If SWEPT_ │ │ │ │ │ +0000f440: 4f42 4a45 4354 2069 7320 6120 706f 696e OBJECT is a poin │ │ │ │ │ +0000f450: 7420 6c69 7374 2061 6e64 2074 6865 7265 t list and there │ │ │ │ │ +0000f460: 2069 7320 6e6f 2063 6c6f 7375 7265 2074 is no closure t │ │ │ │ │ +0000f470: 6167 2c20 7468 656e 0ae2 8098 7377 6565 ag, then....swee │ │ │ │ │ +0000f480: 70e2 8099 2063 6f6e 6e65 6374 7320 4e2b p... connects N+ │ │ │ │ │ +0000f490: 3120 7375 6363 6573 7369 7665 2063 6f70 1 successive cop │ │ │ │ │ +0000f4a0: 6965 7320 6f66 2065 6163 6820 706f 696e ies of each poin │ │ │ │ │ +0000f4b0: 7420 2869 6e63 6c75 6469 6e67 2074 6865 t (including the │ │ │ │ │ +0000f4c0: 0a6f 7269 6769 6e61 6c29 2077 6974 6820 .original) with │ │ │ │ │ +0000f4d0: 7374 7261 6967 6874 206c 696e 6520 7365 straight line se │ │ │ │ │ +0000f4e0: 676d 656e 7473 2074 6f20 666f 726d 2061 gments to form a │ │ │ │ │ +0000f4f0: 2070 6f6c 796c 696e 652e 2020 4966 2074 polyline. If t │ │ │ │ │ +0000f500: 6865 7265 2061 7265 0a6d 2070 6f69 6e74 here are.m point │ │ │ │ │ +0000f510: 7320 696e 2074 6865 206f 7269 6769 6e61 s in the origina │ │ │ │ │ +0000f520: 6c20 706f 696e 7420 6c69 7374 2c20 7468 l point list, th │ │ │ │ │ +0000f530: 656e 206d 2070 6f6c 796c 696e 6573 2077 en m polylines w │ │ │ │ │ +0000f540: 6974 6820 4e20 7365 676d 656e 7473 0a65 ith N segments.e │ │ │ │ │ +0000f550: 6163 6820 6172 6520 666f 726d 6564 2062 ach are formed b │ │ │ │ │ +0000f560: 7920 7468 6520 7377 6565 702e 2020 496e y the sweep. In │ │ │ │ │ +0000f570: 2074 6869 7320 6d61 6e6e 6572 2c20 e280 this manner, .. │ │ │ │ │ +0000f580: 9873 7765 6570 e280 9920 666f 726d 7320 .sweep... forms │ │ │ │ │ +0000f590: 6120 7365 7420 6f66 0a6f 6e65 2d64 696d a set of.one-dim │ │ │ │ │ +0000f5a0: 656e 7369 6f6e 616c 206f 626a 6563 7473 ensional objects │ │ │ │ │ +0000f5b0: 2028 706f 6c79 6c69 6e65 7329 2066 726f (polylines) fro │ │ │ │ │ +0000f5c0: 6d20 7a65 726f 2d64 696d 656e 7369 6f6e m zero-dimension │ │ │ │ │ +0000f5d0: 616c 206f 6e65 7320 2870 6f69 6e74 7329 al ones (points) │ │ │ │ │ +0000f5e0: 2e0a 0a20 2020 5768 656e 2074 6865 7265 ... When there │ │ │ │ │ +0000f5f0: 205f 6973 5f20 6120 636c 6f73 7572 6520 _is_ a closure │ │ │ │ │ +0000f600: 7461 672c 20e2 8098 7377 6565 70e2 8099 tag, ...sweep... │ │ │ │ │ +0000f610: 2063 6f6e 6e65 6374 7320 4e20 7375 6363 connects N succ │ │ │ │ │ +0000f620: 6573 7369 7665 2063 6f70 6965 730a 6f66 essive copies.of │ │ │ │ │ +0000f630: 2065 6163 6820 706f 696e 7420 2869 6e63 each point (inc │ │ │ │ │ +0000f640: 6c75 6469 6e67 2074 6865 206f 7269 6769 luding the origi │ │ │ │ │ +0000f650: 6e61 6c29 2077 6974 6820 7374 7261 6967 nal) with straig │ │ │ │ │ +0000f660: 6874 206c 696e 6520 7365 676d 656e 7473 ht line segments │ │ │ │ │ +0000f670: 2061 6e64 0a66 696e 616c 6c79 2063 6f6e and.finally con │ │ │ │ │ +0000f680: 6e65 6374 7320 7468 6520 6c61 7374 2063 nects the last c │ │ │ │ │ +0000f690: 6f70 7920 6261 636b 2074 6f20 7468 6520 opy back to the │ │ │ │ │ +0000f6a0: 6f72 6967 696e 616c 2074 6f20 666f 726d original to form │ │ │ │ │ +0000f6b0: 2061 2070 6f6c 7967 6f6e 0a77 6974 6820 a polygon.with │ │ │ │ │ +0000f6c0: 4e20 7369 6465 732e 2020 4966 2074 6865 N sides. If the │ │ │ │ │ +0000f6d0: 7265 2061 7265 206d 2070 6f69 6e74 7320 re are m points │ │ │ │ │ +0000f6e0: 696e 2074 6865 206f 7269 6769 6e61 6c20 in the original │ │ │ │ │ +0000f6f0: 706f 696e 7420 6c69 7374 2c20 7468 656e point list, then │ │ │ │ │ +0000f700: 206d 0a70 6f6c 7967 6f6e 7320 7769 7468 m.polygons with │ │ │ │ │ +0000f710: 204e 2073 6964 6573 2065 6163 6820 6172 N sides each ar │ │ │ │ │ +0000f720: 6520 666f 726d 6564 2062 7920 7468 6520 e formed by the │ │ │ │ │ +0000f730: 7377 6565 702e 2020 496e 2074 6869 7320 sweep. In this │ │ │ │ │ +0000f740: 6d61 6e6e 6572 2c0a e280 9873 7765 6570 manner,....sweep │ │ │ │ │ +0000f750: e280 9920 666f 726d 7320 6120 7365 7420 ... forms a set │ │ │ │ │ +0000f760: 6f66 2074 776f 2d64 696d 656e 7369 6f6e of two-dimension │ │ │ │ │ +0000f770: 616c 206f 626a 6563 7473 2028 706f 6c79 al objects (poly │ │ │ │ │ +0000f780: 676f 6e73 2920 6672 6f6d 0a7a 6572 6f2d gons) from.zero- │ │ │ │ │ +0000f790: 6469 6d65 6e73 696f 6e61 6c20 6f6e 6573 dimensional ones │ │ │ │ │ +0000f7a0: 2028 706f 696e 7473 292e 0a0a 2020 204f (points)... O │ │ │ │ │ +0000f7b0: 7074 696f 6e73 206f 6620 7468 6520 e280 ptions of the .. │ │ │ │ │ +0000f7c0: 9873 7765 6570 e280 9920 6172 6520 636f .sweep... are co │ │ │ │ │ +0000f7d0: 7069 6564 2064 6972 6563 746c 7920 746f pied directly to │ │ │ │ │ +0000f7e0: 2074 6865 2072 6573 756c 7469 6e67 0a70 the resulting.p │ │ │ │ │ +0000f7f0: 6f6c 796c 696e 6528 7329 2e0a 0a1f 0a46 olyline(s).....F │ │ │ │ │ +0000f800: 696c 653a 2073 6b65 7463 682e 696e 666f ile: sketch.info │ │ │ │ │ +0000f810: 2c20 204e 6f64 653a 2053 7765 7074 206c , Node: Swept l │ │ │ │ │ +0000f820: 696e 6573 2c20 204e 6578 743a 2053 7765 ines, Next: Swe │ │ │ │ │ +0000f830: 7074 2070 6f6c 7967 6f6e 732c 2020 5072 pt polygons, Pr │ │ │ │ │ +0000f840: 6576 3a20 5377 6570 7420 706f 696e 7473 ev: Swept points │ │ │ │ │ +0000f850: 2c20 2055 703a 2053 7765 6570 730a 0a33 , Up: Sweeps..3 │ │ │ │ │ +0000f860: 2e32 2e36 2e32 2053 7765 7074 206c 696e .2.6.2 Swept lin │ │ │ │ │ +0000f870: 6573 0a2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e es.............. │ │ │ │ │ +0000f880: 2e2e 2e2e 2e2e 0a0a 4966 2053 5745 5054 ........If SWEPT │ │ │ │ │ +0000f890: 5f4f 424a 4543 5420 6973 2061 2070 6f6c _OBJECT is a pol │ │ │ │ │ +0000f8a0: 796c 696e 6520 616e 6420 7468 6572 6520 yline and there │ │ │ │ │ +0000f8b0: 6973 206e 6f20 636c 6f73 7572 6520 7461 is no closure ta │ │ │ │ │ +0000f8c0: 672c 2074 6865 6e20 e280 9873 7765 6570 g, then ...sweep │ │ │ │ │ +0000f8d0: e280 990a 636f 6e6e 6563 7473 204e 2b31 ....connects N+1 │ │ │ │ │ +0000f8e0: 2073 7563 6365 7373 6976 6520 636f 7069 successive copi │ │ │ │ │ +0000f8f0: 6573 206f 6620 7468 6520 706f 6c79 6c69 es of the polyli │ │ │ │ │ +0000f900: 6e65 2028 696e 636c 7564 696e 6720 7468 ne (including th │ │ │ │ │ +0000f910: 6520 6f72 6967 696e 616c 290a 7769 7468 e original).with │ │ │ │ │ +0000f920: 2066 6f75 722d 7369 6465 6420 706f 6c79 four-sided poly │ │ │ │ │ +0000f930: 676f 6e73 2c20 6561 6368 2070 6169 7220 gons, each pair │ │ │ │ │ +0000f940: 6f66 2063 6f70 6965 7320 6769 7669 6e67 of copies giving │ │ │ │ │ +0000f950: 2072 6973 6520 746f 2061 2022 706f 6c79 rise to a "poly │ │ │ │ │ +0000f960: 676f 6e0a 7374 7269 702e 2220 2049 6620 gon.strip." If │ │ │ │ │ +0000f970: 7468 6572 6520 6172 6520 6d20 706f 696e there are m poin │ │ │ │ │ +0000f980: 7473 2069 6e20 7468 6520 6f72 6967 696e ts in the origin │ │ │ │ │ +0000f990: 616c 2070 6f6c 796c 696e 652c 2074 6865 al polyline, the │ │ │ │ │ +0000f9a0: 6e20 286d 2d31 294e 0a70 6f6c 7967 6f6e n (m-1)N.polygon │ │ │ │ │ +0000f9b0: 7320 6172 6520 666f 726d 6564 2062 7920 s are formed by │ │ │ │ │ +0000f9c0: 7468 6520 7377 6565 702e 2020 5765 2063 the sweep. We c │ │ │ │ │ +0000f9d0: 616c 6c20 7468 6573 6520 e280 9c62 6f64 all these ...bod │ │ │ │ │ +0000f9e0: 7920 706f 6c79 676f 6e73 e280 9d2e 2020 y polygons.... │ │ │ │ │ +0000f9f0: 496e 0a74 6869 7320 6d61 6e6e 6572 2c20 In.this manner, │ │ │ │ │ +0000fa00: e280 9873 7765 6570 e280 9920 666f 726d ...sweep... form │ │ │ │ │ +0000fa10: 7320 6120 7477 6f2d 6469 6d65 6e73 696f s a two-dimensio │ │ │ │ │ +0000fa20: 6e61 6c20 7375 7266 6163 6520 6672 6f6d nal surface from │ │ │ │ │ +0000fa30: 2066 726f 6d20 610a 6f6e 652d 6469 6d65 from a.one-dime │ │ │ │ │ +0000fa40: 6e73 696f 6e61 6c20 706f 6c79 6c69 6e65 nsional polyline │ │ │ │ │ +0000fa50: 2e0a 0a20 2020 5468 6520 6f72 6465 7220 ... The order │ │ │ │ │ +0000fa60: 6f66 2076 6572 7469 6365 7320 7072 6f64 of vertices prod │ │ │ │ │ +0000fa70: 7563 6564 2062 7920 e280 9873 7765 6570 uced by ...sweep │ │ │ │ │ +0000fa80: e280 9920 6973 2069 6d70 6f72 7461 6e74 ... is important │ │ │ │ │ +0000fa90: 2e20 2049 6620 610a 706f 6c79 676f 6e27 . If a.polygon' │ │ │ │ │ +0000faa0: 7320 7665 7274 6963 6573 2064 6f20 6e6f s vertices do no │ │ │ │ │ +0000fab0: 7420 6170 7065 6172 2069 6e20 636f 756e t appear in coun │ │ │ │ │ +0000fac0: 7465 722d 636c 6f63 6b77 6973 6520 6f72 ter-clockwise or │ │ │ │ │ +0000fad0: 6465 7220 696e 2074 6865 2066 696e 616c der in the final │ │ │ │ │ +0000fae0: 0a69 6d61 6765 2c20 7468 6520 706f 6c79 .image, the poly │ │ │ │ │ +0000faf0: 676f 6e20 7769 6c6c 2062 6520 6375 6c6c gon will be cull │ │ │ │ │ +0000fb00: 6564 2028 756e 6c65 7373 20e2 8098 6375 ed (unless ...cu │ │ │ │ │ +0000fb10: 6c6c 3d66 616c 7365 e280 9920 6973 2073 ll=false... is s │ │ │ │ │ +0000fb20: 6574 292e 2020 4966 2074 6865 0a70 6f69 et). If the.poi │ │ │ │ │ +0000fb30: 6e74 7320 696e 2074 6865 206b 2774 6820 nts in the k'th │ │ │ │ │ +0000fb40: 636f 7079 206f 6620 7468 6520 706f 6c79 copy of the poly │ │ │ │ │ +0000fb50: 6c69 6e65 2061 7265 2050 5f31 2c20 505f line are P_1, P_ │ │ │ │ │ +0000fb60: 322c 202e 2e2e 2c20 505f 6d2c 2061 6e64 2, ..., P_m, and │ │ │ │ │ +0000fb70: 2074 6865 0a70 6f69 6e74 7320 696e 2074 the.points in t │ │ │ │ │ +0000fb80: 6865 206e 6578 7420 636f 7079 2c20 7468 he next copy, th │ │ │ │ │ +0000fb90: 6520 286b 2b31 2973 742c 2061 7265 2050 e (k+1)st, are P │ │ │ │ │ +0000fba0: 5f31 272c 2050 5f32 272c 202e 2e2e 2c20 _1', P_2', ..., │ │ │ │ │ +0000fbb0: 505f 6d27 2c20 7468 656e 0a74 6865 2076 P_m', then.the v │ │ │ │ │ +0000fbc0: 6572 7465 7820 6f72 6465 7220 6f66 2074 ertex order of t │ │ │ │ │ +0000fbd0: 6865 2067 656e 6572 6174 6564 2070 6f6c he generated pol │ │ │ │ │ +0000fbe0: 7967 6f6e 7320 6973 0a20 2020 2020 426f ygons is. Bo │ │ │ │ │ +0000fbf0: 6479 2070 6f6c 7967 6f6e 2031 3a20 505f dy polygon 1: P_ │ │ │ │ │ +0000fc00: 3220 505f 3120 505f 3127 2050 5f32 270a 2 P_1 P_1' P_2'. │ │ │ │ │ +0000fc10: 2020 2020 2042 6f64 7920 706f 6c79 676f Body polygo │ │ │ │ │ +0000fc20: 6e20 323a 2050 5f33 2050 5f32 2050 5f32 n 2: P_3 P_2 P_2 │ │ │ │ │ +0000fc30: 2720 505f 3327 0a20 2020 2020 2e2e 2e0a ' P_3'. .... │ │ │ │ │ +0000fc40: 2020 2020 2042 6f64 7920 706f 6c79 676f Body polygo │ │ │ │ │ +0000fc50: 6e20 6d2d 313a 2050 5f6d 2050 5f7b 6d2d n m-1: P_m P_{m- │ │ │ │ │ +0000fc60: 317d 2050 5f7b 6d2d 317d 2720 505f 6d27 1} P_{m-1}' P_m' │ │ │ │ │ +0000fc70: 0a0a 2020 204f 7074 696f 6e73 206f 6620 .. Options of │ │ │ │ │ +0000fc80: 756e 636c 6f73 6564 206c 696e 6520 7377 unclosed line sw │ │ │ │ │ +0000fc90: 6565 7073 2061 7265 2063 6f70 6965 6420 eeps are copied │ │ │ │ │ +0000fca0: 746f 2065 6163 6820 6f75 7470 7574 2070 to each output p │ │ │ │ │ +0000fcb0: 6f6c 7967 6f6e 2e0a 4f70 7469 6f6e 7320 olygon..Options │ │ │ │ │ +0000fcc0: 6f66 2074 6865 2073 7765 7074 206c 696e of the swept lin │ │ │ │ │ +0000fcd0: 6520 6172 6520 6967 6e6f 7265 642e 0a0a e are ignored... │ │ │ │ │ +0000fce0: 2020 2057 6865 6e20 7468 6572 6520 5f69 When there _i │ │ │ │ │ +0000fcf0: 735f 2061 2063 6c6f 7375 7265 2074 6167 s_ a closure tag │ │ │ │ │ +0000fd00: 2c20 7468 656e 20e2 8098 7377 6565 70e2 , then ...sweep. │ │ │ │ │ +0000fd10: 8099 2063 6f6e 6e65 6374 7320 4e20 7375 .. connects N su │ │ │ │ │ +0000fd20: 6363 6573 7369 7665 0a63 6f70 6965 7320 ccessive.copies │ │ │ │ │ +0000fd30: 6f66 2074 6865 2070 6f6c 796c 696e 6520 of the polyline │ │ │ │ │ +0000fd40: 2869 6e63 6c75 6469 6e67 2074 6865 206f (including the o │ │ │ │ │ +0000fd50: 7269 6769 6e61 6c29 2077 6974 6820 666f riginal) with fo │ │ │ │ │ +0000fd60: 7572 2d73 6964 6564 2062 6f64 790a 706f ur-sided body.po │ │ │ │ │ +0000fd70: 6c79 676f 6e73 206a 7573 7420 6173 2074 lygons just as t │ │ │ │ │ +0000fd80: 6865 2063 6173 6520 7769 7468 206e 6f20 he case with no │ │ │ │ │ +0000fd90: 636c 6f73 7572 6520 7461 672e 2020 4974 closure tag. It │ │ │ │ │ +0000fda0: 2074 6865 6e20 636f 6e6e 6563 7473 2074 then connects t │ │ │ │ │ +0000fdb0: 6865 0a6c 6173 7420 636f 7079 2062 6163 he.last copy bac │ │ │ │ │ +0000fdc0: 6b20 746f 2074 6865 206f 7269 6769 6e61 k to the origina │ │ │ │ │ +0000fdd0: 6c20 746f 2066 6f72 6d20 6120 7269 6262 l to form a ribb │ │ │ │ │ +0000fde0: 6f6e 2d73 6861 7065 6420 7375 7266 6163 on-shaped surfac │ │ │ │ │ +0000fdf0: 6520 7468 6174 0a63 6c6f 7365 7320 6f6e e that.closes on │ │ │ │ │ +0000fe00: 2069 7473 656c 6620 7769 7468 2074 776f itself with two │ │ │ │ │ +0000fe10: 2068 6f6c 6573 2072 656d 6169 6e69 6e67 holes remaining │ │ │ │ │ +0000fe20: 2e0a 0a20 2020 4669 6e61 6c6c 792c 2074 ... Finally, t │ │ │ │ │ +0000fe30: 6865 2073 7765 6570 2061 6464 7320 7477 he sweep adds tw │ │ │ │ │ +0000fe40: 6f20 6d6f 7265 2070 6f6c 7967 6f6e 7320 o more polygons │ │ │ │ │ +0000fe50: 746f 2073 6561 6c20 7468 6520 686f 6c65 to seal the hole │ │ │ │ │ +0000fe60: 7320 616e 6420 666f 726d 0a61 2063 6c6f s and form.a clo │ │ │ │ │ +0000fe70: 7365 6420 7375 7266 6163 6520 7468 6174 sed surface that │ │ │ │ │ +0000fe80: 2c20 6465 7065 6e64 696e 6720 6f6e 2074 , depending on t │ │ │ │ │ +0000fe90: 6865 2073 7765 6570 2074 7261 6e73 666f he sweep transfo │ │ │ │ │ +0000fea0: 726d 732c 206d 6179 2072 6570 7265 7365 rms, may represe │ │ │ │ │ +0000feb0: 6e74 0a74 6865 2062 6f75 6e64 6172 7920 nt.the boundary │ │ │ │ │ +0000fec0: 6f66 2061 2073 6f6c 6964 2e20 2049 6e20 of a solid. In │ │ │ │ │ +0000fed0: 7468 6973 206d 616e 6e65 722c 20e2 8098 this manner, ... │ │ │ │ │ +0000fee0: 7377 6565 70e2 8099 2066 6f72 6d73 2074 sweep... forms t │ │ │ │ │ +0000fef0: 6865 2062 6f75 6e64 6172 7920 6f66 0a61 he boundary of.a │ │ │ │ │ +0000ff00: 2074 6872 6565 2d64 696d 656e 7369 6f6e three-dimension │ │ │ │ │ +0000ff10: 616c 206f 626a 6563 7420 6672 6f6d 2061 al object from a │ │ │ │ │ +0000ff20: 206f 6e65 2d64 696d 656e 7369 6f6e 616c one-dimensional │ │ │ │ │ +0000ff30: 2070 6f6c 796c 696e 652e 2020 5765 2063 polyline. We c │ │ │ │ │ +0000ff40: 616c 6c0a 7468 6573 6520 686f 6c65 2d66 all.these hole-f │ │ │ │ │ +0000ff50: 696c 6c69 6e67 2070 6f6c 7967 6f6e 7320 illing polygons │ │ │ │ │ +0000ff60: e280 9c65 6e64 73e2 809d 2e0a 0a20 2020 ...ends...... │ │ │ │ │ +0000ff70: 5468 6520 6f72 6465 7220 6f66 2076 6572 The order of ver │ │ │ │ │ +0000ff80: 7469 6365 7320 6f66 2065 6e64 2070 6f6c tices of end pol │ │ │ │ │ +0000ff90: 7967 6f6e 7320 6973 2069 6d70 6f72 7461 ygons is importa │ │ │ │ │ +0000ffa0: 6e74 2066 6f72 2063 6f72 7265 6374 0a63 nt for correct.c │ │ │ │ │ +0000ffb0: 756c 6c69 6e67 2061 7320 6465 7363 7269 ulling as descri │ │ │ │ │ +0000ffc0: 6265 6420 6162 6f76 652e 2020 4966 2050 bed above. If P │ │ │ │ │ +0000ffd0: 5f31 5e31 2c20 505f 315e 322c 202e 2e2e _1^1, P_1^2, ... │ │ │ │ │ +0000ffe0: 2c20 505f 315e 6e20 6172 6520 7468 6520 , P_1^n are the │ │ │ │ │ +0000fff0: 4e0a 636f 7069 6573 206f 6620 7468 6520 N.copies of the │ │ │ │ │ +00010000: 6669 7273 7420 706f 6c79 6c69 6e65 2070 first polyline p │ │ │ │ │ +00010010: 6f69 6e74 2061 6e64 2050 5f6d 5e31 2c20 oint and P_m^1, │ │ │ │ │ +00010020: 505f 6d5e 322c 202e 2e2e 202c 505f 6d5e P_m^2, ... ,P_m^ │ │ │ │ │ +00010030: 6e20 6172 6520 7468 650a 4e20 636f 7069 n are the.N copi │ │ │ │ │ +00010040: 6573 206f 6620 7468 6520 6c61 7374 2070 es of the last p │ │ │ │ │ +00010050: 6f6c 796c 696e 6520 706f 696e 742c 2074 olyline point, t │ │ │ │ │ +00010060: 6865 6e20 7468 6520 656e 6420 706f 6c79 hen the end poly │ │ │ │ │ +00010070: 676f 6e20 7665 7274 6578 206f 7264 6572 gon vertex order │ │ │ │ │ +00010080: 0a69 730a 2020 2020 2045 6e64 2070 6f6c .is. End pol │ │ │ │ │ +00010090: 7967 6f6e 2031 3a20 505f 315e 6e2c 2050 ygon 1: P_1^n, P │ │ │ │ │ +000100a0: 5f31 5e7b 6e2d 317d 2c20 2e2e 2e20 2c50 _1^{n-1}, ... ,P │ │ │ │ │ +000100b0: 5f31 5e31 0a20 2020 2020 456e 6420 706f _1^1. End po │ │ │ │ │ +000100c0: 6c79 676f 6e20 323a 2050 5f6d 5e31 2c20 lygon 2: P_m^1, │ │ │ │ │ +000100d0: 505f 6d5e 322c 202e 2e2e 202c 505f 6d5e P_m^2, ... ,P_m^ │ │ │ │ │ +000100e0: 6e0a 0a20 2020 4966 2074 6865 7265 2061 n.. If there a │ │ │ │ │ +000100f0: 7265 206e 6f20 6f70 7469 6f6e 7320 6f6e re no options on │ │ │ │ │ +00010100: 2074 6865 2073 7765 7074 206c 696e 652c the swept line, │ │ │ │ │ +00010110: 2074 6865 6e20 7468 6520 e280 9873 7765 then the ...swe │ │ │ │ │ +00010120: 6570 e280 9920 6f70 7469 6f6e 730a 6172 ep... options.ar │ │ │ │ │ +00010130: 6520 636f 7069 6564 2074 6f20 6561 6368 e copied to each │ │ │ │ │ +00010140: 206f 7574 7075 7420 706f 6c79 676f 6e2e output polygon. │ │ │ │ │ +00010150: 2020 4966 2074 6865 2073 7765 7074 206c If the swept l │ │ │ │ │ +00010160: 696e 6520 646f 6573 2068 6176 6520 6f70 ine does have op │ │ │ │ │ +00010170: 7469 6f6e 732c 0a74 6865 7365 2061 7265 tions,.these are │ │ │ │ │ +00010180: 2063 6f70 6965 6420 746f 2063 6f72 7265 copied to corre │ │ │ │ │ +00010190: 7370 6f6e 6469 6e67 2062 6f64 7920 706f sponding body po │ │ │ │ │ +000101a0: 6c79 676f 6e73 3b20 7468 6520 7377 6565 lygons; the swee │ │ │ │ │ +000101b0: 7020 6f70 7469 6f6e 7320 6172 650a 636f p options are.co │ │ │ │ │ +000101c0: 7069 6564 2074 6f20 7468 6520 656e 6420 pied to the end │ │ │ │ │ +000101d0: 706f 6c79 676f 6e73 2e20 2049 6e20 7468 polygons. In th │ │ │ │ │ +000101e0: 6973 206d 616e 6e65 722c 2062 6f64 7920 is manner, body │ │ │ │ │ +000101f0: 616e 6420 656e 6473 206d 6179 2062 6520 and ends may be │ │ │ │ │ +00010200: 6472 6177 6e0a 7769 7468 2064 6966 6665 drawn.with diffe │ │ │ │ │ +00010210: 7265 6e74 2063 6861 7261 6374 6572 6973 rent characteris │ │ │ │ │ +00010220: 7469 6373 2073 7563 6820 6173 20e2 8098 tics such as ... │ │ │ │ │ +00010230: 6669 6c6c 636f 6c6f 72e2 8099 2e0a 0a1f fillcolor....... │ │ │ │ │ +00010240: 0a46 696c 653a 2073 6b65 7463 682e 696e .File: sketch.in │ │ │ │ │ +00010250: 666f 2c20 204e 6f64 653a 2053 7765 7074 fo, Node: Swept │ │ │ │ │ +00010260: 2070 6f6c 7967 6f6e 732c 2020 4e65 7874 polygons, Next │ │ │ │ │ +00010270: 3a20 5377 6570 7420 626c 6f63 6b73 2c20 : Swept blocks, │ │ │ │ │ +00010280: 2050 7265 763a 2053 7765 7074 206c 696e Prev: Swept lin │ │ │ │ │ +00010290: 6573 2c20 2055 703a 2053 7765 6570 730a es, Up: Sweeps. │ │ │ │ │ +000102a0: 0a33 2e32 2e36 2e33 2053 7765 7074 2070 .3.2.6.3 Swept p │ │ │ │ │ +000102b0: 6f6c 7967 6f6e 730a 2e2e 2e2e 2e2e 2e2e olygons......... │ │ │ │ │ +000102c0: 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 0a0a ................ │ │ │ │ │ +000102d0: 4966 2053 5745 5054 5f4f 424a 4543 5420 If SWEPT_OBJECT │ │ │ │ │ +000102e0: 6973 2061 2070 6f6c 7967 6f6e 2c20 7468 is a polygon, th │ │ │ │ │ +000102f0: 6520 e280 9873 7765 6570 e280 9920 636f e ...sweep... co │ │ │ │ │ +00010300: 6e6e 6563 7473 204e 2b31 2073 7563 6365 nnects N+1 succe │ │ │ │ │ +00010310: 7373 6976 6520 636f 7069 6573 0a6f 6620 ssive copies.of │ │ │ │ │ +00010320: 7468 6520 636c 6f73 6564 2070 6f6c 796c the closed polyl │ │ │ │ │ +00010330: 696e 6520 626f 7264 6572 206f 6620 7468 ine border of th │ │ │ │ │ +00010340: 6520 706f 6c79 676f 6e20 746f 2066 6f72 e polygon to for │ │ │ │ │ +00010350: 6d20 626f 6479 2070 6f6c 7967 6f6e 730a m body polygons. │ │ │ │ │ +00010360: 6578 6163 746c 7920 6173 2074 686f 7567 exactly as thoug │ │ │ │ │ +00010370: 6820 7468 6520 626f 7264 6572 2077 6572 h the border wer │ │ │ │ │ +00010380: 6520 6120 7377 6570 7420 706f 6c79 6c69 e a swept polyli │ │ │ │ │ +00010390: 6e65 2061 7320 6465 7363 7269 6265 6420 ne as described │ │ │ │ │ +000103a0: 696e 202a 6e6f 7465 0a53 7765 7074 206c in *note.Swept l │ │ │ │ │ +000103b0: 696e 6573 3a3a 2e20 2049 6620 7468 6572 ines::. If ther │ │ │ │ │ +000103c0: 6520 6172 6520 6d20 706f 696e 7473 2069 e are m points i │ │ │ │ │ +000103d0: 6e20 7468 6520 6f72 6967 696e 616c 2070 n the original p │ │ │ │ │ +000103e0: 6f6c 7967 6f6e 2c20 7468 656e 206d 4e0a olygon, then mN. │ │ │ │ │ +000103f0: 626f 6479 2070 6f6c 7967 6f6e 7320 6172 body polygons ar │ │ │ │ │ +00010400: 6520 666f 726d 6564 2062 7920 7468 6973 e formed by this │ │ │ │ │ +00010410: 2073 7765 6570 2e20 2054 6865 2062 6f64 sweep. The bod │ │ │ │ │ +00010420: 7920 706f 6c79 676f 6e73 2066 6f72 6d20 y polygons form │ │ │ │ │ +00010430: 616e 0ae2 809c 6578 7472 7573 696f 6ee2 an....extrusion. │ │ │ │ │ +00010440: 809d 206f 6620 7468 6520 626f 756e 6461 .. of the bounda │ │ │ │ │ +00010450: 7279 206f 6620 7468 6520 6f72 6967 696e ry of the origin │ │ │ │ │ +00010460: 616c 2070 6f6c 7967 6f6e 2077 6974 6820 al polygon with │ │ │ │ │ +00010470: 7477 6f20 686f 6c65 7320 6174 0a74 6865 two holes at.the │ │ │ │ │ +00010480: 206f 7065 6e20 656e 6473 2e0a 0a20 2020 open ends... │ │ │ │ │ +00010490: 4669 6e61 6c6c 792c 2074 6865 2073 7765 Finally, the swe │ │ │ │ │ +000104a0: 6570 2061 6464 7320 7477 6f20 636f 7069 ep adds two copi │ │ │ │ │ +000104b0: 6573 206f 6620 7468 6520 6f72 6967 696e es of the origin │ │ │ │ │ +000104c0: 616c 2070 6f6c 7967 6f6e 2074 6f20 636f al polygon to co │ │ │ │ │ +000104d0: 7665 720a 7468 6520 686f 6c65 732e 2020 ver.the holes. │ │ │ │ │ +000104e0: 5765 2063 616c 6c20 7468 6573 6520 686f We call these ho │ │ │ │ │ +000104f0: 6c65 2d66 696c 6c69 6e67 2070 6f6c 7967 le-filling polyg │ │ │ │ │ +00010500: 6f6e 7320 e280 9c65 6e64 73e2 809d 2e20 ons ...ends.... │ │ │ │ │ +00010510: 2049 6e20 7468 6973 206d 616e 6e65 722c In this manner, │ │ │ │ │ +00010520: 0ae2 8098 7377 6565 70e2 8099 2066 6f72 ....sweep... for │ │ │ │ │ +00010530: 6d73 2074 6865 2062 6f75 6e64 6172 7920 ms the boundary │ │ │ │ │ +00010540: 6f66 2061 2074 6872 6565 2d64 696d 656e of a three-dimen │ │ │ │ │ +00010550: 7369 6f6e 616c 206f 626a 6563 7420 6672 sional object fr │ │ │ │ │ +00010560: 6f6d 2061 0a74 776f 2d64 696d 656e 7369 om a.two-dimensi │ │ │ │ │ +00010570: 6f6e 616c 2070 6f6c 7967 6f6e 2e0a 0a20 onal polygon... │ │ │ │ │ +00010580: 2020 5468 6520 6f72 6465 7220 6f66 2076 The order of v │ │ │ │ │ +00010590: 6572 7469 6365 7320 6f66 2065 6e64 2070 ertices of end p │ │ │ │ │ +000105a0: 6f6c 7967 6f6e 7320 6973 2069 6d70 6f72 olygons is impor │ │ │ │ │ +000105b0: 7461 6e74 2066 6f72 2063 6f72 7265 6374 tant for correct │ │ │ │ │ +000105c0: 0a63 756c 6c69 6e67 2061 7320 6465 7363 .culling as desc │ │ │ │ │ +000105d0: 7269 6265 6420 6162 6f76 652e 2020 416e ribed above. An │ │ │ │ │ +000105e0: 2065 7861 6374 2063 6f70 7920 6f66 2074 exact copy of t │ │ │ │ │ +000105f0: 6865 206f 7269 6769 6e61 6c20 706f 6c79 he original poly │ │ │ │ │ +00010600: 676f 6e20 7769 7468 0a76 6572 7465 7820 gon with.vertex │ │ │ │ │ +00010610: 6f72 6465 7220 696e 7461 6374 2066 6f72 order intact for │ │ │ │ │ +00010620: 6d73 2074 6865 2066 6972 7374 2065 6e64 ms the first end │ │ │ │ │ +00010630: 2070 6f6c 7967 6f6e 2e20 2054 6865 206f polygon. The o │ │ │ │ │ +00010640: 7468 6572 2065 6e64 2070 6f6c 7967 6f6e ther end polygon │ │ │ │ │ +00010650: 0a72 6573 756c 7473 2066 726f 6d20 7472 .results from tr │ │ │ │ │ +00010660: 616e 7366 6f72 6d69 6e67 2061 6e64 2074 ansforming and t │ │ │ │ │ +00010670: 6865 2072 6576 6572 7369 6e67 2074 6865 he reversing the │ │ │ │ │ +00010680: 206f 7264 6572 206f 6620 7665 7274 6963 order of vertic │ │ │ │ │ +00010690: 6573 2069 6e20 7468 650a 6f72 6967 696e es in the.origin │ │ │ │ │ +000106a0: 616c 2e20 2054 6865 2074 7261 6e73 666f al. The transfo │ │ │ │ │ +000106b0: 726d 2070 6c61 6365 7320 7468 6520 6f72 rm places the or │ │ │ │ │ +000106c0: 6967 696e 616c 2070 6f6c 7967 6f6e 2061 iginal polygon a │ │ │ │ │ +000106d0: 7420 7468 6520 756e 636f 7665 7265 640a t the uncovered. │ │ │ │ │ +000106e0: 686f 6c65 3b20 6974 2069 730a 2020 2020 hole; it is. │ │ │ │ │ +000106f0: 2054 5f31 5e6e 2074 6865 6e20 545f 325e T_1^n then T_2^ │ │ │ │ │ +00010700: 6e20 7468 656e 202e 2e2e 2074 6865 6e20 n then ... then │ │ │ │ │ +00010710: 545f 525e 6e2e 0a49 6620 7468 6572 6520 T_R^n..If there │ │ │ │ │ +00010720: 6172 6520 6e6f 206f 7074 696f 6e73 206f are no options o │ │ │ │ │ +00010730: 6e20 7468 6520 7377 6570 7420 706f 6c79 n the swept poly │ │ │ │ │ +00010740: 676f 6e2c 2074 6865 6e20 7468 6520 e280 gon, then the .. │ │ │ │ │ +00010750: 9873 7765 6570 e280 9920 6f70 7469 6f6e .sweep... option │ │ │ │ │ +00010760: 730a 6172 6520 636f 7069 6564 2074 6f20 s.are copied to │ │ │ │ │ +00010770: 6561 6368 206f 7574 7075 7420 706f 6c79 each output poly │ │ │ │ │ +00010780: 676f 6e2e 2020 4966 2074 6865 2073 7765 gon. If the swe │ │ │ │ │ +00010790: 7074 2070 6f6c 7967 6f6e 2064 6f65 7320 pt polygon does │ │ │ │ │ +000107a0: 6861 7665 0a6f 7074 696f 6e73 2c20 7468 have.options, th │ │ │ │ │ +000107b0: 6573 6520 6172 6520 636f 7069 6564 2074 ese are copied t │ │ │ │ │ +000107c0: 6f20 7468 6520 656e 6473 3b20 7468 6520 o the ends; the │ │ │ │ │ +000107d0: 7377 6565 7020 6f70 7469 6f6e 7320 6172 sweep options ar │ │ │ │ │ +000107e0: 6520 636f 7069 6564 2074 6f0a 7468 6520 e copied to.the │ │ │ │ │ +000107f0: 626f 6479 2070 6f6c 7967 6f6e 732e 2020 body polygons. │ │ │ │ │ +00010800: 496e 2074 6869 7320 6d61 6e6e 6572 2c20 In this manner, │ │ │ │ │ +00010810: 626f 6479 2061 6e64 2065 6e64 7320 6d61 body and ends ma │ │ │ │ │ +00010820: 7920 6265 2064 7261 776e 2077 6974 680a y be drawn with. │ │ │ │ │ +00010830: 6469 6666 6572 656e 7420 6368 6172 6163 different charac │ │ │ │ │ +00010840: 7465 7269 7374 6963 7320 7375 6368 2061 teristics such a │ │ │ │ │ +00010850: 7320 e280 9866 696c 6c63 6f6c 6f72 e280 s ...fillcolor.. │ │ │ │ │ +00010860: 992e 0a0a 1f0a 4669 6c65 3a20 736b 6574 ......File: sket │ │ │ │ │ +00010870: 6368 2e69 6e66 6f2c 2020 4e6f 6465 3a20 ch.info, Node: │ │ │ │ │ +00010880: 5377 6570 7420 626c 6f63 6b73 2c20 204e Swept blocks, N │ │ │ │ │ +00010890: 6578 743a 2053 7765 6570 2066 6163 6520 ext: Sweep face │ │ │ │ │ +000108a0: 7370 6c69 7474 696e 672c 2020 5072 6576 splitting, Prev │ │ │ │ │ +000108b0: 3a20 5377 6570 7420 706f 6c79 676f 6e73 : Swept polygons │ │ │ │ │ +000108c0: 2c20 2055 703a 2053 7765 6570 730a 0a33 , Up: Sweeps..3 │ │ │ │ │ +000108d0: 2e32 2e36 2e34 2053 7765 7074 2062 6c6f .2.6.4 Swept blo │ │ │ │ │ +000108e0: 636b 730a 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e cks............. │ │ │ │ │ +000108f0: 2e2e 2e2e 2e2e 2e2e 0a0a 5468 6520 7377 ..........The sw │ │ │ │ │ +00010900: 6570 7420 6f62 6a65 6374 2053 5745 5054 ept object SWEPT │ │ │ │ │ +00010910: 5f4f 424a 4543 5420 6d61 7920 616c 736f _OBJECT may also │ │ │ │ │ +00010920: 2062 6520 616e 7920 636f 6c6c 6563 7469 be any collecti │ │ │ │ │ +00010930: 6f6e 206f 6620 706f 6c79 6c69 6e65 730a on of polylines. │ │ │ │ │ +00010940: 616e 6420 706f 6c79 676f 6e73 2e20 2054 and polygons. T │ │ │ │ │ +00010950: 6869 7320 6d61 7920 6265 2061 2062 6c6f his may be a blo │ │ │ │ │ +00010960: 636b 2063 6f6d 706f 7365 6420 6f66 20e2 ck composed of . │ │ │ │ │ +00010970: 8098 6c69 6e65 e280 9920 616e 642f 6f72 ..line... and/or │ │ │ │ │ +00010980: 20e2 8098 706f 6c79 676f 6ee2 8099 0a63 ...polygon....c │ │ │ │ │ +00010990: 6f6d 6d61 6e64 7320 696e 2062 7261 6365 ommands in brace │ │ │ │ │ +000109a0: 7320 e280 987b 207d e280 992c 206f 7220 s ...{ }..., or │ │ │ │ │ +000109b0: 6974 206d 6179 2062 6520 7468 6520 7265 it may be the re │ │ │ │ │ +000109c0: 7375 6c74 206f 6620 6120 e280 9872 6570 sult of a ...rep │ │ │ │ │ +000109d0: 6561 74e2 8099 2c20 616e 6f74 6865 720a eat..., another. │ │ │ │ │ +000109e0: e280 9873 7765 6570 e280 992c 2065 7463 ...sweep..., etc │ │ │ │ │ +000109f0: 2e20 2054 6865 2073 7765 6570 2061 6374 . The sweep act │ │ │ │ │ +00010a00: 7320 696e 6465 7065 6e64 656e 746c 7920 s independently │ │ │ │ │ +00010a10: 6f6e 2065 6163 6820 6f62 6a65 6374 2069 on each object i │ │ │ │ │ +00010a20: 6e20 7468 6520 626c 6f63 6b0a 6578 6163 n the block.exac │ │ │ │ │ +00010a30: 746c 7920 6173 2069 6620 6974 2077 6572 tly as if it wer │ │ │ │ │ +00010a40: 6520 6120 7369 6e67 6c65 2073 7765 7074 e a single swept │ │ │ │ │ +00010a50: 206f 626a 6563 7420 6465 7363 7269 6265 object describe │ │ │ │ │ +00010a60: 6420 6162 6f76 6520 696e 202a 6e6f 7465 d above in *note │ │ │ │ │ +00010a70: 0a53 7765 7074 206c 696e 6573 3a3a 2061 .Swept lines:: a │ │ │ │ │ +00010a80: 6e64 202a 6e6f 7465 2053 7765 7074 2070 nd *note Swept p │ │ │ │ │ +00010a90: 6f6c 7967 6f6e 733a 3a2e 0a0a 1f0a 4669 olygons::.....Fi │ │ │ │ │ +00010aa0: 6c65 3a20 736b 6574 6368 2e69 6e66 6f2c le: sketch.info, │ │ │ │ │ +00010ab0: 2020 4e6f 6465 3a20 5377 6565 7020 6661 Node: Sweep fa │ │ │ │ │ +00010ac0: 6365 2073 706c 6974 7469 6e67 2c20 2050 ce splitting, P │ │ │ │ │ +00010ad0: 7265 763a 2053 7765 7074 2062 6c6f 636b rev: Swept block │ │ │ │ │ +00010ae0: 732c 2020 5570 3a20 5377 6565 7073 0a0a s, Up: Sweeps.. │ │ │ │ │ +00010af0: 332e 322e 362e 3520 5377 6565 7020 6661 3.2.6.5 Sweep fa │ │ │ │ │ +00010b00: 6365 2073 706c 6974 7469 6e67 0a2e 2e2e ce splitting.... │ │ │ │ │ 00010b10: 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e 2e2e ................ │ │ │ │ │ -00010b20: 2e2e 2e0a 0a42 6566 6f72 6520 7365 6e64 .....Before send │ │ │ │ │ -00010b30: 696e 6720 6561 6368 2066 6f75 722d 7369 ing each four-si │ │ │ │ │ -00010b40: 6465 6420 626f 6479 2070 6f6c 7967 6f6e ded body polygon │ │ │ │ │ -00010b50: 206f 6620 6120 e280 9873 7765 6570 e280 of a ...sweep.. │ │ │ │ │ -00010b60: 9920 746f 2074 6865 206f 7574 7075 742c . to the output, │ │ │ │ │ -00010b70: 0ae2 8098 736b 6574 6368 e280 9920 7465 ....sketch... te │ │ │ │ │ -00010b80: 7374 7320 746f 2073 6565 2069 6620 6974 sts to see if it │ │ │ │ │ -00010b90: 2069 7320 726f 7567 686c 7920 706c 616e is roughly plan │ │ │ │ │ -00010ba0: 6172 2e20 2053 696e 6365 2070 6c61 6e61 ar. Since plana │ │ │ │ │ -00010bb0: 7269 7479 2069 730a 6e65 6365 7373 6172 rity is.necessar │ │ │ │ │ -00010bc0: 7920 666f 7220 7072 6f70 6572 2066 756e y for proper fun │ │ │ │ │ -00010bd0: 6374 696f 6e69 6e67 206f 6620 7468 6520 ctioning of the │ │ │ │ │ -00010be0: 6869 6464 656e 2073 7572 6661 6365 2061 hidden surface a │ │ │ │ │ -00010bf0: 6c67 6f72 6974 686d 2c0a 2277 6172 7065 lgorithm,."warpe │ │ │ │ │ -00010c00: 6422 2070 6f6c 7967 6f6e 7320 6172 6520 d" polygons are │ │ │ │ │ -00010c10: 6175 746f 6d61 7469 6361 6c6c 7920 7370 automatically sp │ │ │ │ │ -00010c20: 6c69 7420 696e 746f 2074 776f 2074 7269 lit into two tri │ │ │ │ │ -00010c30: 616e 676c 6573 2e0a 0a20 2020 486f 6c65 angles... Hole │ │ │ │ │ -00010c40: 2d66 696c 6c69 6e67 2070 6f6c 7967 6f6e -filling polygon │ │ │ │ │ -00010c50: 7320 7072 6f64 7563 6564 2062 7920 636c s produced by cl │ │ │ │ │ -00010c60: 6f73 7572 652d 7461 6767 6564 206c 696e osure-tagged lin │ │ │ │ │ -00010c70: 6520 7377 6565 7073 2061 7265 206e 6f74 e sweeps are not │ │ │ │ │ -00010c80: 0a73 706c 6974 2e20 204e 6f72 2061 7265 .split. Nor are │ │ │ │ │ -00010c90: 206f 7269 6769 6e61 6c20 706f 6c79 676f original polygo │ │ │ │ │ -00010ca0: 6e73 2069 6e20 706f 6c79 676f 6e20 7377 ns in polygon sw │ │ │ │ │ -00010cb0: 6565 7073 2e20 2049 7420 6973 2074 6865 eeps. It is the │ │ │ │ │ -00010cc0: 2075 7365 7227 730a 7265 7370 6f6e 7369 user's.responsi │ │ │ │ │ -00010cd0: 6269 6c69 7479 2074 6f20 656e 7375 7265 bility to ensure │ │ │ │ │ -00010ce0: 2074 6865 7365 2061 7265 2070 6c61 6e61 these are plana │ │ │ │ │ -00010cf0: 722e 0a0a 1f0a 4669 6c65 3a20 736b 6574 r.....File: sket │ │ │ │ │ -00010d00: 6368 2e69 6e66 6f2c 2020 4e6f 6465 3a20 ch.info, Node: │ │ │ │ │ -00010d10: 426c 6f63 6b73 2c20 204e 6578 743a 2052 Blocks, Next: R │ │ │ │ │ -00010d20: 6570 6561 7473 2c20 2050 7265 763a 2053 epeats, Prev: S │ │ │ │ │ -00010d30: 7765 6570 732c 2020 5570 3a20 4472 6177 weeps, Up: Draw │ │ │ │ │ -00010d40: 6162 6c65 730a 0a33 2e32 2e37 2042 6c6f ables..3.2.7 Blo │ │ │ │ │ -00010d50: 636b 730a 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d cks.------------ │ │ │ │ │ -00010d60: 0a0a 416e 7920 7365 7175 656e 6365 206f ..Any sequence o │ │ │ │ │ -00010d70: 6620 6472 6177 6162 6c65 7320 6d61 7920 f drawables may │ │ │ │ │ -00010d80: 6265 2067 726f 7570 6564 2069 6e20 6120 be grouped in a │ │ │ │ │ -00010d90: e280 9c62 6c6f 636b e280 9d20 6d65 7265 ...block... mere │ │ │ │ │ -00010da0: 6c79 2062 790a 656e 636c 6f73 696e 6720 ly by.enclosing │ │ │ │ │ -00010db0: 7468 656d 2069 6e20 6272 6163 6573 20e2 them in braces . │ │ │ │ │ -00010dc0: 8098 7b20 7de2 8099 2e20 2041 2062 6c6f ..{ }.... A blo │ │ │ │ │ -00010dd0: 636b 2069 7320 6974 7365 6c66 2064 7261 ck is itself dra │ │ │ │ │ -00010de0: 7761 626c 652e 2020 4120 6b65 7920 7573 wable. A key us │ │ │ │ │ -00010df0: 650a 6f66 2062 6c6f 636b 7320 6973 2074 e.of blocks is t │ │ │ │ │ -00010e00: 6f20 6578 7465 6e64 2074 6865 2065 6666 o extend the eff │ │ │ │ │ -00010e10: 6563 7420 6f66 2061 2073 696e 676c 6520 ect of a single │ │ │ │ │ -00010e20: e280 9864 6566 e280 992c 202a 6e6f 7465 ...def..., *note │ │ │ │ │ -00010e30: 0a44 6566 696e 6974 696f 6e73 3a3a 2c20 .Definitions::, │ │ │ │ │ -00010e40: e280 9870 7574 e280 9920 2a6e 6f74 6520 ...put... *note │ │ │ │ │ -00010e50: 5075 7473 3a3a 2c20 e280 9873 7765 6570 Puts::, ...sweep │ │ │ │ │ -00010e60: e280 9920 2a6e 6f74 6520 5377 6565 7073 ... *note Sweeps │ │ │ │ │ -00010e70: 3a3a 2c20 6f72 20e2 8098 7265 7065 6174 ::, or ...repeat │ │ │ │ │ -00010e80: e280 990a 2a6e 6f74 6520 5265 7065 6174 ....*note Repeat │ │ │ │ │ -00010e90: 733a 3a20 746f 2069 6e63 6c75 6465 2073 s:: to include s │ │ │ │ │ -00010ea0: 6576 6572 616c 206f 626a 6563 7473 2072 everal objects r │ │ │ │ │ -00010eb0: 6174 6865 7220 7468 616e 206f 6e65 2e0a ather than one.. │ │ │ │ │ -00010ec0: 0a20 2020 4465 6669 6e69 7469 6f6e 7320 . Definitions │ │ │ │ │ -00010ed0: 282a 4e6f 7465 2044 6566 696e 6974 696f (*Note Definitio │ │ │ │ │ -00010ee0: 6e73 3a3a 2e29 2020 696e 7369 6465 2061 ns::.) inside a │ │ │ │ │ -00010ef0: 2062 6c6f 636b 2068 6176 6520 e280 9c6c block have ...l │ │ │ │ │ -00010f00: 6578 6963 616c 0a73 636f 7065 e280 9d20 exical.scope... │ │ │ │ │ -00010f10: 6578 7465 6e64 696e 6720 6672 6f6d 2074 extending from t │ │ │ │ │ -00010f20: 6865 2070 6c61 6365 206f 6620 6465 6669 he place of defi │ │ │ │ │ -00010f30: 6e69 7469 6f6e 2074 6f20 7468 6520 656e nition to the en │ │ │ │ │ -00010f40: 6420 6f66 2074 6865 2062 6c6f 636b 2e0a d of the block.. │ │ │ │ │ -00010f50: 0a1f 0a46 696c 653a 2073 6b65 7463 682e ...File: sketch. │ │ │ │ │ -00010f60: 696e 666f 2c20 204e 6f64 653a 2052 6570 info, Node: Rep │ │ │ │ │ -00010f70: 6561 7473 2c20 204e 6578 743a 2050 7574 eats, Next: Put │ │ │ │ │ -00010f80: 732c 2020 5072 6576 3a20 426c 6f63 6b73 s, Prev: Blocks │ │ │ │ │ -00010f90: 2c20 2055 703a 2044 7261 7761 626c 6573 , Up: Drawables │ │ │ │ │ -00010fa0: 0a0a 332e 322e 3820 5265 7065 6174 730a ..3.2.8 Repeats. │ │ │ │ │ -00010fb0: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d0a 0a2a -------------..* │ │ │ │ │ -00010fc0: 5379 6e74 6178 3a2a 0a20 2020 2020 7265 Syntax:*. re │ │ │ │ │ -00010fd0: 7065 6174 207b 204e 2c20 545f 312c 2054 peat { N, T_1, T │ │ │ │ │ -00010fe0: 5f32 2c20 2e2e 2e2c 2054 5f52 207d 2052 _2, ..., T_R } R │ │ │ │ │ -00010ff0: 4550 4541 5445 445f 4f42 4a45 4354 0a54 EPEATED_OBJECT.T │ │ │ │ │ -00011000: 6865 2072 6570 6561 7420 6d61 6b65 7320 he repeat makes │ │ │ │ │ -00011010: 4e20 7472 616e 7366 6f72 6d65 6420 636f N transformed co │ │ │ │ │ -00011020: 7069 6573 206f 6620 5245 5045 4154 4544 pies of REPEATED │ │ │ │ │ -00011030: 5f4f 424a 4543 5420 2869 6e63 6c75 6469 _OBJECT (includi │ │ │ │ │ -00011040: 6e67 2074 6865 0a6f 7269 6769 6e61 6c29 ng the.original) │ │ │ │ │ -00011050: 2e20 2054 6865 2054 5f49 2061 7265 2074 . The T_I are t │ │ │ │ │ -00011060: 7261 6e73 666f 726d 732e 2020 5468 6520 ransforms. The │ │ │ │ │ -00011070: 6b27 7468 2063 6f70 7920 6f66 2074 6865 k'th copy of the │ │ │ │ │ -00011080: 0a52 4550 4541 5445 445f 4f42 4a45 4354 .REPEATED_OBJECT │ │ │ │ │ -00011090: 2028 666f 7220 6b3d 302c 312c 2e2e 2e2c (for k=0,1,..., │ │ │ │ │ -000110a0: 6e2d 3129 2069 7320 7072 6f64 7563 6564 n-1) is produced │ │ │ │ │ -000110b0: 2069 6e20 7468 6520 7361 6d65 206d 616e in the same man │ │ │ │ │ -000110c0: 6e65 7220 6173 0a66 6f72 20e2 8098 7377 ner as.for ...sw │ │ │ │ │ -000110d0: 6565 70e2 8099 7320 6465 7363 7269 6265 eep...s describe │ │ │ │ │ -000110e0: 6420 696e 202a 6e6f 7465 2053 7765 6570 d in *note Sweep │ │ │ │ │ -000110f0: 733a 3a2e 2020 5468 6973 2069 7320 7265 s::. This is re │ │ │ │ │ -00011100: 7065 6174 6564 2068 6572 6520 286e 6f20 peated here (no │ │ │ │ │ -00011110: 7075 6e0a 696e 7465 6e64 6564 2920 666f pun.intended) fo │ │ │ │ │ -00011120: 7220 636f 6e76 656e 6965 6e63 652e 2020 r convenience. │ │ │ │ │ -00011130: 546f 206d 616b 6520 7468 6520 6b27 7468 To make the k'th │ │ │ │ │ -00011140: 2063 6f70 792c 2074 6865 2066 6f6c 6c6f copy, the follo │ │ │ │ │ -00011150: 7769 6e67 0a74 7261 6e73 666f 726d 2069 wing.transform i │ │ │ │ │ -00011160: 7320 6170 706c 6965 6420 746f 2074 6865 s applied to the │ │ │ │ │ -00011170: 206f 7269 6769 6e61 6c20 6f62 6a65 6374 original object │ │ │ │ │ -00011180: 2e0a 2020 2020 2054 5f31 5e6b 2074 6865 .. T_1^k the │ │ │ │ │ -00011190: 6e20 545f 325e 6b20 7468 656e 202e 2e2e n T_2^k then ... │ │ │ │ │ -000111a0: 2074 6865 6e20 545f 525e 6b0a 4865 7265 then T_R^k.Here │ │ │ │ │ -000111b0: 2054 5e6b 206d 6561 6e73 2022 7472 616e T^k means "tran │ │ │ │ │ -000111c0: 7366 6f72 6d20 5420 6170 706c 6965 6420 sform T applied │ │ │ │ │ -000111d0: 6b20 7469 6d65 732e 220a 0a1f 0a46 696c k times."....Fil │ │ │ │ │ -000111e0: 653a 2073 6b65 7463 682e 696e 666f 2c20 e: sketch.info, │ │ │ │ │ -000111f0: 204e 6f64 653a 2050 7574 732c 2020 5072 Node: Puts, Pr │ │ │ │ │ -00011200: 6576 3a20 5265 7065 6174 732c 2020 5570 ev: Repeats, Up │ │ │ │ │ -00011210: 3a20 4472 6177 6162 6c65 730a 0a33 2e32 : Drawables..3.2 │ │ │ │ │ -00011220: 2e39 2050 7574 730a 2d2d 2d2d 2d2d 2d2d .9 Puts.-------- │ │ │ │ │ -00011230: 2d2d 0a0a 2a53 796e 7461 783a 2a0a 2020 --..*Syntax:*. │ │ │ │ │ -00011240: 2020 2070 7574 207b 2054 207d 2050 5554 put { T } PUT │ │ │ │ │ -00011250: 5f4f 424a 4543 540a 5075 7420 6d65 7265 _OBJECT.Put mere │ │ │ │ │ -00011260: 6c79 2061 7070 6c69 6573 2074 7261 6e73 ly applies trans │ │ │ │ │ -00011270: 666f 726d 2054 2074 6f20 7468 6520 6472 form T to the dr │ │ │ │ │ -00011280: 6177 6162 6c65 2050 5554 5f4f 424a 4543 awable PUT_OBJEC │ │ │ │ │ -00011290: 542e 0a0a 1f0a 4669 6c65 3a20 736b 6574 T.....File: sket │ │ │ │ │ -000112a0: 6368 2e69 6e66 6f2c 2020 4e6f 6465 3a20 ch.info, Node: │ │ │ │ │ -000112b0: 4465 6669 6e69 7469 6f6e 732c 2020 4e65 Definitions, Ne │ │ │ │ │ -000112c0: 7874 3a20 476c 6f62 616c 2065 6e76 6972 xt: Global envir │ │ │ │ │ -000112d0: 6f6e 6d65 6e74 2c20 2050 7265 763a 2044 onment, Prev: D │ │ │ │ │ -000112e0: 7261 7761 626c 6573 2c20 2055 703a 2049 rawables, Up: I │ │ │ │ │ -000112f0: 6e70 7574 206c 616e 6775 6167 650a 0a33 nput language..3 │ │ │ │ │ -00011300: 2e33 2044 6566 696e 6974 696f 6e73 0a3d .3 Definitions.= │ │ │ │ │ -00011310: 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d 0a0a ==============.. │ │ │ │ │ -00011320: 4465 6669 6e69 7469 6f6e 7320 6769 7665 Definitions give │ │ │ │ │ -00011330: 206e 616d 6573 2074 6f20 e280 9873 6b65 names to ...ske │ │ │ │ │ -00011340: 7463 68e2 8099 206f 626a 6563 7473 2e20 tch... objects. │ │ │ │ │ -00011350: 2044 6566 696e 6974 696f 6e73 2061 6c6f Definitions alo │ │ │ │ │ -00011360: 6e65 2061 7265 0a62 656e 6967 6e2e 2020 ne are.benign. │ │ │ │ │ -00011370: 4120 e280 9873 6b65 7463 68e2 8099 2069 A ...sketch... i │ │ │ │ │ -00011380: 6e70 7574 2066 696c 6520 636f 6e73 6973 nput file consis │ │ │ │ │ -00011390: 7469 6e67 2065 6e74 6972 656c 7920 6f66 ting entirely of │ │ │ │ │ -000113a0: 2064 6566 696e 6974 696f 6e73 2077 696c definitions wil │ │ │ │ │ -000113b0: 6c0a 6765 6e65 7261 7465 206e 6f20 6472 l.generate no dr │ │ │ │ │ -000113c0: 6177 696e 672e 2020 4f6e 6c79 2077 6865 awing. Only whe │ │ │ │ │ -000113d0: 6e20 6465 6669 6e69 7469 6f6e 7320 6172 n definitions ar │ │ │ │ │ -000113e0: 6520 e280 9c72 6566 6572 656e 6365 64e2 e ...referenced. │ │ │ │ │ -000113f0: 809d 2064 6f20 7468 6579 0a70 6f74 656e .. do they.poten │ │ │ │ │ -00011400: 7469 616c 6c79 206c 6561 6420 746f 2069 tially lead to i │ │ │ │ │ -00011410: 6e6b 206f 6e20 7468 6520 6472 6177 696e nk on the drawin │ │ │ │ │ -00011420: 672e 0a0a 2020 2054 6865 2069 6e74 656e g... The inten │ │ │ │ │ -00011430: 7420 6f66 2064 6566 696e 6974 696f 6e73 t of definitions │ │ │ │ │ -00011440: 2069 7320 746f 206d 616b 6520 e280 9873 is to make ...s │ │ │ │ │ -00011450: 6b65 7463 68e2 8099 2063 6f64 6520 6d6f ketch... code mo │ │ │ │ │ -00011460: 7265 2063 6f6e 6369 7365 2061 6e64 0a72 re concise and.r │ │ │ │ │ -00011470: 6561 6461 626c 652e 2020 5468 6572 6520 eadable. There │ │ │ │ │ -00011480: 6973 206e 6f20 696e 7075 7420 6669 6c65 is no input file │ │ │ │ │ -00011490: 2065 6d70 6c6f 7969 6e67 2064 6566 696e employing defin │ │ │ │ │ -000114a0: 6974 696f 6e73 2074 6861 7420 636f 756c itions that coul │ │ │ │ │ -000114b0: 6420 6e6f 740a 6265 2072 652d 7772 6974 d not.be re-writ │ │ │ │ │ -000114c0: 7465 6e20 7769 7468 6f75 7420 7468 656d ten without them │ │ │ │ │ -000114d0: 2e0a 0a20 2020 4465 6669 6e61 626c 6520 ... Definable │ │ │ │ │ -000114e0: 6f62 6a65 6374 7320 696e 636c 7564 6520 objects include │ │ │ │ │ -000114f0: 616e 7920 7265 7375 6c74 206f 6620 616e any result of an │ │ │ │ │ -00011500: 2061 6666 696e 6520 6172 6974 686d 6574 affine arithmet │ │ │ │ │ -00011510: 6963 0a65 7870 7265 7373 696f 6e20 2873 ic.expression (s │ │ │ │ │ -00011520: 6361 6c61 722c 2070 6f69 6e74 2c20 7665 calar, point, ve │ │ │ │ │ -00011530: 6374 6f72 2c20 6f72 2074 7261 6e73 666f ctor, or transfo │ │ │ │ │ -00011540: 726d 292c 2061 6e79 2064 7261 7761 626c rm), any drawabl │ │ │ │ │ -00011550: 6520 6f62 6a65 6374 0a28 646f 7473 2c20 e object.(dots, │ │ │ │ │ -00011560: 6c69 6e65 2c20 6375 7276 652c 2070 6f6c line, curve, pol │ │ │ │ │ -00011570: 7967 6f6e 2c20 626c 6f63 6b2c 2073 7765 ygon, block, swe │ │ │ │ │ -00011580: 6570 2c20 7075 742c 2072 6570 6561 742c ep, put, repeat, │ │ │ │ │ -00011590: 206f 7220 7370 6563 6961 6c29 2c20 616e or special), an │ │ │ │ │ -000115a0: 640a 6f70 7469 6f6e 2073 7472 696e 6773 d.option strings │ │ │ │ │ -000115b0: 2e20 2049 6e20 6164 6469 7469 6f6e 2c20 . In addition, │ │ │ │ │ -000115c0: e280 9c74 6167 2064 6566 696e 6974 696f ...tag definitio │ │ │ │ │ -000115d0: 6e73 e280 9d2c 2077 6869 6368 2068 6176 ns..., which hav │ │ │ │ │ -000115e0: 6520 6e6f 0a61 7373 6f63 6961 7465 6420 e no.associated │ │ │ │ │ -000115f0: 6f62 6a65 6374 2061 7420 616c 6c2c 2061 object at all, a │ │ │ │ │ -00011600: 6c6c 6f77 2074 6865 206d 6561 6e69 6e67 llow the meaning │ │ │ │ │ -00011610: 206f 6620 6f74 6865 7220 6465 6669 6e69 of other defini │ │ │ │ │ -00011620: 7469 6f6e 7320 746f 2062 650a 7365 6c65 tions to be.sele │ │ │ │ │ -00011630: 6374 6564 2066 726f 6d20 6120 7365 7420 cted from a set │ │ │ │ │ -00011640: 6f66 2061 6c74 6572 6e61 7469 7665 732e of alternatives. │ │ │ │ │ -00011650: 2020 5369 6e63 6520 7461 6773 206d 6179 Since tags may │ │ │ │ │ -00011660: 2062 6520 6465 6669 6e65 6420 2861 6e64 be defined (and │ │ │ │ │ -00011670: 0a75 6e64 6566 696e 6564 2920 696e 2074 .undefined) in t │ │ │ │ │ -00011680: 6865 2063 6f6d 6d61 6e64 206c 696e 6520 he command line │ │ │ │ │ -00011690: 6f66 20e2 8098 736b 6574 6368 e280 992c of ...sketch..., │ │ │ │ │ -000116a0: 2074 6865 7920 6361 6e20 6265 2061 6e20 they can be an │ │ │ │ │ -000116b0: 6169 6420 696e 2074 6865 0a73 6372 6970 aid in the.scrip │ │ │ │ │ -000116c0: 742d 6472 6976 656e 2070 7265 7061 7261 t-driven prepara │ │ │ │ │ -000116d0: 7469 6f6e 206f 6620 646f 6375 6d65 6e74 tion of document │ │ │ │ │ -000116e0: 732e 0a0a 2a20 4d65 6e75 3a0a 0a2a 2046 s...* Menu:..* F │ │ │ │ │ -000116f0: 6f72 6d73 206f 6620 6465 6669 6e69 7469 orms of definiti │ │ │ │ │ -00011700: 6f6e 733a 3a20 2020 2020 2020 2044 6966 ons:: Dif │ │ │ │ │ -00011710: 6665 7265 6e74 2064 6566 7320 666f 7220 ferent defs for │ │ │ │ │ -00011720: 6469 6666 6572 656e 7420 7075 7270 6f73 different purpos │ │ │ │ │ -00011730: 6573 2e0a 2a20 466f 726d 7320 6f66 2072 es..* Forms of r │ │ │ │ │ -00011740: 6566 6572 656e 6365 733a 3a20 2020 2020 eferences:: │ │ │ │ │ -00011750: 2020 2020 486f 7720 7265 6665 7265 6e63 How referenc │ │ │ │ │ -00011760: 6573 2064 656e 6f74 6520 7479 7065 732e es denote types. │ │ │ │ │ -00011770: 0a0a 1f0a 4669 6c65 3a20 736b 6574 6368 ....File: sketch │ │ │ │ │ -00011780: 2e69 6e66 6f2c 2020 4e6f 6465 3a20 466f .info, Node: Fo │ │ │ │ │ -00011790: 726d 7320 6f66 2064 6566 696e 6974 696f rms of definitio │ │ │ │ │ -000117a0: 6e73 2c20 204e 6578 743a 2046 6f72 6d73 ns, Next: Forms │ │ │ │ │ -000117b0: 206f 6620 7265 6665 7265 6e63 6573 2c20 of references, │ │ │ │ │ -000117c0: 2050 7265 763a 2044 6566 696e 6974 696f Prev: Definitio │ │ │ │ │ -000117d0: 6e73 2c20 2055 703a 2044 6566 696e 6974 ns, Up: Definit │ │ │ │ │ -000117e0: 696f 6e73 0a0a 332e 332e 3120 466f 726d ions..3.3.1 Form │ │ │ │ │ -000117f0: 7320 6f66 2064 6566 696e 6974 696f 6e73 s of definitions │ │ │ │ │ -00011800: 0a2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d .--------------- │ │ │ │ │ -00011810: 2d2d 2d2d 2d2d 2d2d 2d2d 2d0a 0a44 6566 -----------..Def │ │ │ │ │ -00011820: 696e 6974 696f 6e73 2068 6176 6520 7468 initions have th │ │ │ │ │ -00011830: 7265 6520 706f 7373 6962 6c65 2066 6f72 ree possible for │ │ │ │ │ -00011840: 6d73 2c20 e280 9c73 696d 706c 65e2 809d ms, ...simple... │ │ │ │ │ -00011850: 2c20 e280 9c77 6974 6820 616c 7465 726e , ...with altern │ │ │ │ │ -00011860: 6174 6976 6573 e280 9d2c 0a61 6e64 20e2 atives...,.and . │ │ │ │ │ -00011870: 809c 7461 67e2 809d 2061 7320 7368 6f77 ..tag... as show │ │ │ │ │ -00011880: 6e20 6865 7265 2069 6e20 6f72 6465 722e n here in order. │ │ │ │ │ -00011890: 0a0a 2a53 796e 7461 783a 2a0a 2020 2020 ..*Syntax:*. │ │ │ │ │ -000118a0: 2064 6566 2049 4420 4f42 4a45 4354 2020 def ID OBJECT │ │ │ │ │ -000118b0: 2520 7369 6d70 6c65 2064 6566 0a20 2020 % simple def. │ │ │ │ │ -000118c0: 2020 6465 6620 4944 203c 5441 475f 313e def ID │ │ │ │ │ -000118d0: 204f 424a 4543 545f 3120 2025 2064 6566 OBJECT_1 % def │ │ │ │ │ -000118e0: 2077 6974 6820 616c 7465 726e 6174 6976 with alternativ │ │ │ │ │ -000118f0: 6573 0a20 2020 2020 2020 2020 2020 203c es. < │ │ │ │ │ -00011900: 5441 475f 323e 204f 424a 4543 545f 320a TAG_2> OBJECT_2. │ │ │ │ │ -00011910: 2020 2020 2020 2020 2020 2020 2e2e 2e0a .... │ │ │ │ │ -00011920: 2020 2020 2020 2020 2020 2020 3c3e 2044 <> D │ │ │ │ │ -00011930: 4546 4155 4c54 5f4f 424a 4543 540a 2020 EFAULT_OBJECT. │ │ │ │ │ -00011940: 2020 2064 6566 2049 4420 3c3e 2020 2520 def ID <> % │ │ │ │ │ -00011950: 7461 6720 6465 660a 5468 6520 7369 6d70 tag def.The simp │ │ │ │ │ -00011960: 6c65 2064 6566 696e 6974 696f 6e20 6d65 le definition me │ │ │ │ │ -00011970: 7265 6c79 2061 7373 6f63 6961 7465 7320 rely associates │ │ │ │ │ -00011980: 4f42 4a45 4354 2077 6974 6820 7468 6520 OBJECT with the │ │ │ │ │ -00011990: 6964 656e 7469 6669 6572 2049 442e 0a0a identifier ID... │ │ │ │ │ -000119a0: 2020 2054 6865 2064 6566 696e 6974 696f The definitio │ │ │ │ │ -000119b0: 6e20 7769 7468 2061 6c74 6572 6e61 7469 n with alternati │ │ │ │ │ -000119c0: 7665 7320 6173 736f 6369 6174 6573 204f ves associates O │ │ │ │ │ -000119d0: 424a 4543 545f 4920 7769 7468 2049 442c BJECT_I with ID, │ │ │ │ │ -000119e0: 2077 6865 7265 0a54 4147 5f49 2069 7320 where.TAG_I is │ │ │ │ │ -000119f0: 7468 6520 6669 7273 7420 6465 6669 6e65 the first define │ │ │ │ │ -00011a00: 6420 7461 6720 696e 2074 6865 206c 6973 d tag in the lis │ │ │ │ │ -00011a10: 7420 6f66 2061 6c74 6572 6e61 7469 7665 t of alternative │ │ │ │ │ -00011a20: 2074 6167 0a72 6566 6572 656e 6365 732e tag.references. │ │ │ │ │ -00011a30: 2020 4966 206e 6f20 7461 6720 696e 2074 If no tag in t │ │ │ │ │ -00011a40: 6865 206c 6973 7420 6973 2064 6566 696e he list is defin │ │ │ │ │ -00011a50: 6564 2c20 7468 656e 2044 4546 4155 4c54 ed, then DEFAULT │ │ │ │ │ -00011a60: 5f4f 424a 4543 5420 6973 0a61 7373 6f63 _OBJECT is.assoc │ │ │ │ │ -00011a70: 6961 7465 6420 7769 7468 2069 6465 6e74 iated with ident │ │ │ │ │ -00011a80: 6966 6965 7220 4944 2e0a 0a20 2020 5468 ifier ID... Th │ │ │ │ │ -00011a90: 6520 6669 6e61 6c20 666f 726d 2064 6566 e final form def │ │ │ │ │ -00011aa0: 696e 6573 2049 4420 6173 2061 2074 6167 ines ID as a tag │ │ │ │ │ -00011ab0: 2e20 2041 6e6f 7468 6572 2077 6179 2074 . Another way t │ │ │ │ │ -00011ac0: 6f20 6465 6669 6e65 2061 2074 6167 2069 o define a tag i │ │ │ │ │ -00011ad0: 730a 7769 7468 2074 6865 20e2 8098 2d44 s.with the ...-D │ │ │ │ │ -00011ae0: e280 9920 636f 6d6d 616e 6420 6c69 6e65 ... command line │ │ │ │ │ -00011af0: 206f 7074 696f 6e2e 2020 2a4e 6f74 6520 option. *Note │ │ │ │ │ -00011b00: 436f 6d6d 616e 6420 6c69 6e65 3a3a 2e0a Command line::.. │ │ │ │ │ -00011b10: 0a1f 0a46 696c 653a 2073 6b65 7463 682e ...File: sketch. │ │ │ │ │ -00011b20: 696e 666f 2c20 204e 6f64 653a 2046 6f72 info, Node: For │ │ │ │ │ -00011b30: 6d73 206f 6620 7265 6665 7265 6e63 6573 ms of references │ │ │ │ │ -00011b40: 2c20 2050 7265 763a 2046 6f72 6d73 206f , Prev: Forms o │ │ │ │ │ -00011b50: 6620 6465 6669 6e69 7469 6f6e 732c 2020 f definitions, │ │ │ │ │ -00011b60: 5570 3a20 4465 6669 6e69 7469 6f6e 730a Up: Definitions. │ │ │ │ │ -00011b70: 0a33 2e33 2e32 2046 6f72 6d73 206f 6620 .3.3.2 Forms of │ │ │ │ │ -00011b80: 7265 6665 7265 6e63 6573 0a2d 2d2d 2d2d references.----- │ │ │ │ │ -00011b90: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ -00011ba0: 2d2d 2d2d 0a0a 5265 6665 7265 6e63 6573 ----..References │ │ │ │ │ -00011bb0: 2074 6f20 6465 6669 6e65 6420 6e61 6d65 to defined name │ │ │ │ │ -00011bc0: 7320 6172 6520 656e 636c 6f73 6564 2069 s are enclosed i │ │ │ │ │ -00011bd0: 6e20 6272 6163 6b65 7469 6e67 2064 656c n bracketing del │ │ │ │ │ -00011be0: 696d 6974 6572 732e 2020 5468 650a 6465 imiters. The.de │ │ │ │ │ -00011bf0: 6c69 6d69 7465 7220 6368 6172 6163 7465 limiter characte │ │ │ │ │ -00011c00: 7273 2069 6d70 6c79 2074 6865 2074 7970 rs imply the typ │ │ │ │ │ -00011c10: 6520 6f66 2074 6865 2061 7373 6f63 6961 e of the associa │ │ │ │ │ -00011c20: 7465 6420 7661 6c75 6520 6173 2073 686f ted value as sho │ │ │ │ │ -00011c30: 776e 2069 6e0a 7468 6520 7461 626c 6520 wn in.the table │ │ │ │ │ -00011c40: 6265 6c6f 772e 2020 4120 7479 7065 2065 below. A type e │ │ │ │ │ -00011c50: 7272 6f72 2069 7320 7261 6973 6564 2069 rror is raised i │ │ │ │ │ -00011c60: 6620 7468 6520 7479 7065 206f 6620 6120 f the type of a │ │ │ │ │ -00011c70: 7265 6665 7265 6e63 6520 646f 6573 0a6e reference does.n │ │ │ │ │ -00011c80: 6f74 206d 6174 6368 2074 6865 2074 7970 ot match the typ │ │ │ │ │ -00011c90: 6520 6f66 2074 6865 2064 6566 696e 6564 e of the defined │ │ │ │ │ -00011ca0: 2076 616c 7565 2e20 2054 6865 2069 6e74 value. The int │ │ │ │ │ -00011cb0: 656e 7420 6f66 2074 6869 7320 6d65 6368 ent of this mech │ │ │ │ │ -00011cc0: 616e 6973 6d0a 6973 2c20 6167 6169 6e2c anism.is, again, │ │ │ │ │ -00011cd0: 2074 6f20 6d61 6b65 20e2 8098 736b 6574 to make ...sket │ │ │ │ │ -00011ce0: 6368 e280 9920 696e 7075 7420 6669 6c65 ch... input file │ │ │ │ │ -00011cf0: 7320 6d6f 7265 2072 6561 6461 626c 652e s more readable. │ │ │ │ │ -00011d00: 0a54 7970 6520 2020 2020 2020 2052 6566 .Type Ref │ │ │ │ │ -00011d10: 6572 656e 6365 0a2d 2d2d 2d2d 2d2d 2d2d erence.--------- │ │ │ │ │ +00010b20: 2e2e 2e2e 2e2e 2e2e 2e0a 0a42 6566 6f72 ...........Befor │ │ │ │ │ +00010b30: 6520 7365 6e64 696e 6720 6561 6368 2066 e sending each f │ │ │ │ │ +00010b40: 6f75 722d 7369 6465 6420 626f 6479 2070 our-sided body p │ │ │ │ │ +00010b50: 6f6c 7967 6f6e 206f 6620 6120 e280 9873 olygon of a ...s │ │ │ │ │ +00010b60: 7765 6570 e280 9920 746f 2074 6865 206f weep... to the o │ │ │ │ │ +00010b70: 7574 7075 742c 0ae2 8098 736b 6574 6368 utput,....sketch │ │ │ │ │ +00010b80: e280 9920 7465 7374 7320 746f 2073 6565 ... tests to see │ │ │ │ │ +00010b90: 2069 6620 6974 2069 7320 726f 7567 686c if it is roughl │ │ │ │ │ +00010ba0: 7920 706c 616e 6172 2e20 2053 696e 6365 y planar. Since │ │ │ │ │ +00010bb0: 2070 6c61 6e61 7269 7479 2069 730a 6e65 planarity is.ne │ │ │ │ │ +00010bc0: 6365 7373 6172 7920 666f 7220 7072 6f70 cessary for prop │ │ │ │ │ +00010bd0: 6572 2066 756e 6374 696f 6e69 6e67 206f er functioning o │ │ │ │ │ +00010be0: 6620 7468 6520 6869 6464 656e 2073 7572 f the hidden sur │ │ │ │ │ +00010bf0: 6661 6365 2061 6c67 6f72 6974 686d 2c0a face algorithm,. │ │ │ │ │ +00010c00: 2277 6172 7065 6422 2070 6f6c 7967 6f6e "warped" polygon │ │ │ │ │ +00010c10: 7320 6172 6520 6175 746f 6d61 7469 6361 s are automatica │ │ │ │ │ +00010c20: 6c6c 7920 7370 6c69 7420 696e 746f 2074 lly split into t │ │ │ │ │ +00010c30: 776f 2074 7269 616e 676c 6573 2e0a 0a20 wo triangles... │ │ │ │ │ +00010c40: 2020 486f 6c65 2d66 696c 6c69 6e67 2070 Hole-filling p │ │ │ │ │ +00010c50: 6f6c 7967 6f6e 7320 7072 6f64 7563 6564 olygons produced │ │ │ │ │ +00010c60: 2062 7920 636c 6f73 7572 652d 7461 6767 by closure-tagg │ │ │ │ │ +00010c70: 6564 206c 696e 6520 7377 6565 7073 2061 ed line sweeps a │ │ │ │ │ +00010c80: 7265 206e 6f74 0a73 706c 6974 2e20 204e re not.split. N │ │ │ │ │ +00010c90: 6f72 2061 7265 206f 7269 6769 6e61 6c20 or are original │ │ │ │ │ +00010ca0: 706f 6c79 676f 6e73 2069 6e20 706f 6c79 polygons in poly │ │ │ │ │ +00010cb0: 676f 6e20 7377 6565 7073 2e20 2049 7420 gon sweeps. It │ │ │ │ │ +00010cc0: 6973 2074 6865 2075 7365 7227 730a 7265 is the user's.re │ │ │ │ │ +00010cd0: 7370 6f6e 7369 6269 6c69 7479 2074 6f20 sponsibility to │ │ │ │ │ +00010ce0: 656e 7375 7265 2074 6865 7365 2061 7265 ensure these are │ │ │ │ │ +00010cf0: 2070 6c61 6e61 722e 0a0a 1f0a 4669 6c65 planar.....File │ │ │ │ │ +00010d00: 3a20 736b 6574 6368 2e69 6e66 6f2c 2020 : sketch.info, │ │ │ │ │ +00010d10: 4e6f 6465 3a20 426c 6f63 6b73 2c20 204e Node: Blocks, N │ │ │ │ │ +00010d20: 6578 743a 2052 6570 6561 7473 2c20 2050 ext: Repeats, P │ │ │ │ │ +00010d30: 7265 763a 2053 7765 6570 732c 2020 5570 rev: Sweeps, Up │ │ │ │ │ +00010d40: 3a20 4472 6177 6162 6c65 730a 0a33 2e32 : Drawables..3.2 │ │ │ │ │ +00010d50: 2e37 2042 6c6f 636b 730a 2d2d 2d2d 2d2d .7 Blocks.------ │ │ │ │ │ +00010d60: 2d2d 2d2d 2d2d 0a0a 416e 7920 7365 7175 ------..Any sequ │ │ │ │ │ +00010d70: 656e 6365 206f 6620 6472 6177 6162 6c65 ence of drawable │ │ │ │ │ +00010d80: 7320 6d61 7920 6265 2067 726f 7570 6564 s may be grouped │ │ │ │ │ +00010d90: 2069 6e20 6120 e280 9c62 6c6f 636b e280 in a ...block.. │ │ │ │ │ +00010da0: 9d20 6d65 7265 6c79 2062 790a 656e 636c . merely by.encl │ │ │ │ │ +00010db0: 6f73 696e 6720 7468 656d 2069 6e20 6272 osing them in br │ │ │ │ │ +00010dc0: 6163 6573 20e2 8098 7b20 7de2 8099 2e20 aces ...{ }.... │ │ │ │ │ +00010dd0: 2041 2062 6c6f 636b 2069 7320 6974 7365 A block is itse │ │ │ │ │ +00010de0: 6c66 2064 7261 7761 626c 652e 2020 4120 lf drawable. A │ │ │ │ │ +00010df0: 6b65 7920 7573 650a 6f66 2062 6c6f 636b key use.of block │ │ │ │ │ +00010e00: 7320 6973 2074 6f20 6578 7465 6e64 2074 s is to extend t │ │ │ │ │ +00010e10: 6865 2065 6666 6563 7420 6f66 2061 2073 he effect of a s │ │ │ │ │ +00010e20: 696e 676c 6520 e280 9864 6566 e280 992c ingle ...def..., │ │ │ │ │ +00010e30: 202a 6e6f 7465 0a44 6566 696e 6974 696f *note.Definitio │ │ │ │ │ +00010e40: 6e73 3a3a 2c20 e280 9870 7574 e280 9920 ns::, ...put... │ │ │ │ │ +00010e50: 2a6e 6f74 6520 5075 7473 3a3a 2c20 e280 *note Puts::, .. │ │ │ │ │ +00010e60: 9873 7765 6570 e280 9920 2a6e 6f74 6520 .sweep... *note │ │ │ │ │ +00010e70: 5377 6565 7073 3a3a 2c20 6f72 20e2 8098 Sweeps::, or ... │ │ │ │ │ +00010e80: 7265 7065 6174 e280 990a 2a6e 6f74 6520 repeat....*note │ │ │ │ │ +00010e90: 5265 7065 6174 733a 3a20 746f 2069 6e63 Repeats:: to inc │ │ │ │ │ +00010ea0: 6c75 6465 2073 6576 6572 616c 206f 626a lude several obj │ │ │ │ │ +00010eb0: 6563 7473 2072 6174 6865 7220 7468 616e ects rather than │ │ │ │ │ +00010ec0: 206f 6e65 2e0a 0a20 2020 4465 6669 6e69 one... Defini │ │ │ │ │ +00010ed0: 7469 6f6e 7320 282a 4e6f 7465 2044 6566 tions (*Note Def │ │ │ │ │ +00010ee0: 696e 6974 696f 6e73 3a3a 2e29 2020 696e initions::.) in │ │ │ │ │ +00010ef0: 7369 6465 2061 2062 6c6f 636b 2068 6176 side a block hav │ │ │ │ │ +00010f00: 6520 e280 9c6c 6578 6963 616c 0a73 636f e ...lexical.sco │ │ │ │ │ +00010f10: 7065 e280 9d20 6578 7465 6e64 696e 6720 pe... extending │ │ │ │ │ +00010f20: 6672 6f6d 2074 6865 2070 6c61 6365 206f from the place o │ │ │ │ │ +00010f30: 6620 6465 6669 6e69 7469 6f6e 2074 6f20 f definition to │ │ │ │ │ +00010f40: 7468 6520 656e 6420 6f66 2074 6865 2062 the end of the b │ │ │ │ │ +00010f50: 6c6f 636b 2e0a 0a1f 0a46 696c 653a 2073 lock.....File: s │ │ │ │ │ +00010f60: 6b65 7463 682e 696e 666f 2c20 204e 6f64 ketch.info, Nod │ │ │ │ │ +00010f70: 653a 2052 6570 6561 7473 2c20 204e 6578 e: Repeats, Nex │ │ │ │ │ +00010f80: 743a 2050 7574 732c 2020 5072 6576 3a20 t: Puts, Prev: │ │ │ │ │ +00010f90: 426c 6f63 6b73 2c20 2055 703a 2044 7261 Blocks, Up: Dra │ │ │ │ │ +00010fa0: 7761 626c 6573 0a0a 332e 322e 3820 5265 wables..3.2.8 Re │ │ │ │ │ +00010fb0: 7065 6174 730a 2d2d 2d2d 2d2d 2d2d 2d2d peats.---------- │ │ │ │ │ +00010fc0: 2d2d 2d0a 0a2a 5379 6e74 6178 3a2a 0a20 ---..*Syntax:*. │ │ │ │ │ +00010fd0: 2020 2020 7265 7065 6174 207b 204e 2c20 repeat { N, │ │ │ │ │ +00010fe0: 545f 312c 2054 5f32 2c20 2e2e 2e2c 2054 T_1, T_2, ..., T │ │ │ │ │ +00010ff0: 5f52 207d 2052 4550 4541 5445 445f 4f42 _R } REPEATED_OB │ │ │ │ │ +00011000: 4a45 4354 0a54 6865 2072 6570 6561 7420 JECT.The repeat │ │ │ │ │ +00011010: 6d61 6b65 7320 4e20 7472 616e 7366 6f72 makes N transfor │ │ │ │ │ +00011020: 6d65 6420 636f 7069 6573 206f 6620 5245 med copies of RE │ │ │ │ │ +00011030: 5045 4154 4544 5f4f 424a 4543 5420 2869 PEATED_OBJECT (i │ │ │ │ │ +00011040: 6e63 6c75 6469 6e67 2074 6865 0a6f 7269 ncluding the.ori │ │ │ │ │ +00011050: 6769 6e61 6c29 2e20 2054 6865 2054 5f49 ginal). The T_I │ │ │ │ │ +00011060: 2061 7265 2074 7261 6e73 666f 726d 732e are transforms. │ │ │ │ │ +00011070: 2020 5468 6520 6b27 7468 2063 6f70 7920 The k'th copy │ │ │ │ │ +00011080: 6f66 2074 6865 0a52 4550 4541 5445 445f of the.REPEATED_ │ │ │ │ │ +00011090: 4f42 4a45 4354 2028 666f 7220 6b3d 302c OBJECT (for k=0, │ │ │ │ │ +000110a0: 312c 2e2e 2e2c 6e2d 3129 2069 7320 7072 1,...,n-1) is pr │ │ │ │ │ +000110b0: 6f64 7563 6564 2069 6e20 7468 6520 7361 oduced in the sa │ │ │ │ │ +000110c0: 6d65 206d 616e 6e65 7220 6173 0a66 6f72 me manner as.for │ │ │ │ │ +000110d0: 20e2 8098 7377 6565 70e2 8099 7320 6465 ...sweep...s de │ │ │ │ │ +000110e0: 7363 7269 6265 6420 696e 202a 6e6f 7465 scribed in *note │ │ │ │ │ +000110f0: 2053 7765 6570 733a 3a2e 2020 5468 6973 Sweeps::. This │ │ │ │ │ +00011100: 2069 7320 7265 7065 6174 6564 2068 6572 is repeated her │ │ │ │ │ +00011110: 6520 286e 6f20 7075 6e0a 696e 7465 6e64 e (no pun.intend │ │ │ │ │ +00011120: 6564 2920 666f 7220 636f 6e76 656e 6965 ed) for convenie │ │ │ │ │ +00011130: 6e63 652e 2020 546f 206d 616b 6520 7468 nce. To make th │ │ │ │ │ +00011140: 6520 6b27 7468 2063 6f70 792c 2074 6865 e k'th copy, the │ │ │ │ │ +00011150: 2066 6f6c 6c6f 7769 6e67 0a74 7261 6e73 following.trans │ │ │ │ │ +00011160: 666f 726d 2069 7320 6170 706c 6965 6420 form is applied │ │ │ │ │ +00011170: 746f 2074 6865 206f 7269 6769 6e61 6c20 to the original │ │ │ │ │ +00011180: 6f62 6a65 6374 2e0a 2020 2020 2054 5f31 object.. T_1 │ │ │ │ │ +00011190: 5e6b 2074 6865 6e20 545f 325e 6b20 7468 ^k then T_2^k th │ │ │ │ │ +000111a0: 656e 202e 2e2e 2074 6865 6e20 545f 525e en ... then T_R^ │ │ │ │ │ +000111b0: 6b0a 4865 7265 2054 5e6b 206d 6561 6e73 k.Here T^k means │ │ │ │ │ +000111c0: 2022 7472 616e 7366 6f72 6d20 5420 6170 "transform T ap │ │ │ │ │ +000111d0: 706c 6965 6420 6b20 7469 6d65 732e 220a plied k times.". │ │ │ │ │ +000111e0: 0a1f 0a46 696c 653a 2073 6b65 7463 682e ...File: sketch. │ │ │ │ │ +000111f0: 696e 666f 2c20 204e 6f64 653a 2050 7574 info, Node: Put │ │ │ │ │ +00011200: 732c 2020 5072 6576 3a20 5265 7065 6174 s, Prev: Repeat │ │ │ │ │ +00011210: 732c 2020 5570 3a20 4472 6177 6162 6c65 s, Up: Drawable │ │ │ │ │ +00011220: 730a 0a33 2e32 2e39 2050 7574 730a 2d2d s..3.2.9 Puts.-- │ │ │ │ │ +00011230: 2d2d 2d2d 2d2d 2d2d 0a0a 2a53 796e 7461 --------..*Synta │ │ │ │ │ +00011240: 783a 2a0a 2020 2020 2070 7574 207b 2054 x:*. put { T │ │ │ │ │ +00011250: 207d 2050 5554 5f4f 424a 4543 540a 5075 } PUT_OBJECT.Pu │ │ │ │ │ +00011260: 7420 6d65 7265 6c79 2061 7070 6c69 6573 t merely applies │ │ │ │ │ +00011270: 2074 7261 6e73 666f 726d 2054 2074 6f20 transform T to │ │ │ │ │ +00011280: 7468 6520 6472 6177 6162 6c65 2050 5554 the drawable PUT │ │ │ │ │ +00011290: 5f4f 424a 4543 542e 0a0a 1f0a 4669 6c65 _OBJECT.....File │ │ │ │ │ +000112a0: 3a20 736b 6574 6368 2e69 6e66 6f2c 2020 : sketch.info, │ │ │ │ │ +000112b0: 4e6f 6465 3a20 4465 6669 6e69 7469 6f6e Node: Definition │ │ │ │ │ +000112c0: 732c 2020 4e65 7874 3a20 476c 6f62 616c s, Next: Global │ │ │ │ │ +000112d0: 2065 6e76 6972 6f6e 6d65 6e74 2c20 2050 environment, P │ │ │ │ │ +000112e0: 7265 763a 2044 7261 7761 626c 6573 2c20 rev: Drawables, │ │ │ │ │ +000112f0: 2055 703a 2049 6e70 7574 206c 616e 6775 Up: Input langu │ │ │ │ │ +00011300: 6167 650a 0a33 2e33 2044 6566 696e 6974 age..3.3 Definit │ │ │ │ │ +00011310: 696f 6e73 0a3d 3d3d 3d3d 3d3d 3d3d 3d3d ions.=========== │ │ │ │ │ +00011320: 3d3d 3d3d 0a0a 4465 6669 6e69 7469 6f6e ====..Definition │ │ │ │ │ +00011330: 7320 6769 7665 206e 616d 6573 2074 6f20 s give names to │ │ │ │ │ +00011340: e280 9873 6b65 7463 68e2 8099 206f 626a ...sketch... obj │ │ │ │ │ +00011350: 6563 7473 2e20 2044 6566 696e 6974 696f ects. Definitio │ │ │ │ │ +00011360: 6e73 2061 6c6f 6e65 2061 7265 0a62 656e ns alone are.ben │ │ │ │ │ +00011370: 6967 6e2e 2020 4120 e280 9873 6b65 7463 ign. A ...sketc │ │ │ │ │ +00011380: 68e2 8099 2069 6e70 7574 2066 696c 6520 h... input file │ │ │ │ │ +00011390: 636f 6e73 6973 7469 6e67 2065 6e74 6972 consisting entir │ │ │ │ │ +000113a0: 656c 7920 6f66 2064 6566 696e 6974 696f ely of definitio │ │ │ │ │ +000113b0: 6e73 2077 696c 6c0a 6765 6e65 7261 7465 ns will.generate │ │ │ │ │ +000113c0: 206e 6f20 6472 6177 696e 672e 2020 4f6e no drawing. On │ │ │ │ │ +000113d0: 6c79 2077 6865 6e20 6465 6669 6e69 7469 ly when definiti │ │ │ │ │ +000113e0: 6f6e 7320 6172 6520 e280 9c72 6566 6572 ons are ...refer │ │ │ │ │ +000113f0: 656e 6365 64e2 809d 2064 6f20 7468 6579 enced... do they │ │ │ │ │ +00011400: 0a70 6f74 656e 7469 616c 6c79 206c 6561 .potentially lea │ │ │ │ │ +00011410: 6420 746f 2069 6e6b 206f 6e20 7468 6520 d to ink on the │ │ │ │ │ +00011420: 6472 6177 696e 672e 0a0a 2020 2054 6865 drawing... The │ │ │ │ │ +00011430: 2069 6e74 656e 7420 6f66 2064 6566 696e intent of defin │ │ │ │ │ +00011440: 6974 696f 6e73 2069 7320 746f 206d 616b itions is to mak │ │ │ │ │ +00011450: 6520 e280 9873 6b65 7463 68e2 8099 2063 e ...sketch... c │ │ │ │ │ +00011460: 6f64 6520 6d6f 7265 2063 6f6e 6369 7365 ode more concise │ │ │ │ │ +00011470: 2061 6e64 0a72 6561 6461 626c 652e 2020 and.readable. │ │ │ │ │ +00011480: 5468 6572 6520 6973 206e 6f20 696e 7075 There is no inpu │ │ │ │ │ +00011490: 7420 6669 6c65 2065 6d70 6c6f 7969 6e67 t file employing │ │ │ │ │ +000114a0: 2064 6566 696e 6974 696f 6e73 2074 6861 definitions tha │ │ │ │ │ +000114b0: 7420 636f 756c 6420 6e6f 740a 6265 2072 t could not.be r │ │ │ │ │ +000114c0: 652d 7772 6974 7465 6e20 7769 7468 6f75 e-written withou │ │ │ │ │ +000114d0: 7420 7468 656d 2e0a 0a20 2020 4465 6669 t them... Defi │ │ │ │ │ +000114e0: 6e61 626c 6520 6f62 6a65 6374 7320 696e nable objects in │ │ │ │ │ +000114f0: 636c 7564 6520 616e 7920 7265 7375 6c74 clude any result │ │ │ │ │ +00011500: 206f 6620 616e 2061 6666 696e 6520 6172 of an affine ar │ │ │ │ │ +00011510: 6974 686d 6574 6963 0a65 7870 7265 7373 ithmetic.express │ │ │ │ │ +00011520: 696f 6e20 2873 6361 6c61 722c 2070 6f69 ion (scalar, poi │ │ │ │ │ +00011530: 6e74 2c20 7665 6374 6f72 2c20 6f72 2074 nt, vector, or t │ │ │ │ │ +00011540: 7261 6e73 666f 726d 292c 2061 6e79 2064 ransform), any d │ │ │ │ │ +00011550: 7261 7761 626c 6520 6f62 6a65 6374 0a28 rawable object.( │ │ │ │ │ +00011560: 646f 7473 2c20 6c69 6e65 2c20 6375 7276 dots, line, curv │ │ │ │ │ +00011570: 652c 2070 6f6c 7967 6f6e 2c20 626c 6f63 e, polygon, bloc │ │ │ │ │ +00011580: 6b2c 2073 7765 6570 2c20 7075 742c 2072 k, sweep, put, r │ │ │ │ │ +00011590: 6570 6561 742c 206f 7220 7370 6563 6961 epeat, or specia │ │ │ │ │ +000115a0: 6c29 2c20 616e 640a 6f70 7469 6f6e 2073 l), and.option s │ │ │ │ │ +000115b0: 7472 696e 6773 2e20 2049 6e20 6164 6469 trings. In addi │ │ │ │ │ +000115c0: 7469 6f6e 2c20 e280 9c74 6167 2064 6566 tion, ...tag def │ │ │ │ │ +000115d0: 696e 6974 696f 6e73 e280 9d2c 2077 6869 initions..., whi │ │ │ │ │ +000115e0: 6368 2068 6176 6520 6e6f 0a61 7373 6f63 ch have no.assoc │ │ │ │ │ +000115f0: 6961 7465 6420 6f62 6a65 6374 2061 7420 iated object at │ │ │ │ │ +00011600: 616c 6c2c 2061 6c6c 6f77 2074 6865 206d all, allow the m │ │ │ │ │ +00011610: 6561 6e69 6e67 206f 6620 6f74 6865 7220 eaning of other │ │ │ │ │ +00011620: 6465 6669 6e69 7469 6f6e 7320 746f 2062 definitions to b │ │ │ │ │ +00011630: 650a 7365 6c65 6374 6564 2066 726f 6d20 e.selected from │ │ │ │ │ +00011640: 6120 7365 7420 6f66 2061 6c74 6572 6e61 a set of alterna │ │ │ │ │ +00011650: 7469 7665 732e 2020 5369 6e63 6520 7461 tives. Since ta │ │ │ │ │ +00011660: 6773 206d 6179 2062 6520 6465 6669 6e65 gs may be define │ │ │ │ │ +00011670: 6420 2861 6e64 0a75 6e64 6566 696e 6564 d (and.undefined │ │ │ │ │ +00011680: 2920 696e 2074 6865 2063 6f6d 6d61 6e64 ) in the command │ │ │ │ │ +00011690: 206c 696e 6520 6f66 20e2 8098 736b 6574 line of ...sket │ │ │ │ │ +000116a0: 6368 e280 992c 2074 6865 7920 6361 6e20 ch..., they can │ │ │ │ │ +000116b0: 6265 2061 6e20 6169 6420 696e 2074 6865 be an aid in the │ │ │ │ │ +000116c0: 0a73 6372 6970 742d 6472 6976 656e 2070 .script-driven p │ │ │ │ │ +000116d0: 7265 7061 7261 7469 6f6e 206f 6620 646f reparation of do │ │ │ │ │ +000116e0: 6375 6d65 6e74 732e 0a0a 2a20 4d65 6e75 cuments...* Menu │ │ │ │ │ +000116f0: 3a0a 0a2a 2046 6f72 6d73 206f 6620 6465 :..* Forms of de │ │ │ │ │ +00011700: 6669 6e69 7469 6f6e 733a 3a20 2020 2020 finitions:: │ │ │ │ │ +00011710: 2020 2044 6966 6665 7265 6e74 2064 6566 Different def │ │ │ │ │ +00011720: 7320 666f 7220 6469 6666 6572 656e 7420 s for different │ │ │ │ │ +00011730: 7075 7270 6f73 6573 2e0a 2a20 466f 726d purposes..* Form │ │ │ │ │ +00011740: 7320 6f66 2072 6566 6572 656e 6365 733a s of references: │ │ │ │ │ +00011750: 3a20 2020 2020 2020 2020 486f 7720 7265 : How re │ │ │ │ │ +00011760: 6665 7265 6e63 6573 2064 656e 6f74 6520 ferences denote │ │ │ │ │ +00011770: 7479 7065 732e 0a0a 1f0a 4669 6c65 3a20 types.....File: │ │ │ │ │ +00011780: 736b 6574 6368 2e69 6e66 6f2c 2020 4e6f sketch.info, No │ │ │ │ │ +00011790: 6465 3a20 466f 726d 7320 6f66 2064 6566 de: Forms of def │ │ │ │ │ +000117a0: 696e 6974 696f 6e73 2c20 204e 6578 743a initions, Next: │ │ │ │ │ +000117b0: 2046 6f72 6d73 206f 6620 7265 6665 7265 Forms of refere │ │ │ │ │ +000117c0: 6e63 6573 2c20 2050 7265 763a 2044 6566 nces, Prev: Def │ │ │ │ │ +000117d0: 696e 6974 696f 6e73 2c20 2055 703a 2044 initions, Up: D │ │ │ │ │ +000117e0: 6566 696e 6974 696f 6e73 0a0a 332e 332e efinitions..3.3. │ │ │ │ │ +000117f0: 3120 466f 726d 7320 6f66 2064 6566 696e 1 Forms of defin │ │ │ │ │ +00011800: 6974 696f 6e73 0a2d 2d2d 2d2d 2d2d 2d2d itions.--------- │ │ │ │ │ +00011810: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ +00011820: 2d0a 0a44 6566 696e 6974 696f 6e73 2068 -..Definitions h │ │ │ │ │ +00011830: 6176 6520 7468 7265 6520 706f 7373 6962 ave three possib │ │ │ │ │ +00011840: 6c65 2066 6f72 6d73 2c20 e280 9c73 696d le forms, ...sim │ │ │ │ │ +00011850: 706c 65e2 809d 2c20 e280 9c77 6974 6820 ple..., ...with │ │ │ │ │ +00011860: 616c 7465 726e 6174 6976 6573 e280 9d2c alternatives..., │ │ │ │ │ +00011870: 0a61 6e64 20e2 809c 7461 67e2 809d 2061 .and ...tag... a │ │ │ │ │ +00011880: 7320 7368 6f77 6e20 6865 7265 2069 6e20 s shown here in │ │ │ │ │ +00011890: 6f72 6465 722e 0a0a 2a53 796e 7461 783a order...*Syntax: │ │ │ │ │ +000118a0: 2a0a 2020 2020 2064 6566 2049 4420 4f42 *. def ID OB │ │ │ │ │ +000118b0: 4a45 4354 2020 2520 7369 6d70 6c65 2064 JECT % simple d │ │ │ │ │ +000118c0: 6566 0a20 2020 2020 6465 6620 4944 203c ef. def ID < │ │ │ │ │ +000118d0: 5441 475f 313e 204f 424a 4543 545f 3120 TAG_1> OBJECT_1 │ │ │ │ │ +000118e0: 2025 2064 6566 2077 6974 6820 616c 7465 % def with alte │ │ │ │ │ +000118f0: 726e 6174 6976 6573 0a20 2020 2020 2020 rnatives. │ │ │ │ │ +00011900: 2020 2020 203c 5441 475f 323e 204f 424a OBJ │ │ │ │ │ +00011910: 4543 545f 320a 2020 2020 2020 2020 2020 ECT_2. │ │ │ │ │ +00011920: 2020 2e2e 2e0a 2020 2020 2020 2020 2020 .... │ │ │ │ │ +00011930: 2020 3c3e 2044 4546 4155 4c54 5f4f 424a <> DEFAULT_OBJ │ │ │ │ │ +00011940: 4543 540a 2020 2020 2064 6566 2049 4420 ECT. def ID │ │ │ │ │ +00011950: 3c3e 2020 2520 7461 6720 6465 660a 5468 <> % tag def.Th │ │ │ │ │ +00011960: 6520 7369 6d70 6c65 2064 6566 696e 6974 e simple definit │ │ │ │ │ +00011970: 696f 6e20 6d65 7265 6c79 2061 7373 6f63 ion merely assoc │ │ │ │ │ +00011980: 6961 7465 7320 4f42 4a45 4354 2077 6974 iates OBJECT wit │ │ │ │ │ +00011990: 6820 7468 6520 6964 656e 7469 6669 6572 h the identifier │ │ │ │ │ +000119a0: 2049 442e 0a0a 2020 2054 6865 2064 6566 ID... The def │ │ │ │ │ +000119b0: 696e 6974 696f 6e20 7769 7468 2061 6c74 inition with alt │ │ │ │ │ +000119c0: 6572 6e61 7469 7665 7320 6173 736f 6369 ernatives associ │ │ │ │ │ +000119d0: 6174 6573 204f 424a 4543 545f 4920 7769 ates OBJECT_I wi │ │ │ │ │ +000119e0: 7468 2049 442c 2077 6865 7265 0a54 4147 th ID, where.TAG │ │ │ │ │ +000119f0: 5f49 2069 7320 7468 6520 6669 7273 7420 _I is the first │ │ │ │ │ +00011a00: 6465 6669 6e65 6420 7461 6720 696e 2074 defined tag in t │ │ │ │ │ +00011a10: 6865 206c 6973 7420 6f66 2061 6c74 6572 he list of alter │ │ │ │ │ +00011a20: 6e61 7469 7665 2074 6167 0a72 6566 6572 native tag.refer │ │ │ │ │ +00011a30: 656e 6365 732e 2020 4966 206e 6f20 7461 ences. If no ta │ │ │ │ │ +00011a40: 6720 696e 2074 6865 206c 6973 7420 6973 g in the list is │ │ │ │ │ +00011a50: 2064 6566 696e 6564 2c20 7468 656e 2044 defined, then D │ │ │ │ │ +00011a60: 4546 4155 4c54 5f4f 424a 4543 5420 6973 EFAULT_OBJECT is │ │ │ │ │ +00011a70: 0a61 7373 6f63 6961 7465 6420 7769 7468 .associated with │ │ │ │ │ +00011a80: 2069 6465 6e74 6966 6965 7220 4944 2e0a identifier ID.. │ │ │ │ │ +00011a90: 0a20 2020 5468 6520 6669 6e61 6c20 666f . The final fo │ │ │ │ │ +00011aa0: 726d 2064 6566 696e 6573 2049 4420 6173 rm defines ID as │ │ │ │ │ +00011ab0: 2061 2074 6167 2e20 2041 6e6f 7468 6572 a tag. Another │ │ │ │ │ +00011ac0: 2077 6179 2074 6f20 6465 6669 6e65 2061 way to define a │ │ │ │ │ +00011ad0: 2074 6167 2069 730a 7769 7468 2074 6865 tag is.with the │ │ │ │ │ +00011ae0: 20e2 8098 2d44 e280 9920 636f 6d6d 616e ...-D... comman │ │ │ │ │ +00011af0: 6420 6c69 6e65 206f 7074 696f 6e2e 2020 d line option. │ │ │ │ │ +00011b00: 2a4e 6f74 6520 436f 6d6d 616e 6420 6c69 *Note Command li │ │ │ │ │ +00011b10: 6e65 3a3a 2e0a 0a1f 0a46 696c 653a 2073 ne::.....File: s │ │ │ │ │ +00011b20: 6b65 7463 682e 696e 666f 2c20 204e 6f64 ketch.info, Nod │ │ │ │ │ +00011b30: 653a 2046 6f72 6d73 206f 6620 7265 6665 e: Forms of refe │ │ │ │ │ +00011b40: 7265 6e63 6573 2c20 2050 7265 763a 2046 rences, Prev: F │ │ │ │ │ +00011b50: 6f72 6d73 206f 6620 6465 6669 6e69 7469 orms of definiti │ │ │ │ │ +00011b60: 6f6e 732c 2020 5570 3a20 4465 6669 6e69 ons, Up: Defini │ │ │ │ │ +00011b70: 7469 6f6e 730a 0a33 2e33 2e32 2046 6f72 tions..3.3.2 For │ │ │ │ │ +00011b80: 6d73 206f 6620 7265 6665 7265 6e63 6573 ms of references │ │ │ │ │ +00011b90: 0a2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d .--------------- │ │ │ │ │ +00011ba0: 2d2d 2d2d 2d2d 2d2d 2d2d 0a0a 5265 6665 ----------..Refe │ │ │ │ │ +00011bb0: 7265 6e63 6573 2074 6f20 6465 6669 6e65 rences to define │ │ │ │ │ +00011bc0: 6420 6e61 6d65 7320 6172 6520 656e 636c d names are encl │ │ │ │ │ +00011bd0: 6f73 6564 2069 6e20 6272 6163 6b65 7469 osed in bracketi │ │ │ │ │ +00011be0: 6e67 2064 656c 696d 6974 6572 732e 2020 ng delimiters. │ │ │ │ │ +00011bf0: 5468 650a 6465 6c69 6d69 7465 7220 6368 The.delimiter ch │ │ │ │ │ +00011c00: 6172 6163 7465 7273 2069 6d70 6c79 2074 aracters imply t │ │ │ │ │ +00011c10: 6865 2074 7970 6520 6f66 2074 6865 2061 he type of the a │ │ │ │ │ +00011c20: 7373 6f63 6961 7465 6420 7661 6c75 6520 ssociated value │ │ │ │ │ +00011c30: 6173 2073 686f 776e 2069 6e0a 7468 6520 as shown in.the │ │ │ │ │ +00011c40: 7461 626c 6520 6265 6c6f 772e 2020 4120 table below. A │ │ │ │ │ +00011c50: 7479 7065 2065 7272 6f72 2069 7320 7261 type error is ra │ │ │ │ │ +00011c60: 6973 6564 2069 6620 7468 6520 7479 7065 ised if the type │ │ │ │ │ +00011c70: 206f 6620 6120 7265 6665 7265 6e63 6520 of a reference │ │ │ │ │ +00011c80: 646f 6573 0a6e 6f74 206d 6174 6368 2074 does.not match t │ │ │ │ │ +00011c90: 6865 2074 7970 6520 6f66 2074 6865 2064 he type of the d │ │ │ │ │ +00011ca0: 6566 696e 6564 2076 616c 7565 2e20 2054 efined value. T │ │ │ │ │ +00011cb0: 6865 2069 6e74 656e 7420 6f66 2074 6869 he intent of thi │ │ │ │ │ +00011cc0: 7320 6d65 6368 616e 6973 6d0a 6973 2c20 s mechanism.is, │ │ │ │ │ +00011cd0: 6167 6169 6e2c 2074 6f20 6d61 6b65 20e2 again, to make . │ │ │ │ │ +00011ce0: 8098 736b 6574 6368 e280 9920 696e 7075 ..sketch... inpu │ │ │ │ │ +00011cf0: 7420 6669 6c65 7320 6d6f 7265 2072 6561 t files more rea │ │ │ │ │ +00011d00: 6461 626c 652e 0a54 7970 6520 2020 2020 dable..Type │ │ │ │ │ +00011d10: 2020 2052 6566 6572 656e 6365 0a2d 2d2d Reference.--- │ │ │ │ │ 00011d20: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ 00011d30: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ -00011d40: 2d0a 7363 616c 6172 2020 2020 2020 e280 -.scalar .. │ │ │ │ │ -00011d50: 9849 44e2 8099 0a70 6f69 6e74 2020 2020 .ID....point │ │ │ │ │ -00011d60: 2020 20e2 8098 2849 4429 e280 990a 7665 ...(ID)....ve │ │ │ │ │ -00011d70: 6374 6f72 2020 2020 2020 e280 985b 4944 ctor ...[ID │ │ │ │ │ -00011d80: 5de2 8099 0a74 7261 6e73 666f 726d 2020 ]....transform │ │ │ │ │ -00011d90: 20e2 8098 5b5b 4944 5d5d e280 990a 6472 ...[[ID]]....dr │ │ │ │ │ -00011da0: 6177 6162 6c65 2020 2020 e280 987b 4944 awable ...{ID │ │ │ │ │ -00011db0: 7de2 8099 0a6f 7074 696f 6e73 2020 2020 }....options │ │ │ │ │ -00011dc0: 20e2 8098 5b49 445d e280 9920 6f72 20e2 ...[ID]... or . │ │ │ │ │ -00011dd0: 8098 5b49 4431 2c2e 2e2e 2c49 444e 5de2 ..[ID1,...,IDN]. │ │ │ │ │ -00011de0: 8099 0a74 6167 2020 2020 2020 2020 20e2 ...tag . │ │ │ │ │ -00011df0: 8098 3c49 443e e280 990a 0a4e 6f74 6520 .......Note │ │ │ │ │ -00011e00: 7468 6174 2073 7175 6172 6520 6272 6163 that square brac │ │ │ │ │ -00011e10: 6b65 7473 20e2 8098 5b20 5de2 8099 2061 kets ...[ ]... a │ │ │ │ │ -00011e20: 7265 2075 7365 6420 626f 7468 2066 6f72 re used both for │ │ │ │ │ -00011e30: 2076 6563 746f 7220 616e 6420 666f 7220 vector and for │ │ │ │ │ -00011e40: 6f70 7469 6f6e 730a 7265 6665 7265 6e63 options.referenc │ │ │ │ │ -00011e50: 6573 2e20 2044 6574 6169 6c73 206f 6620 es. Details of │ │ │ │ │ -00011e60: e280 9873 6b65 7463 68e2 8099 2073 796e ...sketch... syn │ │ │ │ │ -00011e70: 7461 7820 6d61 6b65 2069 7420 696d 706f tax make it impo │ │ │ │ │ -00011e80: 7373 6962 6c65 2066 6f72 2074 6865 7365 ssible for these │ │ │ │ │ -00011e90: 2074 776f 0a72 6566 6572 656e 6365 2074 two.reference t │ │ │ │ │ -00011ea0: 7970 6573 2074 6f20 6265 2063 6f6e 6675 ypes to be confu │ │ │ │ │ -00011eb0: 7365 642e 2020 5468 6520 7370 6563 6961 sed. The specia │ │ │ │ │ -00011ec0: 6c20 6d75 6c74 6970 6c65 2072 6566 6572 l multiple refer │ │ │ │ │ -00011ed0: 656e 6365 0ae2 8098 5b49 4431 2c49 4432 ence....[ID1,ID2 │ │ │ │ │ -00011ee0: 2c2e 2e2e 2c49 444e 5de2 8099 2061 6374 ,...,IDN]... act │ │ │ │ │ -00011ef0: 7320 6173 2069 6620 7468 6520 7265 7370 s as if the resp │ │ │ │ │ -00011f00: 6563 7469 7665 206c 6973 7473 206f 6620 ective lists of │ │ │ │ │ -00011f10: 6f70 7469 6f6e 7320 7765 7265 0a63 6f6e options were.con │ │ │ │ │ -00011f20: 6361 7465 6e61 7465 642e 0a0a 1f0a 4669 catenated.....Fi │ │ │ │ │ -00011f30: 6c65 3a20 736b 6574 6368 2e69 6e66 6f2c le: sketch.info, │ │ │ │ │ -00011f40: 2020 4e6f 6465 3a20 476c 6f62 616c 2065 Node: Global e │ │ │ │ │ -00011f50: 6e76 6972 6f6e 6d65 6e74 2c20 2050 7265 nvironment, Pre │ │ │ │ │ -00011f60: 763a 2044 6566 696e 6974 696f 6e73 2c20 v: Definitions, │ │ │ │ │ -00011f70: 2055 703a 2049 6e70 7574 206c 616e 6775 Up: Input langu │ │ │ │ │ -00011f80: 6167 650a 0a33 2e34 2047 6c6f 6261 6c20 age..3.4 Global │ │ │ │ │ -00011f90: 656e 7669 726f 6e6d 656e 740a 3d3d 3d3d environment.==== │ │ │ │ │ -00011fa0: 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d ================ │ │ │ │ │ -00011fb0: 3d3d 0a0a 416e 206f 7074 696f 6e61 6c20 ==..An optional │ │ │ │ │ -00011fc0: 676c 6f62 616c 2065 6e76 6972 6f6e 6d65 global environme │ │ │ │ │ -00011fd0: 6e74 2062 6c6f 636b 2070 726f 7669 6465 nt block provide │ │ │ │ │ -00011fe0: 7320 6120 6665 7720 7761 7973 2074 6f20 s a few ways to │ │ │ │ │ -00011ff0: 6166 6665 6374 2074 6865 0a65 6e74 6972 affect the.entir │ │ │ │ │ -00012000: 6520 7363 656e 652e 2020 5468 6520 626c e scene. The bl │ │ │ │ │ -00012010: 6f63 6b20 6d75 7374 2061 7070 6561 7220 ock must appear │ │ │ │ │ -00012020: 6173 2074 6865 206c 6173 7420 7465 7874 as the last text │ │ │ │ │ -00012030: 2069 6e20 7468 6520 e280 9873 6b65 7463 in the ...sketc │ │ │ │ │ -00012040: 68e2 8099 0a69 6e70 7574 2066 696c 652e h....input file. │ │ │ │ │ -00012050: 2020 4974 206d 6179 2069 6e63 6c75 6465 It may include │ │ │ │ │ -00012060: 2064 6566 696e 6974 696f 6e73 2c20 6275 definitions, bu │ │ │ │ │ -00012070: 7420 6e6f 7465 2074 6861 7420 7072 6576 t note that prev │ │ │ │ │ -00012080: 696f 7573 0a64 6566 696e 6974 696f 6e73 ious.definitions │ │ │ │ │ -00012090: 2061 7420 7468 6520 746f 7020 6c65 7665 at the top leve │ │ │ │ │ -000120a0: 6c20 286e 6f74 206e 6573 7465 6420 696e l (not nested in │ │ │ │ │ -000120b0: 7369 6465 2062 6c6f 636b 7329 2061 7265 side blocks) are │ │ │ │ │ -000120c0: 2061 6c73 6f0a 6176 6169 6c61 626c 652e also.available. │ │ │ │ │ -000120d0: 0a0a 2a53 796e 7461 783a 2a0a 2020 2020 ..*Syntax:*. │ │ │ │ │ -000120e0: 2067 6c6f 6261 6c20 7b20 454e 5649 524f global { ENVIRO │ │ │ │ │ -000120f0: 4e4d 454e 545f 5345 5454 494e 4753 207d NMENT_SETTINGS } │ │ │ │ │ -00012100: 0a54 6865 2063 6f6e 7465 6e74 7320 6f66 .The contents of │ │ │ │ │ -00012110: 2045 4e56 4952 4f4e 4d45 4e54 5f53 4554 ENVIRONMENT_SET │ │ │ │ │ -00012120: 5449 4e47 5320 6172 6520 6469 7363 7573 TINGS are discus │ │ │ │ │ -00012130: 7365 6420 696e 2074 6865 2073 6563 7469 sed in the secti │ │ │ │ │ -00012140: 6f6e 7320 7468 6174 0a66 6f6c 6c6f 772e ons that.follow. │ │ │ │ │ -00012150: 0a0a 2a20 4d65 6e75 3a0a 0a2a 2047 6c6f ..* Menu:..* Glo │ │ │ │ │ -00012160: 6261 6c20 6f70 7469 6f6e 733a 3a20 2020 bal options:: │ │ │ │ │ -00012170: 2020 2020 2020 2020 2020 2041 7474 7269 Attri │ │ │ │ │ -00012180: 6275 7465 7320 6f66 2074 6865 2065 6e74 butes of the ent │ │ │ │ │ -00012190: 6972 6520 6472 6177 696e 672e 0a2a 2043 ire drawing..* C │ │ │ │ │ -000121a0: 616d 6572 613a 3a20 2020 2020 2020 2020 amera:: │ │ │ │ │ -000121b0: 2020 2020 2020 2020 2020 2020 2041 2066 A f │ │ │ │ │ -000121c0: 696e 616c 2063 616d 6572 6120 7472 616e inal camera tran │ │ │ │ │ -000121d0: 7366 6f72 6d61 7469 6f6e 206f 6620 7468 sformation of th │ │ │ │ │ -000121e0: 6520 7363 656e 652e 0a2a 2050 6963 7475 e scene..* Pictu │ │ │ │ │ -000121f0: 7265 2062 6f78 3a3a 2020 2020 2020 2020 re box:: │ │ │ │ │ -00012200: 2020 2020 2020 2020 2053 6574 7469 6e67 Setting │ │ │ │ │ -00012210: 2074 6865 2062 6f75 6e64 696e 6720 626f the bounding bo │ │ │ │ │ -00012220: 7820 616e 6420 3264 2063 6c69 7070 696e x and 2d clippin │ │ │ │ │ -00012230: 672e 0a2a 2046 7261 6d65 3a3a 2020 2020 g..* Frame:: │ │ │ │ │ -00012240: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -00012250: 2020 2041 6464 696e 6720 6120 626f 7820 Adding a box │ │ │ │ │ -00012260: 6172 6f75 6e64 2074 6865 2064 7261 7769 around the drawi │ │ │ │ │ -00012270: 6e67 2e0a 2a20 4c61 6e67 7561 6765 3a3a ng..* Language:: │ │ │ │ │ -00012280: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -00012290: 2020 2020 5365 7474 696e 6720 7468 6520 Setting the │ │ │ │ │ -000122a0: 6f75 7470 7574 206c 616e 6775 6167 652e output language. │ │ │ │ │ -000122b0: 0a0a 1f0a 4669 6c65 3a20 736b 6574 6368 ....File: sketch │ │ │ │ │ -000122c0: 2e69 6e66 6f2c 2020 4e6f 6465 3a20 476c .info, Node: Gl │ │ │ │ │ -000122d0: 6f62 616c 206f 7074 696f 6e73 2c20 204e obal options, N │ │ │ │ │ -000122e0: 6578 743a 2043 616d 6572 612c 2020 5072 ext: Camera, Pr │ │ │ │ │ -000122f0: 6576 3a20 476c 6f62 616c 2065 6e76 6972 ev: Global envir │ │ │ │ │ -00012300: 6f6e 6d65 6e74 2c20 2055 703a 2047 6c6f onment, Up: Glo │ │ │ │ │ -00012310: 6261 6c20 656e 7669 726f 6e6d 656e 740a bal environment. │ │ │ │ │ -00012320: 0a33 2e34 2e31 2047 6c6f 6261 6c20 6f70 .3.4.1 Global op │ │ │ │ │ -00012330: 7469 6f6e 730a 2d2d 2d2d 2d2d 2d2d 2d2d tions.---------- │ │ │ │ │ -00012340: 2d2d 2d2d 2d2d 2d2d 2d2d 0a0a 2a53 796e ----------..*Syn │ │ │ │ │ -00012350: 7461 783a 2a0a 2020 2020 2073 6574 205b tax:*. set [ │ │ │ │ │ -00012360: 204f 5054 494f 4e53 205d 0a54 6865 2063 OPTIONS ].The c │ │ │ │ │ -00012370: 6f6e 7465 6e74 7320 6f66 204f 5054 494f ontents of OPTIO │ │ │ │ │ -00012380: 4e53 2c20 6578 6365 7074 2066 6f72 20e2 NS, except for . │ │ │ │ │ -00012390: 8098 736b 6574 6368 e280 9920 696e 7465 ..sketch... inte │ │ │ │ │ -000123a0: 726e 616c 206f 7074 696f 6e73 2c20 6172 rnal options, ar │ │ │ │ │ -000123b0: 650a 636f 7069 6564 2061 732d 6973 2074 e.copied as-is t │ │ │ │ │ -000123c0: 6f20 6120 5c70 7373 6574 2074 6861 7420 o a \psset that │ │ │ │ │ -000123d0: 6170 7065 6172 7320 6265 666f 7265 2061 appears before a │ │ │ │ │ -000123e0: 6e79 7468 696e 6720 656c 7365 2069 6e20 nything else in │ │ │ │ │ -000123f0: 7468 6520 6f75 7470 7574 0a66 696c 652e the output.file. │ │ │ │ │ -00012400: 2020 5468 6973 2069 7320 6120 676f 6f64 This is a good │ │ │ │ │ -00012410: 2070 6c61 6365 2074 6f20 7365 7420 e280 place to set .. │ │ │ │ │ -00012420: 9875 6e69 74e2 8099 2c20 6120 6465 6661 .unit..., a defa │ │ │ │ │ -00012430: 756c 7420 e280 986c 696e 6577 6964 7468 ult ...linewidth │ │ │ │ │ -00012440: e280 992c 2065 7463 2e0a 0a20 2020 496e ..., etc... In │ │ │ │ │ -00012450: 7465 726e 616c 206f 7074 696f 6e73 2077 ternal options w │ │ │ │ │ -00012460: 6f72 6b20 6f6e 2061 6c6c 206f 626a 6563 ork on all objec │ │ │ │ │ -00012470: 7473 2077 6865 7265 2074 6865 7920 6d61 ts where they ma │ │ │ │ │ -00012480: 6b65 2073 656e 7365 2e20 2054 6869 730a ke sense. This. │ │ │ │ │ -00012490: 696e 636c 7564 6573 20e2 8098 6375 6c6c includes ...cull │ │ │ │ │ -000124a0: e280 9920 616e 6420 e280 9873 706c 6974 ... and ...split │ │ │ │ │ -000124b0: e280 9920 2862 7574 206e 6f74 20e2 8098 ... (but not ... │ │ │ │ │ -000124c0: 6c61 79e2 8099 292e 2020 2a4e 6f74 6520 lay...). *Note │ │ │ │ │ -000124d0: 496e 7465 726e 616c 206f 7074 696f 6e73 Internal options │ │ │ │ │ -000124e0: 3a3a 2e0a 0a1f 0a46 696c 653a 2073 6b65 ::.....File: ske │ │ │ │ │ -000124f0: 7463 682e 696e 666f 2c20 204e 6f64 653a tch.info, Node: │ │ │ │ │ -00012500: 2043 616d 6572 612c 2020 4e65 7874 3a20 Camera, Next: │ │ │ │ │ -00012510: 5069 6374 7572 6520 626f 782c 2020 5072 Picture box, Pr │ │ │ │ │ -00012520: 6576 3a20 476c 6f62 616c 206f 7074 696f ev: Global optio │ │ │ │ │ -00012530: 6e73 2c20 2055 703a 2047 6c6f 6261 6c20 ns, Up: Global │ │ │ │ │ -00012540: 656e 7669 726f 6e6d 656e 740a 0a33 2e34 environment..3.4 │ │ │ │ │ -00012550: 2e32 2043 616d 6572 610a 2d2d 2d2d 2d2d .2 Camera.------ │ │ │ │ │ -00012560: 2d2d 2d2d 2d2d 0a0a 2a53 796e 7461 783a ------..*Syntax: │ │ │ │ │ -00012570: 2a0a 2020 2020 2063 616d 6572 6120 5452 *. camera TR │ │ │ │ │ -00012580: 414e 5346 4f52 4d5f 4558 5052 4553 5349 ANSFORM_EXPRESSI │ │ │ │ │ -00012590: 4f4e 0a20 2020 5468 6520 5452 414e 5346 ON. The TRANSF │ │ │ │ │ -000125a0: 4f52 4d5f 4558 5052 4553 5349 4f4e 2069 ORM_EXPRESSION i │ │ │ │ │ -000125b0: 7320 6170 706c 6965 6420 6166 7465 7220 s applied after │ │ │ │ │ -000125c0: 616c 6c20 6f74 6865 7220 7472 616e 7366 all other transf │ │ │ │ │ -000125d0: 6f72 6d61 7469 6f6e 730a 6f66 2074 6865 ormations.of the │ │ │ │ │ -000125e0: 2073 6365 6e65 2e20 2054 6869 7320 6973 scene. This is │ │ │ │ │ -000125f0: 2063 7572 7265 6e74 6c79 206f 6e6c 7920 currently only │ │ │ │ │ -00012600: 7573 6566 756c 2066 6f72 2074 7261 6e73 useful for trans │ │ │ │ │ -00012610: 666f 726d 696e 6720 7468 650a 626f 756e forming the.boun │ │ │ │ │ -00012620: 6469 6e67 2062 6f78 2e20 202a 4e6f 7465 ding box. *Note │ │ │ │ │ -00012630: 2050 6963 7475 7265 2062 6f78 3a3a 2e20 Picture box::. │ │ │ │ │ -00012640: 2049 7420 7769 6c6c 2070 6c61 7920 6120 It will play a │ │ │ │ │ -00012650: 726f 6c65 2069 6e20 616e 7920 6675 7475 role in any futu │ │ │ │ │ -00012660: 7265 0a69 6d70 6c65 6d65 6e74 6174 696f re.implementatio │ │ │ │ │ -00012670: 6e20 6f66 2063 6c69 7070 696e 672e 0a0a n of clipping... │ │ │ │ │ -00012680: 1f0a 4669 6c65 3a20 736b 6574 6368 2e69 ..File: sketch.i │ │ │ │ │ -00012690: 6e66 6f2c 2020 4e6f 6465 3a20 5069 6374 nfo, Node: Pict │ │ │ │ │ -000126a0: 7572 6520 626f 782c 2020 4e65 7874 3a20 ure box, Next: │ │ │ │ │ -000126b0: 4672 616d 652c 2020 5072 6576 3a20 4361 Frame, Prev: Ca │ │ │ │ │ -000126c0: 6d65 7261 2c20 2055 703a 2047 6c6f 6261 mera, Up: Globa │ │ │ │ │ -000126d0: 6c20 656e 7669 726f 6e6d 656e 740a 0a33 l environment..3 │ │ │ │ │ -000126e0: 2e34 2e33 2050 6963 7475 7265 2062 6f78 .4.3 Picture box │ │ │ │ │ -000126f0: 0a2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d .--------------- │ │ │ │ │ -00012700: 2d2d 0a0a 2a53 796e 7461 783a 2a0a 2020 --..*Syntax:*. │ │ │ │ │ -00012710: 2020 2070 6963 7475 7265 626f 785b 4241 picturebox[BA │ │ │ │ │ -00012720: 5345 4c49 4e45 5d0a 2020 2020 2070 6963 SELINE]. pic │ │ │ │ │ -00012730: 7475 7265 626f 785b 4241 5345 4c49 4e45 turebox[BASELINE │ │ │ │ │ -00012740: 5d20 2850 3129 2850 3229 0a54 6865 2066 ] (P1)(P2).The f │ │ │ │ │ -00012750: 6972 7374 2066 6f72 6d20 6f66 20e2 8098 irst form of ... │ │ │ │ │ -00012760: 7069 6374 7572 6562 6f78 e280 9920 6361 picturebox... ca │ │ │ │ │ -00012770: 7573 6573 2061 2073 6361 6c61 7220 4241 uses a scalar BA │ │ │ │ │ -00012780: 5345 4c49 4e45 2066 7261 6374 696f 6e20 SELINE fraction │ │ │ │ │ -00012790: 746f 2062 650a 656d 6974 7465 6420 696e to be.emitted in │ │ │ │ │ -000127a0: 2074 6865 20e2 8098 7073 7069 6374 7572 the ...pspictur │ │ │ │ │ -000127b0: 65e2 8099 2065 6e76 6972 6f6e 6d65 6e74 e... environment │ │ │ │ │ -000127c0: 206f 6620 7468 6520 6f75 7470 7574 2e20 of the output. │ │ │ │ │ -000127d0: 2053 6565 20e2 8098 5053 5472 6963 6b73 See ...PSTricks │ │ │ │ │ -000127e0: e280 990a 646f 6375 6d65 6e74 6174 696f ....documentatio │ │ │ │ │ -000127f0: 6e20 666f 7220 e280 9870 7370 6963 7475 n for ...pspictu │ │ │ │ │ -00012800: 7265 e280 992e 0a0a 2020 2049 6e20 7468 re...... In th │ │ │ │ │ -00012810: 6520 7365 636f 6e64 2066 6f72 6d2c 2074 e second form, t │ │ │ │ │ -00012820: 6865 2042 4153 454c 494e 4520 6672 6163 he BASELINE frac │ │ │ │ │ -00012830: 7469 6f6e 2069 7320 6f70 7469 6f6e 616c tion is optional │ │ │ │ │ -00012840: 2c20 616e 6420 7468 6520 7477 6f0a 706f , and the two.po │ │ │ │ │ -00012850: 696e 7473 2074 6861 7420 666f 6c6c 6f77 ints that follow │ │ │ │ │ -00012860: 2064 6566 696e 6520 7468 6520 6469 6167 define the diag │ │ │ │ │ -00012870: 6f6e 616c 206f 6620 6120 7468 7265 652d onal of a three- │ │ │ │ │ -00012880: 6469 6d65 6e73 696f 6e61 6c20 626f 756e dimensional boun │ │ │ │ │ -00012890: 6469 6e67 0a62 6f78 2066 6f72 2074 6865 ding.box for the │ │ │ │ │ -000128a0: 2063 6f6d 706c 6574 6564 2073 6365 6e65 completed scene │ │ │ │ │ -000128b0: 2e20 2054 6865 2070 6172 616c 6c65 6c20 . The parallel │ │ │ │ │ -000128c0: 7072 6f6a 6563 7469 6f6e 206f 6620 7468 projection of th │ │ │ │ │ -000128d0: 6520 626f 756e 6469 6e67 0a62 6f78 2064 e bounding.box d │ │ │ │ │ -000128e0: 6574 6572 6d69 6e65 7320 7468 6520 636f etermines the co │ │ │ │ │ -000128f0: 726e 6572 7320 6f66 2074 6865 2064 7261 rners of the dra │ │ │ │ │ -00012900: 7769 6e67 2773 20e2 8098 7073 7069 6374 wing's ...pspict │ │ │ │ │ -00012910: 7572 652a e280 9920 656e 7669 726f 6e6d ure*... environm │ │ │ │ │ -00012920: 656e 742c 0a77 6869 6368 2069 7320 7573 ent,.which is us │ │ │ │ │ -00012930: 6564 2069 6e20 706c 6163 6520 6f66 20e2 ed in place of . │ │ │ │ │ -00012940: 8098 7073 7069 6374 7572 65e2 8099 2e20 ..pspicture.... │ │ │ │ │ -00012950: 2054 6869 7320 6361 7573 6573 2050 6f73 This causes Pos │ │ │ │ │ -00012960: 7453 6372 6970 7420 746f 2063 6c69 700a tScript to clip. │ │ │ │ │ -00012970: 7468 6520 6669 6e61 6c20 6472 6177 696e the final drawin │ │ │ │ │ -00012980: 6720 746f 2074 6865 2062 6f75 6e64 696e g to the boundin │ │ │ │ │ -00012990: 6720 626f 7820 696e 2032 642e 2020 4966 g box in 2d. If │ │ │ │ │ -000129a0: 2074 6865 7265 2069 7320 6120 e280 9863 there is a ...c │ │ │ │ │ -000129b0: 616d 6572 61e2 8099 0a73 7065 6369 6669 amera....specifi │ │ │ │ │ -000129c0: 6564 2c20 7468 6520 6361 6d65 7261 2074 ed, the camera t │ │ │ │ │ -000129d0: 7261 6e66 6f72 6d61 7469 6f6e 2069 7320 ranformation is │ │ │ │ │ -000129e0: 6170 706c 6965 6420 746f 2074 6865 2062 applied to the b │ │ │ │ │ -000129f0: 6f75 6e64 696e 6720 626f 782c 2061 6e64 ounding box, and │ │ │ │ │ -00012a00: 0a74 6865 20e2 8098 7073 7069 6374 7572 .the ...pspictur │ │ │ │ │ -00012a10: 65e2 8099 2069 7320 7365 7420 6a75 7374 e... is set just │ │ │ │ │ -00012a20: 206c 6172 6765 2065 6e6f 7567 6820 746f large enough to │ │ │ │ │ -00012a30: 2069 6e63 6c75 6465 2074 6865 2074 7261 include the tra │ │ │ │ │ -00012a40: 6e73 666f 726d 6564 2062 6f78 2e0a 0a20 nsformed box... │ │ │ │ │ -00012a50: 2020 5768 656e 206e 6f20 626f 756e 6469 When no boundi │ │ │ │ │ -00012a60: 6e67 2062 6f78 2069 7320 6769 7665 6e2c ng box is given, │ │ │ │ │ -00012a70: 20e2 8098 736b 6574 6368 e280 9920 636f ...sketch... co │ │ │ │ │ -00012a80: 6d70 7574 6573 206f 6e65 2061 7574 6f6d mputes one autom │ │ │ │ │ -00012a90: 6174 6963 616c 6c79 2e0a 0a1f 0a46 696c atically.....Fil │ │ │ │ │ -00012aa0: 653a 2073 6b65 7463 682e 696e 666f 2c20 e: sketch.info, │ │ │ │ │ -00012ab0: 204e 6f64 653a 2046 7261 6d65 2c20 204e Node: Frame, N │ │ │ │ │ -00012ac0: 6578 743a 204c 616e 6775 6167 652c 2020 ext: Language, │ │ │ │ │ -00012ad0: 5072 6576 3a20 5069 6374 7572 6520 626f Prev: Picture bo │ │ │ │ │ -00012ae0: 782c 2020 5570 3a20 476c 6f62 616c 2065 x, Up: Global e │ │ │ │ │ -00012af0: 6e76 6972 6f6e 6d65 6e74 0a0a 332e 342e nvironment..3.4. │ │ │ │ │ -00012b00: 3420 4672 616d 650a 2d2d 2d2d 2d2d 2d2d 4 Frame.-------- │ │ │ │ │ -00012b10: 2d2d 2d0a 0a2a 5379 6e74 6178 3a2a 0a20 ---..*Syntax:*. │ │ │ │ │ -00012b20: 2020 2020 6672 616d 6520 5b4f 5054 494f frame [OPTIO │ │ │ │ │ -00012b30: 4e53 5d0a 4361 7573 6573 2061 205c 7073 NS].Causes a \ps │ │ │ │ │ -00012b40: 6672 616d 6562 6f78 2074 6f20 7375 7272 framebox to surr │ │ │ │ │ -00012b50: 6f75 6e64 2074 6865 20e2 8098 7073 7069 ound the ...pspi │ │ │ │ │ -00012b60: 6374 7572 65e2 8099 2065 6e76 6972 6f6e cture... environ │ │ │ │ │ -00012b70: 6d65 6e74 2069 6e20 7468 650a 6f75 7470 ment in the.outp │ │ │ │ │ -00012b80: 7574 2e20 2049 6620 4f50 5449 4f4e 5320 ut. If OPTIONS │ │ │ │ │ -00012b90: 6172 6520 7072 6573 656e 742c 2074 6865 are present, the │ │ │ │ │ -00012ba0: 7920 6172 6520 636f 7069 6564 2061 732d y are copied as- │ │ │ │ │ -00012bb0: 6973 2e20 204e 6f72 6d61 6c6c 7920 6f6e is. Normally on │ │ │ │ │ -00012bc0: 650a 776f 756c 6420 7761 6e74 2074 6f20 e.would want to │ │ │ │ │ -00012bd0: 7365 7420 e280 986c 696e 6577 6964 7468 set ...linewidth │ │ │ │ │ -00012be0: e280 992c 20e2 8098 6c69 6e65 7374 796c ..., ...linestyl │ │ │ │ │ -00012bf0: 65e2 8099 2c20 e280 986c 696e 6563 6f6c e..., ...linecol │ │ │ │ │ -00012c00: 6f72 e280 992c 2065 7463 2e20 2049 660a or..., etc. If. │ │ │ │ │ -00012c10: 6f6d 6974 7465 642c 2074 6865 6e20 e280 omitted, then .. │ │ │ │ │ -00012c20: 9866 7261 6d65 7365 703d 3070 74e2 8099 .framesep=0pt... │ │ │ │ │ -00012c30: 2069 7320 6164 6465 6420 736f 2074 6861 is added so tha │ │ │ │ │ -00012c40: 7420 7468 6520 6672 616d 6520 7469 6768 t the frame tigh │ │ │ │ │ -00012c50: 746c 7920 6875 6773 2074 6865 0ae2 8098 tly hugs the.... │ │ │ │ │ -00012c60: 7073 7069 6374 7572 65e2 8099 2e0a 0a1f pspicture....... │ │ │ │ │ -00012c70: 0a46 696c 653a 2073 6b65 7463 682e 696e .File: sketch.in │ │ │ │ │ -00012c80: 666f 2c20 204e 6f64 653a 204c 616e 6775 fo, Node: Langu │ │ │ │ │ -00012c90: 6167 652c 2020 5072 6576 3a20 4672 616d age, Prev: Fram │ │ │ │ │ -00012ca0: 652c 2020 5570 3a20 476c 6f62 616c 2065 e, Up: Global e │ │ │ │ │ -00012cb0: 6e76 6972 6f6e 6d65 6e74 0a0a 332e 342e nvironment..3.4. │ │ │ │ │ -00012cc0: 3520 4c61 6e67 7561 6765 0a2d 2d2d 2d2d 5 Language.----- │ │ │ │ │ -00012cd0: 2d2d 2d2d 2d2d 2d2d 2d0a 0a20 2020 2020 ---------.. │ │ │ │ │ -00012ce0: 6c61 6e67 7561 6765 2074 696b 7a0a 2020 language tikz. │ │ │ │ │ -00012cf0: 2020 206c 616e 6775 6167 6520 7469 6b7a language tikz │ │ │ │ │ -00012d00: 2c20 636f 6e74 6578 740a 2020 2020 206c , context. l │ │ │ │ │ -00012d10: 616e 6775 6167 6520 7073 7472 6963 6b73 anguage pstricks │ │ │ │ │ -00012d20: 0a20 2020 2020 6c61 6e67 7561 6765 2070 . language p │ │ │ │ │ -00012d30: 7374 7269 636b 732c 206c 6174 6578 0a53 stricks, latex.S │ │ │ │ │ -00012d40: 6574 7320 7468 6520 6f75 7470 7574 206c ets the output l │ │ │ │ │ -00012d50: 616e 6775 6167 6520 6765 6e65 7261 7465 anguage generate │ │ │ │ │ -00012d60: 6420 6279 20e2 8098 736b 6574 6368 e280 d by ...sketch.. │ │ │ │ │ -00012d70: 992e 2020 5468 6520 7365 7420 6f66 206f .. The set of o │ │ │ │ │ -00012d80: 7074 696f 6e73 0a75 6e64 6572 7374 6f6f ptions.understoo │ │ │ │ │ -00012d90: 6420 6279 2073 6b65 7463 6820 616c 736f d by sketch also │ │ │ │ │ -00012da0: 2063 6861 6e67 6573 2e20 2046 6f72 2065 changes. For e │ │ │ │ │ -00012db0: 7861 6d70 6c65 2c20 7468 6520 e280 9850 xample, the ...P │ │ │ │ │ -00012dc0: 5354 7269 636b 73e2 8099 206f 7074 696f STricks... optio │ │ │ │ │ -00012dd0: 6e0a e280 986c 696e 6577 6964 7468 e280 n....linewidth.. │ │ │ │ │ -00012de0: 9920 7769 6c6c 206e 6f74 2062 6520 7072 . will not be pr │ │ │ │ │ -00012df0: 6f70 6572 6c79 2068 616e 646c 6564 2069 operly handled i │ │ │ │ │ -00012e00: 6620 e280 986c 616e 6775 6167 65e2 8099 f ...language... │ │ │ │ │ -00012e10: 2069 7320 7365 7420 746f 20e2 8098 7469 is set to ...ti │ │ │ │ │ -00012e20: 6b7a e280 992e 0a53 696d 696c 6172 6c79 kz.....Similarly │ │ │ │ │ -00012e30: 2c20 7468 6520 e280 9854 696b 5ae2 8099 , the ...TikZ... │ │ │ │ │ -00012e40: 206f 7074 696f 6e20 e280 986c 696e 6520 option ...line │ │ │ │ │ -00012e50: 7374 796c 65e2 8099 2028 6e6f 7465 2074 style... (note t │ │ │ │ │ -00012e60: 6865 2073 7061 6365 2920 7769 6c6c 206e he space) will n │ │ │ │ │ -00012e70: 6f74 2062 650a 7072 6f70 6572 6c79 2068 ot be.properly h │ │ │ │ │ -00012e80: 616e 646c 6564 2069 6620 e280 986c 616e andled if ...lan │ │ │ │ │ -00012e90: 6775 6167 65e2 8099 2069 7320 7365 7420 guage... is set │ │ │ │ │ -00012ea0: 746f 20e2 8098 7073 7472 6963 6b73 e280 to ...pstricks.. │ │ │ │ │ -00012eb0: 992e 2020 4966 206e 6f20 6c61 6e67 7561 .. If no langua │ │ │ │ │ -00012ec0: 6765 2069 730a 7370 6563 6966 6965 642c ge is.specified, │ │ │ │ │ -00012ed0: 2074 6865 2064 6566 6175 6c74 20e2 8098 the default ... │ │ │ │ │ -00012ee0: 7073 7472 6963 6b73 e280 9920 6973 2075 pstricks... is u │ │ │ │ │ -00012ef0: 7365 642e 0a0a 2020 2041 6e20 6f70 7469 sed... An opti │ │ │ │ │ -00012f00: 6f6e 616c 2063 6f6d 6d61 2066 6f6c 6c6f onal comma follo │ │ │ │ │ -00012f10: 7765 6420 6279 20e2 8098 6c61 7465 78e2 wed by ...latex. │ │ │ │ │ -00012f20: 8099 206f 7220 e280 9863 6f6e 7465 7874 .. or ...context │ │ │ │ │ -00012f30: e280 9920 7370 6563 6966 6965 7320 7468 ... specifies th │ │ │ │ │ -00012f40: 650a 6d61 6372 6f20 7061 636b 6167 6520 e.macro package │ │ │ │ │ -00012f50: 7468 6174 2074 6865 206f 7574 7075 7420 that the output │ │ │ │ │ -00012f60: 7368 6f75 6c64 2061 7373 756d 652e 2020 should assume. │ │ │ │ │ -00012f70: 5468 6973 2061 6666 6563 7473 2074 6865 This affects the │ │ │ │ │ -00012f80: 20e2 8098 7069 6374 7572 65e2 8099 0a65 ...picture....e │ │ │ │ │ -00012f90: 6e76 6972 6f6e 6d65 6e74 2063 6f6d 6d61 nvironment comma │ │ │ │ │ -00012fa0: 6e64 7320 656d 6974 7465 6420 616e 6420 nds emitted and │ │ │ │ │ -00012fb0: 7468 6520 646f 6375 6d65 6e74 2074 656d the document tem │ │ │ │ │ -00012fc0: 706c 6174 6520 7573 6564 2077 6974 6820 plate used with │ │ │ │ │ -00012fd0: 7468 650a e280 982d 54e2 8099 206f 7074 the....-T... opt │ │ │ │ │ -00012fe0: 696f 6e2e 2020 2a4e 6f74 6520 436f 6d6d ion. *Note Comm │ │ │ │ │ -00012ff0: 616e 6420 6c69 6e65 3a3a 2e20 204e 6f74 and line::. Not │ │ │ │ │ -00013000: 6520 7468 6174 2061 7420 7468 6520 7469 e that at the ti │ │ │ │ │ -00013010: 6d65 2074 6869 7320 6d61 6e75 616c 0a77 me this manual.w │ │ │ │ │ -00013020: 6173 2067 656e 6572 6174 6564 2c20 e280 as generated, .. │ │ │ │ │ -00013030: 9850 5354 7269 636b 73e2 8099 2077 6173 .PSTricks... was │ │ │ │ │ -00013040: 206e 6f74 2073 7570 706f 7274 6564 2062 not supported b │ │ │ │ │ -00013050: 7920 4c61 5465 5820 6f72 2062 7920 e280 y LaTeX or by .. │ │ │ │ │ -00013060: 9843 6f6e 5465 5874 e280 992e 0a0a 1f0a .ConTeXt........ │ │ │ │ │ -00013070: 4669 6c65 3a20 736b 6574 6368 2e69 6e66 File: sketch.inf │ │ │ │ │ -00013080: 6f2c 2020 4e6f 6465 3a20 4275 696c 6469 o, Node: Buildi │ │ │ │ │ -00013090: 6e67 2061 2064 7261 7769 6e67 2c20 204e ng a drawing, N │ │ │ │ │ -000130a0: 6578 743a 2043 6f6d 6d61 6e64 206c 696e ext: Command lin │ │ │ │ │ -000130b0: 652c 2020 5072 6576 3a20 496e 7075 7420 e, Prev: Input │ │ │ │ │ -000130c0: 6c61 6e67 7561 6765 2c20 2055 703a 2054 language, Up: T │ │ │ │ │ -000130d0: 6f70 0a0a 3420 4275 696c 6469 6e67 2061 op..4 Building a │ │ │ │ │ -000130e0: 2064 7261 7769 6e67 0a2a 2a2a 2a2a 2a2a drawing.******* │ │ │ │ │ -000130f0: 2a2a 2a2a 2a2a 2a2a 2a2a 2a2a 2a0a 0a53 *************..S │ │ │ │ │ -00013100: 7563 6365 7373 6675 6c20 6472 6177 696e uccessful drawin │ │ │ │ │ -00013110: 6773 2077 6974 6820 e280 9873 6b65 7463 gs with ...sketc │ │ │ │ │ -00013120: 68e2 8099 2061 6e64 2077 6974 6820 616e h... and with an │ │ │ │ │ -00013130: 7920 7363 656e 6520 6465 7363 7269 7074 y scene descript │ │ │ │ │ -00013140: 696f 6e0a 6c61 6e67 7561 6765 2072 6571 ion.language req │ │ │ │ │ -00013150: 7569 7265 2074 6861 7420 7468 6520 7573 uire that the us │ │ │ │ │ -00013160: 6572 2064 6576 656c 6f70 2061 6e20 6163 er develop an ac │ │ │ │ │ -00013170: 6375 7261 7465 206d 656e 7461 6c20 7069 curate mental pi │ │ │ │ │ -00013180: 6374 7572 6520 6f66 2068 6572 0a63 6f64 cture of her.cod │ │ │ │ │ -00013190: 6520 616e 6420 6974 7320 6d65 616e 696e e and its meanin │ │ │ │ │ -000131a0: 672e 2020 5468 6973 2069 6d61 6765 2069 g. This image i │ │ │ │ │ -000131b0: 7320 6265 7374 2062 7569 6c74 2069 6e20 s best built in │ │ │ │ │ -000131c0: 736d 616c 6c20 7069 6563 6573 2e0a 5468 small pieces..Th │ │ │ │ │ -000131d0: 6572 6566 6f72 652c 20e2 8098 736b 6574 erefore, ...sket │ │ │ │ │ -000131e0: 6368 e280 9920 696e 7075 7473 2061 7265 ch... inputs are │ │ │ │ │ -000131f0: 2062 6573 7420 6372 6561 7465 6420 696e best created in │ │ │ │ │ -00013200: 2073 6d61 6c6c 2069 6e63 7265 6d65 6e74 small increment │ │ │ │ │ -00013210: 7320 7769 7468 0a66 7265 7175 656e 7420 s with.frequent │ │ │ │ │ -00013220: 7061 7573 6573 2074 6f20 636f 6d70 696c pauses to compil │ │ │ │ │ -00013230: 6520 616e 6420 7669 6577 2074 6865 2072 e and view the r │ │ │ │ │ -00013240: 6573 756c 7473 2e20 2043 6172 6566 756c esults. Careful │ │ │ │ │ -00013250: 2063 6f6d 6d65 6e74 7320 696e 0a74 6865 comments in.the │ │ │ │ │ -00013260: 2069 6e70 7574 206f 6674 656e 2068 656c input often hel │ │ │ │ │ -00013270: 7020 6173 2061 2073 6365 6e65 2067 726f p as a scene gro │ │ │ │ │ -00013280: 7773 2069 6e20 636f 6d70 6c65 7869 7479 ws in complexity │ │ │ │ │ -00013290: 2e0a 0a2a 204d 656e 753a 0a0a 2a20 4f76 ...* Menu:..* Ov │ │ │ │ │ -000132a0: 6572 7669 6577 3a3a 2020 2020 2020 2020 erview:: │ │ │ │ │ -000132b0: 2020 2020 2020 2020 2020 2020 4275 696c Buil │ │ │ │ │ -000132c0: 6469 6e67 2061 2073 7562 7374 616e 7469 ding a substanti │ │ │ │ │ -000132d0: 616c 2064 7261 7769 6e67 2e0a 2a20 4120 al drawing..* A │ │ │ │ │ -000132e0: 7465 6368 6e69 6361 6c20 6472 6177 696e technical drawin │ │ │ │ │ -000132f0: 673a 3a20 2020 2020 2020 2020 416e 2065 g:: An e │ │ │ │ │ -00013300: 7861 6d70 6c65 2077 6974 6820 6669 6e65 xample with fine │ │ │ │ │ -00013310: 2070 6c61 6365 6d65 6e74 2e0a 2a20 4120 placement..* A │ │ │ │ │ -00013320: 6869 6572 6172 6368 6963 616c 206d 6f64 hierarchical mod │ │ │ │ │ -00013330: 656c 3a3a 2020 2020 2020 2020 416e 2065 el:: An e │ │ │ │ │ -00013340: 7861 6d70 6c65 2077 6974 6820 7377 6565 xample with swee │ │ │ │ │ -00013350: 7073 2061 6e64 2070 7574 732e 0a2a 2043 ps and puts..* C │ │ │ │ │ -00013360: 6176 6561 7473 3a3a 2020 2020 2020 2020 aveats:: │ │ │ │ │ -00013370: 2020 2020 2020 2020 2020 2020 2057 6865 Whe │ │ │ │ │ -00013380: 7265 2074 726f 7562 6c65 2063 616e 206f re trouble can o │ │ │ │ │ -00013390: 6363 7572 2e0a 0a1f 0a46 696c 653a 2073 ccur.....File: s │ │ │ │ │ -000133a0: 6b65 7463 682e 696e 666f 2c20 204e 6f64 ketch.info, Nod │ │ │ │ │ -000133b0: 653a 204f 7665 7276 6965 772c 2020 4e65 e: Overview, Ne │ │ │ │ │ -000133c0: 7874 3a20 4120 7465 6368 6e69 6361 6c20 xt: A technical │ │ │ │ │ -000133d0: 6472 6177 696e 672c 2020 5072 6576 3a20 drawing, Prev: │ │ │ │ │ -000133e0: 4275 696c 6469 6e67 2061 2064 7261 7769 Building a drawi │ │ │ │ │ -000133f0: 6e67 2c20 2055 703a 2042 7569 6c64 696e ng, Up: Buildin │ │ │ │ │ -00013400: 6720 6120 6472 6177 696e 670a 0a34 2e31 g a drawing..4.1 │ │ │ │ │ -00013410: 204f 7665 7276 6965 770a 3d3d 3d3d 3d3d Overview.====== │ │ │ │ │ -00013420: 3d3d 3d3d 3d3d 0a0a 4173 2061 6e20 6f76 ======..As an ov │ │ │ │ │ -00013430: 6572 7669 6577 2c20 6c65 7427 7320 6465 erview, let's de │ │ │ │ │ -00013440: 7665 6c6f 7020 6120 6469 6167 7261 6d20 velop a diagram │ │ │ │ │ -00013450: 7468 6174 2073 686f 7773 2068 6f77 2061 that shows how a │ │ │ │ │ -00013460: 2070 6572 7370 6563 7469 7665 0a70 726f perspective.pro │ │ │ │ │ -00013470: 6a65 6374 696f 6e20 7472 616e 7366 6f72 jection transfor │ │ │ │ │ -00013480: 6d20 776f 726b 732e 2020 5765 276c 6c20 m works. We'll │ │ │ │ │ -00013490: 7374 6172 7420 7769 7468 2074 6865 2074 start with the t │ │ │ │ │ -000134a0: 7261 6469 7469 6f6e 616c 2072 6566 6572 raditional refer │ │ │ │ │ -000134b0: 656e 6365 0a6f 626a 6563 7420 7573 6564 ence.object used │ │ │ │ │ -000134c0: 2069 6e20 636f 6d70 7574 6572 2067 7261 in computer gra │ │ │ │ │ -000134d0: 7068 6963 7320 7465 7874 626f 6f6b 732c phics textbooks, │ │ │ │ │ -000134e0: 2061 2068 6f75 7365 2d73 6861 7065 6420 a house-shaped │ │ │ │ │ -000134f0: 7072 6973 6d2e 2020 4265 6769 6e0a 6279 prism. Begin.by │ │ │ │ │ -00013500: 2064 6566 696e 696e 6720 7468 6520 706f defining the po │ │ │ │ │ -00013510: 696e 7473 206f 6620 7468 6520 686f 7573 ints of the hous │ │ │ │ │ -00013520: 652e 2020 5261 7468 6572 2074 6861 6e20 e. Rather than │ │ │ │ │ -00013530: 6465 6669 6e69 6e67 2074 6865 2066 6163 defining the fac │ │ │ │ │ -00013540: 6573 206f 660a 7468 6520 686f 7573 6520 es of.the house │ │ │ │ │ -00013550: 6173 2070 6f6c 7967 6f6e 7320 616e 6420 as polygons and │ │ │ │ │ -00013560: 7472 616e 7366 6f72 6d69 6e67 2074 686f transforming tho │ │ │ │ │ -00013570: 7365 2c20 7765 2061 7265 2067 6f69 6e67 se, we are going │ │ │ │ │ -00013580: 2074 6f20 7472 616e 7366 6f72 6d0a 7468 to transform.th │ │ │ │ │ -00013590: 6520 706f 696e 7473 2074 6865 6d73 656c e points themsel │ │ │ │ │ -000135a0: 7665 7320 7769 7468 20e2 8098 736b 6574 ves with ...sket │ │ │ │ │ -000135b0: 6368 e280 9920 6172 6974 686d 6574 6963 ch... arithmetic │ │ │ │ │ -000135c0: 2073 6f20 7468 6174 2077 6520 6861 7665 so that we have │ │ │ │ │ -000135d0: 206e 616d 6573 2066 6f72 0a74 6865 2074 names for.the t │ │ │ │ │ -000135e0: 7261 6e73 666f 726d 6564 2070 6f69 6e74 ransformed point │ │ │ │ │ -000135f0: 7320 6c61 7465 722e 0a20 2025 2072 6967 s later.. % rig │ │ │ │ │ -00013600: 6874 2073 6964 6520 286f 7574 7369 6465 ht side (outside │ │ │ │ │ -00013610: 2074 6f20 7269 6768 7429 0a20 2064 6566 to right). def │ │ │ │ │ -00013620: 2052 3120 2831 2c31 2c31 2920 6465 6620 R1 (1,1,1) def │ │ │ │ │ -00013630: 5232 2028 312c 2d31 2c31 2920 6465 6620 R2 (1,-1,1) def │ │ │ │ │ -00013640: 5233 2028 312c 2d31 2c2d 3129 2064 6566 R3 (1,-1,-1) def │ │ │ │ │ -00013650: 2052 3420 2831 2c31 2c2d 3129 0a20 2064 R4 (1,1,-1). d │ │ │ │ │ -00013660: 6566 2052 3520 2831 2c31 2e35 2c30 290a ef R5 (1,1.5,0). │ │ │ │ │ -00013670: 0a20 2025 206c 6566 7420 7369 6465 2028 . % left side ( │ │ │ │ │ -00013680: 6f75 7473 6964 6520 746f 2072 6967 6874 outside to right │ │ │ │ │ -00013690: 2d2d 6261 636b 7761 7264 290a 2020 6465 --backward). de │ │ │ │ │ -000136a0: 6620 5720 205b 322c 302c 305d 0a20 2064 f W [2,0,0]. d │ │ │ │ │ -000136b0: 6566 204c 3120 2852 3129 2d5b 575d 2064 ef L1 (R1)-[W] d │ │ │ │ │ -000136c0: 6566 204c 3220 2852 3229 2d5b 575d 2064 ef L2 (R2)-[W] d │ │ │ │ │ -000136d0: 6566 204c 3320 2852 3329 2d5b 575d 2064 ef L3 (R3)-[W] d │ │ │ │ │ -000136e0: 6566 204c 3420 2852 3429 2d5b 575d 0a20 ef L4 (R4)-[W]. │ │ │ │ │ -000136f0: 2064 6566 204c 3520 2852 3529 2d5b 575d def L5 (R5)-[W] │ │ │ │ │ -00013700: 0a54 6f20 6164 6420 6120 646f 6f72 2074 .To add a door t │ │ │ │ │ -00013710: 6f20 7468 6520 686f 7573 652c 2077 6520 o the house, we │ │ │ │ │ -00013720: 7573 6520 6120 706f 6c79 676f 6e20 736c use a polygon sl │ │ │ │ │ -00013730: 6967 6874 6c79 2069 6e20 6672 6f6e 7420 ightly in front │ │ │ │ │ -00013740: 6f66 2074 6865 0a66 6f72 656d 6f73 7420 of the.foremost │ │ │ │ │ -00013750: 6661 6365 206f 6620 7468 6520 686f 7573 face of the hous │ │ │ │ │ -00013760: 652e 0a20 2025 2064 6f6f 720a 2020 6465 e.. % door. de │ │ │ │ │ -00013770: 6620 6520 2e30 310a 2020 6465 6620 4431 f e .01. def D1 │ │ │ │ │ -00013780: 2028 302c 2d31 2c31 2b65 2920 6465 6620 (0,-1,1+e) def │ │ │ │ │ -00013790: 4432 2028 2e35 2c2d 312c 312b 6529 2064 D2 (.5,-1,1+e) d │ │ │ │ │ -000137a0: 6566 2044 3320 282e 352c 302c 312b 6529 ef D3 (.5,0,1+e) │ │ │ │ │ -000137b0: 2064 6566 2044 3420 2830 2c30 2c31 2b65 def D4 (0,0,1+e │ │ │ │ │ -000137c0: 290a 4e6f 7720 6c65 7427 7320 6372 6561 ).Now let's crea │ │ │ │ │ -000137d0: 7465 2061 206e 6577 2073 6574 206f 6620 te a new set of │ │ │ │ │ -000137e0: 706f 696e 7473 2074 6861 7420 6172 6520 points that are │ │ │ │ │ -000137f0: 6120 746f 2d62 652d 6465 7465 726d 696e a to-be-determin │ │ │ │ │ -00013800: 6564 0a74 7261 6e73 666f 726d 206f 6620 ed.transform of │ │ │ │ │ -00013810: 7468 6520 6f72 6967 696e 616c 732e 0a20 the originals.. │ │ │ │ │ -00013820: 2064 6566 2068 7020 7363 616c 6528 3129 def hp scale(1) │ │ │ │ │ -00013830: 2025 2068 6f75 7365 2070 6f73 6974 696f % house positio │ │ │ │ │ -00013840: 6e65 720a 2020 6465 6620 7052 3120 5b5b ner. def pR1 [[ │ │ │ │ │ -00013850: 6870 5d5d 2a28 5231 2920 6465 6620 7052 hp]]*(R1) def pR │ │ │ │ │ -00013860: 3220 5b5b 6870 5d5d 2a28 5232 2920 6465 2 [[hp]]*(R2) de │ │ │ │ │ -00013870: 6620 7052 3320 5b5b 6870 5d5d 2a28 5233 f pR3 [[hp]]*(R3 │ │ │ │ │ -00013880: 290a 2020 6465 6620 7052 3420 5b5b 6870 ). def pR4 [[hp │ │ │ │ │ -00013890: 5d5d 2a28 5234 2920 6465 6620 7052 3520 ]]*(R4) def pR5 │ │ │ │ │ -000138a0: 5b5b 6870 5d5d 2a28 5235 290a 2020 6465 [[hp]]*(R5). de │ │ │ │ │ -000138b0: 6620 704c 3120 5b5b 6870 5d5d 2a28 4c31 f pL1 [[hp]]*(L1 │ │ │ │ │ -000138c0: 2920 6465 6620 704c 3220 5b5b 6870 5d5d ) def pL2 [[hp]] │ │ │ │ │ -000138d0: 2a28 4c32 2920 6465 6620 704c 3320 5b5b *(L2) def pL3 [[ │ │ │ │ │ -000138e0: 6870 5d5d 2a28 4c33 290a 2020 6465 6620 hp]]*(L3). def │ │ │ │ │ -000138f0: 704c 3420 5b5b 6870 5d5d 2a28 4c34 2920 pL4 [[hp]]*(L4) │ │ │ │ │ -00013900: 6465 6620 704c 3520 5b5b 6870 5d5d 2a28 def pL5 [[hp]]*( │ │ │ │ │ -00013910: 4c35 290a 2020 6465 6620 7044 3120 5b5b L5). def pD1 [[ │ │ │ │ │ -00013920: 6870 5d5d 2a28 4431 2920 6465 6620 7044 hp]]*(D1) def pD │ │ │ │ │ -00013930: 3220 5b5b 6870 5d5d 2a28 4432 2920 6465 2 [[hp]]*(D2) de │ │ │ │ │ -00013940: 6620 7044 3320 5b5b 6870 5d5d 2a28 4433 f pD3 [[hp]]*(D3 │ │ │ │ │ -00013950: 290a 2020 6465 6620 7044 3420 5b5b 6870 ). def pD4 [[hp │ │ │ │ │ -00013960: 5d5d 2a28 4434 2920 0a4e 6f74 6520 7468 ]]*(D4) .Note th │ │ │ │ │ -00013970: 6520 7573 6520 6f66 2061 20e2 809c 7472 e use of a ...tr │ │ │ │ │ -00013980: 616e 7366 6f72 6d20 6465 6669 6e69 7469 ansform definiti │ │ │ │ │ -00013990: 6f6e e280 9d20 616e 6420 e280 9c74 7261 on... and ...tra │ │ │ │ │ -000139a0: 6e73 666f 726d 2072 6566 6572 656e 6365 nsform reference │ │ │ │ │ -000139b0: 73e2 809d 2e0a 4e6f 7720 6465 6669 6e65 s.....Now define │ │ │ │ │ -000139c0: 2074 6865 2073 6576 656e 2070 6f6c 7967 the seven polyg │ │ │ │ │ -000139d0: 6f6e 616c 2066 6163 6573 206f 6620 7468 onal faces of th │ │ │ │ │ -000139e0: 6520 686f 7573 6520 616e 6420 7468 6520 e house and the │ │ │ │ │ -000139f0: 646f 6f72 2075 7369 6e67 2074 6865 0a74 door using the.t │ │ │ │ │ -00013a00: 7261 6e73 666f 726d 6564 2070 6f69 6e74 ransformed point │ │ │ │ │ -00013a10: 7320 6173 2076 6572 7469 6365 732e 2020 s as vertices. │ │ │ │ │ -00013a20: 4265 2063 6172 6566 756c 2077 6974 6820 Be careful with │ │ │ │ │ -00013a30: 7665 7274 6578 206f 7264 6572 210a 2020 vertex order!. │ │ │ │ │ -00013a40: 6465 6620 7267 7420 706f 6c79 676f 6e20 def rgt polygon │ │ │ │ │ -00013a50: 2870 5231 2928 7052 3229 2870 5233 2928 (pR1)(pR2)(pR3)( │ │ │ │ │ -00013a60: 7052 3429 2870 5235 290a 2020 6465 6620 pR4)(pR5). def │ │ │ │ │ -00013a70: 6c66 7420 706f 6c79 676f 6e20 2870 4c35 lft polygon (pL5 │ │ │ │ │ -00013a80: 2928 704c 3429 2870 4c33 2928 704c 3229 )(pL4)(pL3)(pL2) │ │ │ │ │ -00013a90: 2870 4c31 290a 2020 6465 6620 6672 7420 (pL1). def frt │ │ │ │ │ -00013aa0: 706f 6c79 676f 6e20 2870 5232 2928 7052 polygon (pR2)(pR │ │ │ │ │ -00013ab0: 3129 2870 4c31 2928 704c 3229 0a20 2064 1)(pL1)(pL2). d │ │ │ │ │ -00013ac0: 6566 2062 636b 2070 6f6c 7967 6f6e 2028 ef bck polygon ( │ │ │ │ │ -00013ad0: 7052 3429 2870 5233 2928 704c 3329 2870 pR4)(pR3)(pL3)(p │ │ │ │ │ -00013ae0: 4c34 290a 2020 6465 6620 7466 7220 706f L4). def tfr po │ │ │ │ │ -00013af0: 6c79 676f 6e20 2870 5231 2928 7052 3529 lygon (pR1)(pR5) │ │ │ │ │ -00013b00: 2870 4c35 2928 704c 3129 0a20 2064 6566 (pL5)(pL1). def │ │ │ │ │ -00013b10: 2074 626b 2070 6f6c 7967 6f6e 2028 7052 tbk polygon (pR │ │ │ │ │ -00013b20: 3529 2870 5234 2928 704c 3429 2870 4c35 5)(pR4)(pL4)(pL5 │ │ │ │ │ -00013b30: 290a 2020 6465 6620 626f 7420 706f 6c79 ). def bot poly │ │ │ │ │ -00013b40: 676f 6e20 2870 5232 2928 704c 3229 2870 gon (pR2)(pL2)(p │ │ │ │ │ -00013b50: 4c33 2928 7052 3329 0a20 2064 6566 2064 L3)(pR3). def d │ │ │ │ │ -00013b60: 6f6f 7220 706f 6c79 676f 6e5b 6669 6c6c oor polygon[fill │ │ │ │ │ -00013b70: 636f 6c6f 723d 6272 6f77 6e5d 2028 7044 color=brown] (pD │ │ │ │ │ -00013b80: 3129 2870 4432 2928 7044 3329 2870 4434 1)(pD2)(pD3)(pD4 │ │ │ │ │ -00013b90: 290a 2020 6465 6620 686f 7573 6520 7b20 ). def house { │ │ │ │ │ -00013ba0: 7b72 6774 7d7b 6c66 747d 7b66 7274 7d7b {rgt}{lft}{frt}{ │ │ │ │ │ -00013bb0: 6263 6b7d 7b74 6672 7d7b 7462 6b7d 7b62 bck}{tfr}{tbk}{b │ │ │ │ │ -00013bc0: 6f74 7d7b 646f 6f72 7d20 7d0a 2020 2054 ot}{door} }. T │ │ │ │ │ -00013bd0: 696d 6520 666f 7220 6120 7361 6e69 7479 ime for a sanity │ │ │ │ │ -00013be0: 2063 6865 636b 2e20 2041 6464 2074 6865 check. Add the │ │ │ │ │ -00013bf0: 206c 696e 650a 2020 7b68 6f75 7365 7d0a line. {house}. │ │ │ │ │ -00013c00: 616e 6420 7468 6973 2069 7320 7768 6174 and this is what │ │ │ │ │ -00013c10: 2077 6520 6765 742e 0a0a 0008 5b69 6d61 we get.....[ima │ │ │ │ │ -00013c20: 6765 2073 7263 3d22 6578 3133 302e 706e ge src="ex130.pn │ │ │ │ │ -00013c30: 6722 2074 6578 743d 2249 6d61 6765 2065 g" text="Image e │ │ │ │ │ -00013c40: 7831 3330 206f 6d69 7474 6564 2069 6e20 x130 omitted in │ │ │ │ │ -00013c50: 7465 7874 2076 6572 7369 6f6e 206f 6620 text version of │ │ │ │ │ -00013c60: 7468 6973 2064 6f63 756d 656e 742e 2200 this document.". │ │ │ │ │ -00013c70: 085d 0a0a 5468 6973 2069 7320 636f 7272 .]..This is corr │ │ │ │ │ -00013c80: 6563 742c 2062 7574 2064 6f65 7320 6e6f ect, but does no │ │ │ │ │ -00013c90: 7420 7265 7665 616c 2076 6572 7920 6d75 t reveal very mu │ │ │ │ │ -00013ca0: 6368 2e20 2043 6f6d 6d6f 6e20 6572 726f ch. Common erro │ │ │ │ │ -00013cb0: 7273 2061 7265 0a6d 6973 706c 6163 6564 rs are.misplaced │ │ │ │ │ -00013cc0: 2076 6572 7469 6365 7320 616e 6420 706f vertices and po │ │ │ │ │ -00013cd0: 6c79 676f 6e73 206d 6973 7369 6e67 2065 lygons missing e │ │ │ │ │ -00013ce0: 6e74 6972 656c 7920 6475 6520 746f 2069 ntirely due to i │ │ │ │ │ -00013cf0: 6e63 6f72 7265 6374 2076 6572 7465 780a ncorrect vertex. │ │ │ │ │ -00013d00: 6f72 6465 722e 2020 546f 2072 756c 6520 order. To rule │ │ │ │ │ -00013d10: 7468 6573 6520 6f75 742c 206c 6574 2773 these out, let's │ │ │ │ │ -00013d20: 2069 6e73 7065 6374 2061 6c6c 2073 6964 inspect all sid │ │ │ │ │ -00013d30: 6573 206f 6620 7468 6520 686f 7573 652e es of the house. │ │ │ │ │ -00013d40: 2020 5468 6973 0a69 7320 6e6f 7420 6861 This.is not ha │ │ │ │ │ -00013d50: 7264 2e20 204d 6572 656c 7920 7265 706c rd. Merely repl │ │ │ │ │ -00013d60: 6163 6520 7468 6520 7265 6665 7265 6e63 ace the referenc │ │ │ │ │ -00013d70: 6520 7b68 6f75 7365 7d20 7769 7468 2061 e {house} with a │ │ │ │ │ -00013d80: 20e2 8098 7265 7065 6174 e280 992e 0a2a ...repeat.....* │ │ │ │ │ -00013d90: 4e6f 7465 2052 6570 6561 7473 3a3a 2e0a Note Repeats::.. │ │ │ │ │ -00013da0: 2020 7265 7065 6174 207b 2031 332c 2072 repeat { 13, r │ │ │ │ │ -00013db0: 6f74 6174 6528 3330 2c20 5b31 2c32 2c33 otate(30, [1,2,3 │ │ │ │ │ -00013dc0: 5d29 2c20 7472 616e 736c 6174 6528 5b33 ]), translate([3 │ │ │ │ │ -00013dd0: 2c30 2c30 5d29 207d 207b 686f 7573 657d ,0,0]) } {house} │ │ │ │ │ -00013de0: 0a00 085b 696d 6167 6520 7372 633d 2265 ...[image src="e │ │ │ │ │ -00013df0: 7831 3430 2e70 6e67 2220 7465 7874 3d22 x140.png" text=" │ │ │ │ │ -00013e00: 496d 6167 6520 6578 3134 3020 6f6d 6974 Image ex140 omit │ │ │ │ │ -00013e10: 7465 6420 696e 2074 6578 7420 7665 7273 ted in text vers │ │ │ │ │ -00013e20: 696f 6e20 6f66 2074 6869 7320 646f 6375 ion of this docu │ │ │ │ │ -00013e30: 6d65 6e74 2e22 0008 5d0a 0a41 6761 696e ment."..]..Again │ │ │ │ │ -00013e40: 2074 6869 6e67 7320 6c6f 6f6b 2063 6f72 things look cor │ │ │ │ │ -00013e50: 7265 6374 2e20 204e 6f74 6520 7468 6174 rect. Note that │ │ │ │ │ -00013e60: 2074 6865 2068 6964 6465 6e20 7375 7266 the hidden surf │ │ │ │ │ -00013e70: 6163 6520 616c 676f 7269 7468 6d0a 6861 ace algorithm.ha │ │ │ │ │ -00013e80: 6e64 6c65 7320 696e 7465 7273 6563 7469 ndles intersecti │ │ │ │ │ -00013e90: 6e67 2070 6f6c 7967 6f6e 7320 636f 7272 ng polygons corr │ │ │ │ │ -00013ea0: 6563 746c 7920 7768 6572 6520 736f 6d65 ectly where some │ │ │ │ │ -00013eb0: 2063 6f70 6965 7320 6f66 2074 6865 2068 copies of the h │ │ │ │ │ -00013ec0: 6f75 7365 0a6f 7665 726c 6170 2e0a 0a20 ouse.overlap... │ │ │ │ │ -00013ed0: 2020 4c65 7427 7320 6c61 7920 6f75 7420 Let's lay out │ │ │ │ │ -00013ee0: 7468 6520 6765 6f6d 6574 7279 206f 6620 the geometry of │ │ │ │ │ -00013ef0: 7065 7273 7065 6374 6976 6520 7072 6f6a perspective proj │ │ │ │ │ -00013f00: 6563 7469 6f6e 206f 6620 7468 6520 686f ection of the ho │ │ │ │ │ -00013f10: 7573 650a 6f6e 746f 2061 2070 6c61 6e65 use.onto a plane │ │ │ │ │ -00013f20: 2077 6974 6820 7261 7973 2070 6173 7369 with rays passi │ │ │ │ │ -00013f30: 6e67 2074 6872 6f75 6768 2074 6865 206f ng through the o │ │ │ │ │ -00013f40: 7269 6769 6e2e 2020 4265 6769 6e20 6279 rigin. Begin by │ │ │ │ │ -00013f50: 2070 6f73 6974 696f 6e69 6e67 0a74 6865 positioning.the │ │ │ │ │ -00013f60: 2068 6f75 7365 2074 7765 6c76 6520 756e house twelve un │ │ │ │ │ -00013f70: 6974 7320 6261 636b 206f 6e20 7468 6520 its back on the │ │ │ │ │ -00013f80: 6e65 6761 7469 7665 207a 2d61 7869 7320 negative z-axis │ │ │ │ │ -00013f90: 616e 6420 6164 6469 6e67 2061 2073 6574 and adding a set │ │ │ │ │ -00013fa0: 206f 660a 636f 6f72 6469 6e61 7465 2061 of.coordinate a │ │ │ │ │ -00013fb0: 7865 732e 2020 546f 206d 6f76 6520 7468 xes. To move th │ │ │ │ │ -00013fc0: 6520 686f 7573 6520 7765 206e 6565 6420 e house we need │ │ │ │ │ -00013fd0: 6f6e 6c79 2063 6861 6e67 6520 7468 6520 only change the │ │ │ │ │ -00013fe0: 2268 6f75 7365 0a70 6f73 6974 696f 6e69 "house.positioni │ │ │ │ │ -00013ff0: 6e67 2220 7472 616e 7366 6f72 6d20 6465 ng" transform de │ │ │ │ │ -00014000: 6669 6e65 6420 6561 726c 6965 722e 0a20 fined earlier.. │ │ │ │ │ -00014010: 2064 6566 2068 7020 726f 7461 7465 282d def hp rotate(- │ │ │ │ │ -00014020: 3430 2c20 5b30 2c31 2c30 5d29 2074 6865 40, [0,1,0]) the │ │ │ │ │ -00014030: 6e20 7472 616e 736c 6174 6528 5b30 2c30 n translate([0,0 │ │ │ │ │ -00014040: 2c2d 3132 5d29 0a20 2064 6566 2061 7865 ,-12]). def axe │ │ │ │ │ -00014050: 7320 7b0a 2020 2020 6465 6620 737a 2031 s {. def sz 1 │ │ │ │ │ -00014060: 0a20 2020 206c 696e 6520 5b61 7272 6f77 . line [arrow │ │ │ │ │ -00014070: 733d 3c2d 3e5d 2028 737a 2c30 2c30 2928 s=<->] (sz,0,0)( │ │ │ │ │ -00014080: 4f29 2830 2c73 7a2c 3029 0a20 2020 206c O)(0,sz,0). l │ │ │ │ │ -00014090: 696e 6520 5b61 7272 6f77 733d 2d3e 5d20 ine [arrows=->] │ │ │ │ │ -000140a0: 2028 4f29 2830 2c30 2c73 7a29 0a20 2020 (O)(0,0,sz). │ │ │ │ │ -000140b0: 206c 696e 6520 5b6c 696e 6577 6964 7468 line [linewidth │ │ │ │ │ -000140c0: 3d2e 3270 742c 6c69 6e65 636f 6c6f 723d =.2pt,linecolor= │ │ │ │ │ -000140d0: 626c 7565 2c6c 696e 6573 7479 6c65 3d64 blue,linestyle=d │ │ │ │ │ -000140e0: 6173 6865 645d 2028 4f29 2830 2c30 2c2d ashed] (O)(0,0,- │ │ │ │ │ -000140f0: 3130 290a 2020 2020 7370 6563 6961 6c20 10). special │ │ │ │ │ -00014100: 7c5c 7570 7574 5b72 5d23 317b 2478 247d |\uput[r]#1{$x$} │ │ │ │ │ -00014110: 5c75 7075 745b 755d 2332 7b24 7924 7d5c \uput[u]#2{$y$}\ │ │ │ │ │ -00014120: 7570 7574 5b6c 5d23 337b 247a 247d 7c0a uput[l]#3{$z$}|. │ │ │ │ │ -00014130: 2020 2020 2020 2873 7a2c 302c 3029 2830 (sz,0,0)(0 │ │ │ │ │ -00014140: 2c73 7a2c 3029 2830 2c30 2c73 7a29 0a20 ,sz,0)(0,0,sz). │ │ │ │ │ -00014150: 207d 0a0a 2020 2054 696d 6520 666f 7220 }.. Time for │ │ │ │ │ -00014160: 616e 6f74 6865 7220 7465 7374 2e20 204c another test. L │ │ │ │ │ -00014170: 6574 2773 2062 7569 6c64 2061 2072 6561 et's build a rea │ │ │ │ │ -00014180: 6c20 7669 6577 2074 7261 6e73 666f 726d l view transform │ │ │ │ │ -00014190: 2c20 6372 6561 7469 6e67 2061 0ae2 809c , creating a.... │ │ │ │ │ -000141a0: 7669 7274 7561 6c20 6361 6d65 7261 e280 virtual camera.. │ │ │ │ │ -000141b0: 9d20 746f 206c 6f6f 6b20 6174 2074 6865 . to look at the │ │ │ │ │ -000141c0: 2073 6365 6e65 2077 6520 6172 6520 636f scene we are co │ │ │ │ │ -000141d0: 6e73 7472 7563 7469 6e67 2e20 2052 6570 nstructing. Rep │ │ │ │ │ -000141e0: 6c61 6365 2074 6865 0ae2 8098 7265 7065 lace the....repe │ │ │ │ │ -000141f0: 6174 e280 9920 7769 7468 0a20 2064 6566 at... with. def │ │ │ │ │ -00014200: 2065 7965 2028 3130 2c34 2c31 3029 0a20 eye (10,4,10). │ │ │ │ │ -00014210: 2064 6566 206c 6f6f 6b5f 6174 2028 302c def look_at (0, │ │ │ │ │ -00014220: 302c 2d35 290a 2020 7075 7420 7b20 7669 0,-5). put { vi │ │ │ │ │ -00014230: 6577 2828 6579 6529 2c20 286c 6f6f 6b5f ew((eye), (look_ │ │ │ │ │ -00014240: 6174 2929 207d 207b 207b 686f 7573 657d at)) } { {house} │ │ │ │ │ -00014250: 7b61 7865 737d 207d 0a20 2020 5468 6520 {axes} }. The │ │ │ │ │ -00014260: e280 9c76 6965 7720 7472 616e 7366 6f72 ...view transfor │ │ │ │ │ -00014270: 6de2 809d 2072 6570 6f73 6974 696f 6e73 m... repositions │ │ │ │ │ -00014280: 2074 6865 2073 6365 6e65 2073 6f20 7468 the scene so th │ │ │ │ │ -00014290: 6174 2074 6865 2070 6f69 6e74 20e2 8098 at the point ... │ │ │ │ │ -000142a0: 6579 65e2 8099 2069 730a 6174 2074 6865 eye... is.at the │ │ │ │ │ -000142b0: 206f 7269 6769 6e20 616e 6420 7468 6520 origin and the │ │ │ │ │ -000142c0: 6469 7265 6374 696f 6e20 6672 6f6d 20e2 direction from . │ │ │ │ │ -000142d0: 8098 6579 65e2 8099 2074 6f20 e280 986c ..eye... to ...l │ │ │ │ │ -000142e0: 6f6f 6b5f 6174 e280 9920 6973 2074 6865 ook_at... is the │ │ │ │ │ -000142f0: 206e 6567 6174 6976 650a 7a2d 6178 6973 negative.z-axis │ │ │ │ │ -00014300: 2e20 2054 6869 7320 7265 7175 6972 6573 . This requires │ │ │ │ │ -00014310: 2061 2072 6f74 6174 696f 6e20 616e 6420 a rotation and │ │ │ │ │ -00014320: 6120 7472 616e 736c 6174 696f 6e20 7468 a translation th │ │ │ │ │ -00014330: 6174 2061 7265 2061 6c6c 2070 6163 6b65 at are all packe │ │ │ │ │ -00014340: 640a 696e 746f 2074 6865 2063 6f6e 7374 d.into the const │ │ │ │ │ -00014350: 7275 6374 6f72 20e2 8098 7669 6577 e280 ructor ...view.. │ │ │ │ │ -00014360: 992e 0a0a 0008 5b69 6d61 6765 2073 7263 ......[image src │ │ │ │ │ -00014370: 3d22 6578 3135 302e 706e 6722 2074 6578 ="ex150.png" tex │ │ │ │ │ -00014380: 743d 2249 6d61 6765 2065 7831 3530 206f t="Image ex150 o │ │ │ │ │ -00014390: 6d69 7474 6564 2069 6e20 7465 7874 2076 mitted in text v │ │ │ │ │ -000143a0: 6572 7369 6f6e 206f 6620 7468 6973 2064 ersion of this d │ │ │ │ │ -000143b0: 6f63 756d 656e 742e 2200 085d 0a0a 5468 ocument."..]..Th │ │ │ │ │ -000143c0: 6973 2069 7320 7374 6172 7469 6e67 2074 is is starting t │ │ │ │ │ -000143d0: 6f20 6c6f 6f6b 2067 6f6f 6421 2020 4164 o look good! Ad │ │ │ │ │ -000143e0: 6420 7468 6520 7072 6f6a 6563 7469 6f6e d the projection │ │ │ │ │ -000143f0: 2070 6c61 6e65 2068 616c 6620 7761 790a plane half way. │ │ │ │ │ -00014400: 6265 7477 6565 6e20 7468 6520 6f72 6967 between the orig │ │ │ │ │ -00014410: 696e 2061 6e64 2074 6865 2068 6f75 7365 in and the house │ │ │ │ │ -00014420: 2061 7420 7a3d 2d35 2e20 2057 6527 6c6c at z=-5. We'll │ │ │ │ │ -00014430: 2074 7279 2074 6865 2061 6e67 6c65 2061 try the angle a │ │ │ │ │ -00014440: 7267 756d 656e 740a 6665 6174 7572 6520 rgument.feature │ │ │ │ │ -00014450: 6f66 20e2 8098 7370 6563 6961 6ce2 8099 of ...special... │ │ │ │ │ -00014460: 2074 6f20 706f 7369 7469 6f6e 2061 206c to position a l │ │ │ │ │ -00014470: 6162 656c 2e0a 2020 6465 6620 7020 3520 abel.. def p 5 │ │ │ │ │ -00014480: 2520 7072 6f6a 6563 7469 6f6e 2064 6973 % projection dis │ │ │ │ │ -00014490: 7461 6e63 6520 2870 6c61 6e65 2061 7420 tance (plane at │ │ │ │ │ -000144a0: 7a3d 2d70 290a 2020 6465 6620 7072 6f6a z=-p). def proj │ │ │ │ │ -000144b0: 6563 7469 6f6e 5f70 6c61 6e65 207b 0a20 ection_plane {. │ │ │ │ │ -000144c0: 2020 2064 6566 2073 7a20 312e 350a 2020 def sz 1.5. │ │ │ │ │ -000144d0: 2020 706f 6c79 676f 6e20 282d 737a 2c2d polygon (-sz,- │ │ │ │ │ -000144e0: 737a 2c2d 7029 2873 7a2c 2d73 7a2c 2d70 sz,-p)(sz,-sz,-p │ │ │ │ │ -000144f0: 2928 737a 2c73 7a2c 2d70 2928 2d73 7a2c )(sz,sz,-p)(-sz, │ │ │ │ │ -00014500: 737a 2c2d 7029 0a20 2020 2073 7065 6369 sz,-p). speci │ │ │ │ │ -00014510: 616c 207c 5c72 7075 745b 625d 2331 2d32 al |\rput[b]#1-2 │ │ │ │ │ -00014520: 2333 7b5c 666f 6f74 6e6f 7465 7369 7a65 #3{\footnotesize │ │ │ │ │ -00014530: 5c73 6620 7072 6f6a 6563 7469 6f6e 2070 \sf projection p │ │ │ │ │ -00014540: 6c61 6e65 7d7c 200a 2020 2020 2020 282d lane}| . (- │ │ │ │ │ -00014550: 737a 2c2d 737a 2c2d 7029 2873 7a2c 2d73 sz,-sz,-p)(sz,-s │ │ │ │ │ -00014560: 7a2c 2d70 2928 302c 2d73 7a2b 2e31 2c2d z,-p)(0,-sz+.1,- │ │ │ │ │ -00014570: 7029 0a20 207d 0a41 6464 207b 7072 6f6a p). }.Add {proj │ │ │ │ │ -00014580: 6563 7469 6f6e 5f70 6c61 6e65 7d20 746f ection_plane} to │ │ │ │ │ -00014590: 2074 6865 206c 6973 7420 6f66 206f 626a the list of obj │ │ │ │ │ -000145a0: 6563 7473 2069 6e20 7468 6520 e280 9870 ects in the ...p │ │ │ │ │ -000145b0: 7574 e280 9920 6162 6f76 652e 0a0a 0008 ut... above..... │ │ │ │ │ -000145c0: 5b69 6d61 6765 2073 7263 3d22 6578 3136 [image src="ex16 │ │ │ │ │ -000145d0: 302e 706e 6722 2074 6578 743d 2249 6d61 0.png" text="Ima │ │ │ │ │ -000145e0: 6765 2065 7831 3630 206f 6d69 7474 6564 ge ex160 omitted │ │ │ │ │ -000145f0: 2069 6e20 7465 7874 2076 6572 7369 6f6e in text version │ │ │ │ │ -00014600: 206f 6620 7468 6973 2064 6f63 756d 656e of this documen │ │ │ │ │ -00014610: 742e 2200 085d 0a0a 2020 2054 6865 2077 t."..].. The w │ │ │ │ │ -00014620: 6179 2077 6520 636f 6e73 7472 7563 7465 ay we constructe │ │ │ │ │ -00014630: 6420 7468 6520 706f 696e 7473 206f 6620 d the points of │ │ │ │ │ -00014640: 7468 6520 686f 7573 6520 6e6f 7720 6d61 the house now ma │ │ │ │ │ -00014650: 6b65 7320 6974 2065 6173 7920 746f 0a64 kes it easy to.d │ │ │ │ │ -00014660: 7261 7720 7261 7973 206f 6620 7072 6f6a raw rays of proj │ │ │ │ │ -00014670: 6563 7469 6f6e 2e20 2057 6527 6c6c 2063 ection. We'll c │ │ │ │ │ -00014680: 6173 7420 6f6e 6520 7261 7920 6672 6f6d ast one ray from │ │ │ │ │ -00014690: 2065 7665 7279 2076 6973 6962 6c65 2076 every visible v │ │ │ │ │ -000146a0: 6572 7465 780a 6f66 2074 6865 2068 6f75 ertex.of the hou │ │ │ │ │ -000146b0: 7365 2061 6e64 2064 6566 696e 6520 6f70 se and define op │ │ │ │ │ -000146c0: 7469 6f6e 7320 736f 2074 6865 2061 7070 tions so the app │ │ │ │ │ -000146d0: 6561 7261 6e63 6520 6f66 2061 6c6c 2072 earance of all r │ │ │ │ │ -000146e0: 6179 7320 6361 6e20 6265 0a63 6861 6e67 ays can be.chang │ │ │ │ │ -000146f0: 6564 2061 7420 7468 6520 7361 6d65 2074 ed at the same t │ │ │ │ │ -00014700: 696d 652e 0a20 2064 6566 2070 726f 6a65 ime.. def proje │ │ │ │ │ -00014710: 6374 696f 6e5f 7261 7973 207b 0a20 2020 ction_rays {. │ │ │ │ │ -00014720: 2064 6566 2072 6179 6f70 7420 5b6c 696e def rayopt [lin │ │ │ │ │ -00014730: 6577 6964 7468 3d2e 3370 742c 6c69 6e65 ewidth=.3pt,line │ │ │ │ │ -00014740: 636f 6c6f 723d 6c69 6768 7467 7261 795d color=lightgray] │ │ │ │ │ -00014750: 0a20 2020 206c 696e 6520 5b72 6179 6f70 . line [rayop │ │ │ │ │ -00014760: 745d 284f 2928 7052 3129 206c 696e 6520 t](O)(pR1) line │ │ │ │ │ -00014770: 5b72 6179 6f70 745d 284f 2928 7052 3229 [rayopt](O)(pR2) │ │ │ │ │ -00014780: 206c 696e 655b 7261 796f 7074 5d28 4f29 line[rayopt](O) │ │ │ │ │ -00014790: 2870 5233 290a 2020 2020 6c69 6e65 205b (pR3). line [ │ │ │ │ │ -000147a0: 7261 796f 7074 5d28 4f29 2870 5234 2920 rayopt](O)(pR4) │ │ │ │ │ -000147b0: 6c69 6e65 205b 7261 796f 7074 5d28 4f29 line [rayopt](O) │ │ │ │ │ -000147c0: 2870 5235 290a 2020 2020 6c69 6e65 205b (pR5). line [ │ │ │ │ │ -000147d0: 7261 796f 7074 5d28 4f29 2870 4c31 2920 rayopt](O)(pL1) │ │ │ │ │ -000147e0: 6c69 6e65 205b 7261 796f 7074 5d28 4f29 line [rayopt](O) │ │ │ │ │ -000147f0: 2870 4c32 2920 6c69 6e65 5b72 6179 6f70 (pL2) line[rayop │ │ │ │ │ -00014800: 745d 284f 2928 704c 3529 0a20 2020 206c t](O)(pL5). l │ │ │ │ │ -00014810: 696e 6520 5b72 6179 6f70 745d 284f 2928 ine [rayopt](O)( │ │ │ │ │ -00014820: 7044 3129 206c 696e 6520 5b72 6179 6f70 pD1) line [rayop │ │ │ │ │ -00014830: 745d 284f 2928 7044 3229 200a 2020 2020 t](O)(pD2) . │ │ │ │ │ -00014840: 6c69 6e65 205b 7261 796f 7074 5d28 4f29 line [rayopt](O) │ │ │ │ │ -00014850: 2870 4433 2920 6c69 6e65 205b 7261 796f (pD3) line [rayo │ │ │ │ │ -00014860: 7074 5d28 4f29 2870 4434 2920 0a20 207d pt](O)(pD4) . } │ │ │ │ │ -00014870: 0a54 6865 2072 6573 756c 7420 6973 2073 .The result is s │ │ │ │ │ -00014880: 686f 776e 2068 6572 652e 0a0a 0008 5b69 hown here.....[i │ │ │ │ │ -00014890: 6d61 6765 2073 7263 3d22 6578 3137 302e mage src="ex170. │ │ │ │ │ -000148a0: 706e 6722 2074 6578 743d 2249 6d61 6765 png" text="Image │ │ │ │ │ -000148b0: 2065 7831 3730 206f 6d69 7474 6564 2069 ex170 omitted i │ │ │ │ │ -000148c0: 6e20 7465 7874 2076 6572 7369 6f6e 206f n text version o │ │ │ │ │ -000148d0: 6620 7468 6973 2064 6f63 756d 656e 742e f this document. │ │ │ │ │ -000148e0: 2200 085d 0a0a 5468 6520 7261 7973 2070 "..]..The rays p │ │ │ │ │ -000148f0: 6965 7263 6520 7468 6520 7072 6f6a 6563 ierce the projec │ │ │ │ │ -00014900: 7469 6f6e 2070 6c61 6e65 2061 7420 7468 tion plane at th │ │ │ │ │ -00014910: 6520 636f 7272 6573 706f 6e64 696e 6720 e corresponding │ │ │ │ │ -00014920: 706f 696e 7473 206f 6e20 7468 650a 7065 points on the.pe │ │ │ │ │ -00014930: 7273 7065 6374 6976 6520 696d 6167 6520 rspective image │ │ │ │ │ -00014940: 7765 2061 7265 2074 7279 696e 6720 746f we are trying to │ │ │ │ │ -00014950: 2064 7261 772e 2020 416c 6272 6563 6874 draw. Albrecht │ │ │ │ │ -00014960: 2044 c3bc 7265 7220 616e 6420 6869 730a D..rer and his. │ │ │ │ │ -00014970: 5265 6e61 6973 7361 6e63 6520 636f 6e74 Renaissance cont │ │ │ │ │ -00014980: 656d 706f 7261 7269 6573 2068 6164 2074 emporaries had t │ │ │ │ │ -00014990: 6865 2073 616d 6520 6964 6561 2069 6e20 he same idea in │ │ │ │ │ -000149a0: 7468 6520 6561 726c 7920 3135 3030 2773 the early 1500's │ │ │ │ │ -000149b0: 2e0a 0a00 085b 696d 6167 6520 7372 633d .....[image src= │ │ │ │ │ -000149c0: 2264 7565 7265 722e 706e 6722 2074 6578 "duerer.png" tex │ │ │ │ │ -000149d0: 743d 2249 6d61 6765 206f 6620 4475 6572 t="Image of Duer │ │ │ │ │ -000149e0: 6572 2773 2070 6572 7370 6563 7469 7665 er's perspective │ │ │ │ │ -000149f0: 2063 6f6d 7075 7465 7220 6f6d 6974 7465 computer omitte │ │ │ │ │ -00014a00: 6420 696e 2074 6578 7420 7665 7273 696f d in text versio │ │ │ │ │ -00014a10: 6e20 6f66 2074 6869 7320 646f 6375 6d65 n of this docume │ │ │ │ │ -00014a20: 6e74 2e22 0008 5d0a 0a20 2020 416c 6c20 nt."..].. All │ │ │ │ │ -00014a30: 7468 6174 2773 206c 6566 7420 6973 2074 that's left is t │ │ │ │ │ -00014a40: 6f20 6669 6e64 2061 2077 6179 2074 6f20 o find a way to │ │ │ │ │ -00014a50: 636f 6e6e 6563 7420 7468 6520 706f 696e connect the poin │ │ │ │ │ -00014a60: 7473 206f 6620 7468 6520 686f 7573 650a ts of the house. │ │ │ │ │ -00014a70: 6f6e 2074 6865 2070 726f 6a65 6374 696f on the projectio │ │ │ │ │ -00014a80: 6e20 706c 616e 652e 2020 5765 2063 6f75 n plane. We cou │ │ │ │ │ -00014a90: 6c64 2070 756c 6c20 6f75 7420 6120 676f ld pull out a go │ │ │ │ │ -00014aa0: 6f64 2063 6f6d 7075 7465 7220 6772 6170 od computer grap │ │ │ │ │ -00014ab0: 6869 6373 0a74 6578 742c 2066 696e 6420 hics.text, find │ │ │ │ │ -00014ac0: 7468 6520 6e65 6365 7373 6172 7920 6d61 the necessary ma │ │ │ │ │ -00014ad0: 7472 6978 2c20 616e 6420 656e 7465 7220 trix, and enter │ │ │ │ │ -00014ae0: 6974 206f 7572 7365 6c76 6573 2061 7320 it ourselves as │ │ │ │ │ -00014af0: 6120 7472 616e 7366 6f72 6d0a 6c69 7465 a transform.lite │ │ │ │ │ -00014b00: 7261 6c2e 2020 2a4e 6f74 6520 5472 616e ral. *Note Tran │ │ │ │ │ -00014b10: 7366 6f72 6d20 6c69 7465 7261 6c73 3a3a sform literals:: │ │ │ │ │ -00014b20: 2e20 2054 6861 7420 776f 726b 2069 7320 . That work is │ │ │ │ │ -00014b30: 616c 7265 6164 7920 646f 6e65 2c0a 686f already done,.ho │ │ │ │ │ -00014b40: 7765 7665 722e 2020 5765 2063 616e 2075 wever. We can u │ │ │ │ │ -00014b50: 7365 2074 6865 20e2 8098 7072 6f6a 6563 se the ...projec │ │ │ │ │ -00014b60: 7428 7029 e280 9920 636f 6e73 7472 7563 t(p)... construc │ │ │ │ │ -00014b70: 746f 722e 0a0a 2020 2054 6865 7265 2061 tor... There a │ │ │ │ │ -00014b80: 7265 2073 7469 6c6c 2073 6f6d 6520 6465 re still some de │ │ │ │ │ -00014b90: 7461 696c 7320 7468 6174 2072 6571 7569 tails that requi │ │ │ │ │ -00014ba0: 7265 2063 6172 652e 2020 5072 6f6a 6563 re care. Projec │ │ │ │ │ -00014bb0: 7469 6f6e 2077 696c 6c0a 666c 6174 7465 tion will.flatte │ │ │ │ │ -00014bc0: 6e20 7768 6174 6576 6572 2069 7320 7472 n whatever is tr │ │ │ │ │ -00014bd0: 616e 7366 6f72 6d65 6420 6f6e 746f 2074 ansformed onto t │ │ │ │ │ -00014be0: 6865 2070 6c61 6e65 207a 3d2d 702e 2020 he plane z=-p. │ │ │ │ │ -00014bf0: 5468 6572 6566 6f72 6520 616e 7920 7061 Therefore any pa │ │ │ │ │ -00014c00: 7274 0a6f 6620 7468 6520 686f 7573 6520 rt.of the house │ │ │ │ │ -00014c10: 636f 756c 6420 6469 7361 7070 6561 7220 could disappear │ │ │ │ │ -00014c20: 6265 6869 6e64 2074 6865 2070 726f 6a65 behind the proje │ │ │ │ │ -00014c30: 6374 696f 6e20 706c 616e 6520 2874 6865 ction plane (the │ │ │ │ │ -00014c40: 2068 6964 6465 6e0a 7375 7266 6163 6520 hidden.surface │ │ │ │ │ -00014c50: 616c 676f 7269 7468 6d20 6f72 6465 7273 algorithm orders │ │ │ │ │ -00014c60: 206f 626a 6563 7473 2061 7420 7468 6520 objects at the │ │ │ │ │ -00014c70: 7361 6d65 2064 6570 7468 2061 7262 6974 same depth arbit │ │ │ │ │ -00014c80: 7261 7269 6c79 292e 2020 5468 650a 646f rarily). The.do │ │ │ │ │ -00014c90: 6f72 206d 6179 2061 6c73 6f20 6469 7361 or may also disa │ │ │ │ │ -00014ca0: 7070 6561 7220 6265 6869 6e64 2074 6865 ppear behind the │ │ │ │ │ -00014cb0: 2066 726f 6e74 206f 6620 7468 6520 686f front of the ho │ │ │ │ │ -00014cc0: 7573 652e 2020 546f 206d 616b 6520 7375 use. To make su │ │ │ │ │ -00014cd0: 7265 0a65 7665 7279 7468 696e 6720 7265 re.everything re │ │ │ │ │ -00014ce0: 6d61 696e 7320 7669 7369 626c 652c 2077 mains visible, w │ │ │ │ │ -00014cf0: 6527 6c6c 2070 6c61 6365 2074 6865 2068 e'll place the h │ │ │ │ │ -00014d00: 6f75 7365 2061 2074 696e 7920 6269 7420 ouse a tiny bit │ │ │ │ │ -00014d10: 696e 2066 726f 6e74 206f 660a 7468 6520 in front of.the │ │ │ │ │ -00014d20: 7072 6f6a 6563 7469 6f6e 2070 6c61 6e65 projection plane │ │ │ │ │ -00014d30: 2061 6e64 2061 2073 6563 6f6e 6420 636f and a second co │ │ │ │ │ -00014d40: 7079 206f 6620 7468 6520 646f 6f72 2069 py of the door i │ │ │ │ │ -00014d50: 6e20 6672 6f6e 7420 6f66 2074 6865 0a68 n front of the.h │ │ │ │ │ -00014d60: 6f75 7365 2e0a 2020 6465 6620 7072 6f6a ouse.. def proj │ │ │ │ │ -00014d70: 6563 7469 6f6e 207b 0a20 2020 2025 2065 ection {. % e │ │ │ │ │ -00014d80: 2069 7320 6120 736d 616c 6c20 6e75 6d62 is a small numb │ │ │ │ │ -00014d90: 6572 2064 6566 696e 6564 2061 626f 7665 er defined above │ │ │ │ │ -00014da0: 0a20 2020 2070 7574 207b 2070 726f 6a65 . put { proje │ │ │ │ │ -00014db0: 6374 2870 2920 7468 656e 2074 7261 6e73 ct(p) then trans │ │ │ │ │ -00014dc0: 6c61 7465 285b 302c 302c 312a 655d 2920 late([0,0,1*e]) │ │ │ │ │ -00014dd0: 7d20 7b68 6f75 7365 7d0a 2020 2020 7075 } {house}. pu │ │ │ │ │ -00014de0: 7420 7b20 7072 6f6a 6563 7428 7029 2074 t { project(p) t │ │ │ │ │ -00014df0: 6865 6e20 7472 616e 736c 6174 6528 5b30 hen translate([0 │ │ │ │ │ -00014e00: 2c30 2c32 2a65 5d29 207d 207b 646f 6f72 ,0,2*e]) } {door │ │ │ │ │ -00014e10: 7d0a 2020 7d0a 0a00 085b 696d 6167 6520 }. }....[image │ │ │ │ │ -00014e20: 7372 633d 2265 7831 3830 2e70 6e67 2220 src="ex180.png" │ │ │ │ │ -00014e30: 7465 7874 3d22 496d 6167 6520 6578 3138 text="Image ex18 │ │ │ │ │ -00014e40: 3020 6f6d 6974 7465 6420 696e 2074 6578 0 omitted in tex │ │ │ │ │ -00014e50: 7420 7665 7273 696f 6e20 6f66 2074 6869 t version of thi │ │ │ │ │ -00014e60: 7320 646f 6375 6d65 6e74 2e22 0008 5d0a s document."..]. │ │ │ │ │ -00014e70: 0a20 2020 4966 2079 6f75 2068 6176 6520 . If you have │ │ │ │ │ -00014e80: 7374 7564 6965 6420 616e 6420 756e 6465 studied and unde │ │ │ │ │ -00014e90: 7273 7461 6e64 2061 6c6c 2074 6869 732c rstand all this, │ │ │ │ │ -00014ea0: 2079 6f75 2061 7265 2077 656c 6c20 6f6e you are well on │ │ │ │ │ -00014eb0: 2074 6865 2077 6179 0a74 6f20 7375 6363 the way.to succ │ │ │ │ │ -00014ec0: 6573 7320 7769 7468 20e2 8098 736b 6574 ess with ...sket │ │ │ │ │ -00014ed0: 6368 e280 992e 2020 4e6f 7420 7368 6f77 ch.... Not show │ │ │ │ │ -00014ee0: 6e20 6172 6520 7468 6520 3230 206f 7220 n are the 20 or │ │ │ │ │ -00014ef0: 736f 2069 7465 7261 7469 6f6e 7320 7468 so iterations th │ │ │ │ │ -00014f00: 6174 0a77 6572 6520 7265 7175 6972 6564 at.were required │ │ │ │ │ -00014f10: 2074 6f20 6669 6e64 2061 2072 6561 736f to find a reaso │ │ │ │ │ -00014f20: 6e61 626c 6520 7669 6577 696e 6720 616e nable viewing an │ │ │ │ │ -00014f30: 676c 6520 616e 6420 686f 7573 6520 706f gle and house po │ │ │ │ │ -00014f40: 7369 7469 6f6e 2c0a 6574 632e 2020 4e6f sition,.etc. No │ │ │ │ │ -00014f50: 6e65 7468 656c 6573 732c 2074 6869 7320 netheless, this │ │ │ │ │ -00014f60: 6472 6177 696e 6720 7761 7320 636f 6d70 drawing was comp │ │ │ │ │ -00014f70: 6c65 7465 6420 696e 2061 626f 7574 2061 leted in about a │ │ │ │ │ -00014f80: 6e20 686f 7572 2e20 2057 6869 6c65 2061 n hour. While a │ │ │ │ │ -00014f90: 0a47 5549 2074 6f6f 6c20 6d61 7920 6861 .GUI tool may ha │ │ │ │ │ -00014fa0: 7665 2062 6565 6e20 6120 6c69 7474 6c65 ve been a little │ │ │ │ │ -00014fb0: 2066 6173 7465 722c 2069 7420 6973 2075 faster, it is u │ │ │ │ │ -00014fc0: 6e6c 696b 656c 7920 7468 6174 2061 206e nlikely that a n │ │ │ │ │ -00014fd0: 6577 0a64 7261 7769 6e67 2c20 6974 7365 ew.drawing, itse │ │ │ │ │ -00014fe0: 6c66 2061 2070 6572 7370 6563 7469 7665 lf a perspective │ │ │ │ │ -00014ff0: 2070 726f 6a65 6374 696f 6e20 6f66 2074 projection of t │ │ │ │ │ -00015000: 6865 2073 6365 6e65 2c20 636f 756c 6420 he scene, could │ │ │ │ │ -00015010: 6265 0a67 656e 6572 6174 6564 2077 6974 be.generated wit │ │ │ │ │ -00015020: 6820 7477 6f20 6d6f 7265 206d 696e 7574 h two more minut │ │ │ │ │ -00015030: 6573 2720 776f 726b 2120 204a 7573 7420 es' work! Just │ │ │ │ │ -00015040: 6368 616e 6765 2074 6865 2076 6965 7720 change the view │ │ │ │ │ -00015050: 7472 616e 7366 6f72 6d0a 746f 0a20 2070 transform.to. p │ │ │ │ │ -00015060: 7574 207b 2076 6965 7728 2865 7965 292c ut { view((eye), │ │ │ │ │ -00015070: 2028 6c6f 6f6b 5f61 7429 2920 7468 656e (look_at)) then │ │ │ │ │ -00015080: 2070 6572 7370 6563 7469 7665 2839 2920 perspective(9) │ │ │ │ │ -00015090: 7d20 7b20 2e2e 2e0a 616e 6420 7072 6f64 } { ....and prod │ │ │ │ │ -000150a0: 7563 6520 7468 6973 2e0a 0a00 085b 696d uce this.....[im │ │ │ │ │ -000150b0: 6167 6520 7372 633d 2265 7831 3930 2e70 age src="ex190.p │ │ │ │ │ -000150c0: 6e67 2220 7465 7874 3d22 496d 6167 6520 ng" text="Image │ │ │ │ │ -000150d0: 6578 3139 3020 6f6d 6974 7465 6420 696e ex190 omitted in │ │ │ │ │ -000150e0: 2074 6578 7420 7665 7273 696f 6e20 6f66 text version of │ │ │ │ │ -000150f0: 2074 6869 7320 646f 6375 6d65 6e74 2e22 this document." │ │ │ │ │ -00015100: 0008 5d0a 0a1f 0a46 696c 653a 2073 6b65 ..]....File: ske │ │ │ │ │ -00015110: 7463 682e 696e 666f 2c20 204e 6f64 653a tch.info, Node: │ │ │ │ │ -00015120: 2041 2074 6563 686e 6963 616c 2064 7261 A technical dra │ │ │ │ │ -00015130: 7769 6e67 2c20 204e 6578 743a 2041 2068 wing, Next: A h │ │ │ │ │ -00015140: 6965 7261 7263 6869 6361 6c20 6d6f 6465 ierarchical mode │ │ │ │ │ -00015150: 6c2c 2020 5072 6576 3a20 4f76 6572 7669 l, Prev: Overvi │ │ │ │ │ -00015160: 6577 2c20 2055 703a 2042 7569 6c64 696e ew, Up: Buildin │ │ │ │ │ -00015170: 6720 6120 6472 6177 696e 670a 0a34 2e32 g a drawing..4.2 │ │ │ │ │ -00015180: 2041 2074 6563 686e 6963 616c 2064 7261 A technical dra │ │ │ │ │ -00015190: 7769 6e67 0a3d 3d3d 3d3d 3d3d 3d3d 3d3d wing.=========== │ │ │ │ │ -000151a0: 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d 0a0a 4c65 ============..Le │ │ │ │ │ -000151b0: 7427 7320 6c6f 6f6b 2061 7420 6120 6472 t's look at a dr │ │ │ │ │ -000151c0: 6177 696e 6720 7468 6174 2072 6570 7265 awing that repre │ │ │ │ │ -000151d0: 7365 6e74 7320 7468 6520 6b69 6e64 206f sents the kind o │ │ │ │ │ -000151e0: 6620 7072 6f62 6c65 6d20 e280 9873 6b65 f problem ...ske │ │ │ │ │ -000151f0: 7463 68e2 8099 2077 6173 0a6d 6561 6e74 tch... was.meant │ │ │ │ │ -00015200: 2074 6f20 736f 6c76 652d 2d61 2070 6169 to solve--a pai │ │ │ │ │ -00015210: 7220 6f66 2074 6578 7462 6f6f 6b20 6669 r of textbook fi │ │ │ │ │ -00015220: 6775 7265 7320 7265 6761 7264 696e 6720 gures regarding │ │ │ │ │ -00015230: 6120 706f 6c79 676f 6e61 6c0a 6170 7072 a polygonal.appr │ │ │ │ │ -00015240: 6f78 696d 6174 696f 6e20 6f66 2061 2074 oximation of a t │ │ │ │ │ -00015250: 7275 6e63 6174 6564 2063 6f6e 652e 2020 runcated cone. │ │ │ │ │ -00015260: 4865 7265 2061 7265 2074 6865 2070 6963 Here are the pic │ │ │ │ │ -00015270: 7475 7265 7320 7765 2077 696c 6c0a 7072 tures we will.pr │ │ │ │ │ -00015280: 6f64 7563 652e 0a0a 0008 5b69 6d61 6765 oduce.....[image │ │ │ │ │ -00015290: 2073 7263 3d22 6578 3235 302e 706e 6722 src="ex250.png" │ │ │ │ │ -000152a0: 2074 6578 743d 2249 6d61 6765 2065 7832 text="Image ex2 │ │ │ │ │ -000152b0: 3530 206f 6d69 7474 6564 2069 6e20 7465 50 omitted in te │ │ │ │ │ -000152c0: 7874 2076 6572 7369 6f6e 206f 6620 7468 xt version of th │ │ │ │ │ -000152d0: 6973 2064 6f63 756d 656e 742e 2200 085d is document."..] │ │ │ │ │ -000152e0: 2020 2020 2000 085b 696d 6167 6520 7372 ..[image sr │ │ │ │ │ -000152f0: 633d 2265 7832 3630 2e70 6e67 2220 7465 c="ex260.png" te │ │ │ │ │ -00015300: 7874 3d22 496d 6167 6520 6578 3236 3020 xt="Image ex260 │ │ │ │ │ -00015310: 6f6d 6974 7465 6420 696e 2074 6578 7420 omitted in text │ │ │ │ │ -00015320: 7665 7273 696f 6e20 6f66 2074 6869 7320 version of this │ │ │ │ │ -00015330: 646f 6375 6d65 6e74 2e22 0008 5d0a 0a20 document."..].. │ │ │ │ │ -00015340: 2020 5468 6520 636f 6e65 2073 6861 7065 The cone shape │ │ │ │ │ -00015350: 2069 7320 6a75 7374 2061 2073 7765 7074 is just a swept │ │ │ │ │ -00015360: 206c 696e 6520 7769 7468 206e 6f20 636c line with no cl │ │ │ │ │ -00015370: 6f73 7572 6520 7461 6720 616e 6420 6375 osure tag and cu │ │ │ │ │ -00015380: 6c6c 696e 670a 7475 726e 6564 206f 6666 lling.turned off │ │ │ │ │ -00015390: 2e20 2042 6567 696e 2062 7920 7365 7474 . Begin by sett │ │ │ │ │ -000153a0: 696e 6720 7570 2073 6f6d 6520 7573 6566 ing up some usef │ │ │ │ │ -000153b0: 756c 2063 6f6e 7374 616e 7473 2e0a 2020 ul constants.. │ │ │ │ │ -000153c0: 6465 6620 4f20 2830 2c30 2c30 2920 6465 def O (0,0,0) de │ │ │ │ │ -000153d0: 6620 4920 5b31 2c30 2c30 5d20 6465 6620 f I [1,0,0] def │ │ │ │ │ -000153e0: 4a20 5b30 2c31 2c30 5d20 6465 6620 4b20 J [0,1,0] def K │ │ │ │ │ -000153f0: 5b30 2c30 2c31 5d0a 2020 6465 6620 7030 [0,0,1]. def p0 │ │ │ │ │ -00015400: 2028 312c 3229 2064 6566 2070 3120 2831 (1,2) def p1 (1 │ │ │ │ │ -00015410: 2e35 2c30 2920 6465 6620 4e20 380a 2020 .5,0) def N 8. │ │ │ │ │ -00015420: 6465 6620 7365 675f 726f 7420 726f 7461 def seg_rot rota │ │ │ │ │ -00015430: 7465 2833 3630 202f 204e 2c20 5b4a 5d29 te(360 / N, [J]) │ │ │ │ │ -00015440: 0a54 6865 2070 6f69 6e74 7320 e280 9870 .The points ...p │ │ │ │ │ -00015450: 30e2 8099 2061 6e64 20e2 8098 7031 e280 0... and ...p1.. │ │ │ │ │ -00015460: 9920 6172 6520 7468 6520 656e 6420 706f . are the end po │ │ │ │ │ -00015470: 696e 7473 206f 6620 7468 6520 6c69 6e65 ints of the line │ │ │ │ │ -00015480: 2074 6f20 6265 2073 7765 7074 2e0a 5468 to be swept..Th │ │ │ │ │ -00015490: 6520 6465 6669 6e69 7469 6f6e 20e2 8098 e definition ... │ │ │ │ │ -000154a0: 7365 675f 726f 74e2 8099 2069 7320 7468 seg_rot... is th │ │ │ │ │ -000154b0: 6520 7377 6565 7020 7472 616e 7366 6f72 e sweep transfor │ │ │ │ │ -000154c0: 6d61 7469 6f6e 2e20 2057 6974 6820 7468 mation. With th │ │ │ │ │ -000154d0: 6573 652c 2074 6865 0a63 6f6e 6520 6974 ese, the.cone it │ │ │ │ │ -000154e0: 7365 6c66 2069 7320 7369 6d70 6c65 2e0a self is simple.. │ │ │ │ │ -000154f0: 2020 7377 6565 705b 6375 6c6c 3d66 616c sweep[cull=fal │ │ │ │ │ -00015500: 7365 5d20 7b20 4e2c 205b 5b73 6567 5f72 se] { N, [[seg_r │ │ │ │ │ -00015510: 6f74 5d5d 207d 206c 696e 6528 7030 2928 ot]] } line(p0)( │ │ │ │ │ -00015520: 7031 290a 0a20 2020 5468 6520 6178 6573 p1).. The axes │ │ │ │ │ -00015530: 2061 7265 206e 6578 7420 616e 6420 696e are next and in │ │ │ │ │ -00015540: 636c 7564 6520 616e 2069 6e74 6572 6573 clude an interes │ │ │ │ │ -00015550: 696e 6720 7472 6963 6b20 7468 6174 2073 ing trick that s │ │ │ │ │ -00015560: 686f 7773 2074 6865 0a68 6964 6465 6e20 hows the.hidden │ │ │ │ │ -00015570: 7061 7274 7320 6173 2064 6f74 7465 6420 parts as dotted │ │ │ │ │ -00015580: 6c69 6e65 732e 2020 5468 6520 7365 6372 lines. The secr │ │ │ │ │ -00015590: 6574 2069 7320 6472 6177 2074 6865 2061 et is draw the a │ │ │ │ │ -000155a0: 7865 7320 7477 6963 652d 2d73 6f6c 6964 xes twice--solid │ │ │ │ │ -000155b0: 0a6c 696e 6573 2077 6974 6820 7468 6520 .lines with the │ │ │ │ │ -000155c0: 6e6f 726d 616c 2068 6964 6465 6e20 7375 normal hidden su │ │ │ │ │ -000155d0: 7266 6163 6520 616c 676f 7269 7468 6d20 rface algorithm │ │ │ │ │ -000155e0: 696e 2065 6666 6563 742c 2061 6e64 2074 in effect, and t │ │ │ │ │ -000155f0: 6865 6e0a 646f 7474 6564 2077 6974 6820 hen.dotted with │ │ │ │ │ -00015600: 7468 6520 6f70 7469 6f6e 20e2 8098 6c61 the option ...la │ │ │ │ │ -00015610: 793d 6f76 6572 e280 9920 736f 2074 6861 y=over... so tha │ │ │ │ │ -00015620: 7420 6e6f 2070 6f6c 7967 6f6e 7320 6361 t no polygons ca │ │ │ │ │ -00015630: 6e20 6869 6465 2074 6865 6d2e 0a20 2064 n hide them.. d │ │ │ │ │ -00015640: 6566 2061 7820 2864 782c 302c 3029 2025 ef ax (dx,0,0) % │ │ │ │ │ -00015650: 2074 6970 7320 6f66 2074 6865 2061 7865 tips of the axe │ │ │ │ │ -00015660: 730a 2020 6465 6620 6179 2028 302c 6479 s. def ay (0,dy │ │ │ │ │ -00015670: 2c30 290a 2020 6465 6620 617a 2028 302c ,0). def az (0, │ │ │ │ │ -00015680: 302c 647a 290a 2020 6c69 6e65 5b61 7272 0,dz). line[arr │ │ │ │ │ -00015690: 6f77 733d 3c2d 3e2c 6c69 6e65 7769 6474 ows=<->,linewidt │ │ │ │ │ -000156a0: 683d 2e34 7074 5d28 6178 2928 4f29 2861 h=.4pt](ax)(O)(a │ │ │ │ │ -000156b0: 7929 0a20 206c 696e 655b 6172 726f 7773 y). line[arrows │ │ │ │ │ -000156c0: 3d2d 3e2c 6c69 6e65 7769 6474 683d 2e34 =->,linewidth=.4 │ │ │ │ │ -000156d0: 7074 5d28 4f29 2861 7a29 0a20 2025 2072 pt](O)(az). % r │ │ │ │ │ -000156e0: 6570 6561 7420 646f 7474 6564 2061 7320 epeat dotted as │ │ │ │ │ -000156f0: 616e 206f 7665 726c 6179 2074 6f20 6869 an overlay to hi │ │ │ │ │ -00015700: 6e74 2061 7420 7468 6520 6869 6464 656e nt at the hidden │ │ │ │ │ -00015710: 206c 696e 6573 0a20 206c 696e 655b 6c61 lines. line[la │ │ │ │ │ -00015720: 793d 6f76 6572 2c6c 696e 6573 7479 6c65 y=over,linestyle │ │ │ │ │ -00015730: 3d64 6f74 7465 642c 6c69 6e65 7769 6474 =dotted,linewidt │ │ │ │ │ -00015740: 683d 2e34 7074 5d28 6178 2928 4f29 2861 h=.4pt](ax)(O)(a │ │ │ │ │ -00015750: 7929 0a20 206c 696e 655b 6c61 793d 6f76 y). line[lay=ov │ │ │ │ │ -00015760: 6572 2c6c 696e 6573 7479 6c65 3d64 6f74 er,linestyle=dot │ │ │ │ │ -00015770: 7465 642c 6c69 6e65 7769 6474 683d 2e34 ted,linewidth=.4 │ │ │ │ │ -00015780: 7074 5d28 4f29 2861 7a29 0a20 2073 7065 pt](O)(az). spe │ │ │ │ │ -00015790: 6369 616c 7c5c 666f 6f74 6e6f 7465 7369 cial|\footnotesi │ │ │ │ │ -000157a0: 7a65 0a20 2020 2020 2020 2020 205c 7570 ze. \up │ │ │ │ │ -000157b0: 7574 5b64 5d23 317b 2478 247d 5c75 7075 ut[d]#1{$x$}\upu │ │ │ │ │ -000157c0: 745b 755d 2332 7b24 7924 7d5c 7570 7574 t[u]#2{$y$}\uput │ │ │ │ │ -000157d0: 5b6c 5d23 337b 247a 247d 7c0a 2020 2020 [l]#3{$z$}|. │ │ │ │ │ -000157e0: 2861 7829 2861 7929 2861 7a29 0a54 6865 (ax)(ay)(az).The │ │ │ │ │ -000157f0: 206c 6162 656c 7320 6172 6520 6170 706c labels are appl │ │ │ │ │ -00015800: 6965 6420 7769 7468 20e2 8098 5053 5472 ied with ...PSTr │ │ │ │ │ -00015810: 6963 6b73 e280 9920 7370 6563 6961 6c20 icks... special │ │ │ │ │ -00015820: 6f62 6a65 6374 7320 6173 2075 7375 616c objects as usual │ │ │ │ │ -00015830: 2e0a 0a20 2020 466f 7220 7468 6520 6865 ... For the he │ │ │ │ │ -00015840: 6967 6874 2064 696d 656e 7369 6f6e 206d ight dimension m │ │ │ │ │ -00015850: 6172 6b2c 2074 6865 2070 6f77 6572 206f ark, the power o │ │ │ │ │ -00015860: 6620 6166 6669 6e65 2061 7269 7468 6574 f affine arithet │ │ │ │ │ -00015870: 6963 2069 7320 7665 7279 0a68 656c 7066 ic is very.helpf │ │ │ │ │ -00015880: 756c 2e0a 2020 6465 6620 6864 696d 5f72 ul.. def hdim_r │ │ │ │ │ -00015890: 6566 2075 6e69 7428 2870 3129 202d 2028 ef unit((p1) - ( │ │ │ │ │ -000158a0: 4f29 2920 7468 656e 205b 5b73 6567 5f72 O)) then [[seg_r │ │ │ │ │ -000158b0: 6f74 5d5d 5e32 0a20 2064 6566 2063 3020 ot]]^2. def c0 │ │ │ │ │ -000158c0: 2870 3029 2074 6865 6e20 7363 616c 6528 (p0) then scale( │ │ │ │ │ -000158d0: 5b4a 5d29 0a20 2064 6566 2068 3030 2028 [J]). def h00 ( │ │ │ │ │ -000158e0: 6330 2920 2b20 312e 3120 2a20 5b68 6469 c0) + 1.1 * [hdi │ │ │ │ │ -000158f0: 6d5f 7265 665d 0a20 2064 6566 2068 3031 m_ref]. def h01 │ │ │ │ │ -00015900: 2028 6330 2920 2b20 312e 3920 2a20 5b68 (c0) + 1.9 * [h │ │ │ │ │ -00015910: 6469 6d5f 7265 665d 0a20 2064 6566 2068 dim_ref]. def h │ │ │ │ │ -00015920: 3032 2028 6330 2920 2b20 312e 3820 2a20 02 (c0) + 1.8 * │ │ │ │ │ -00015930: 5b68 6469 6d5f 7265 665d 0a20 206c 696e [hdim_ref]. lin │ │ │ │ │ -00015940: 6528 6830 3029 2868 3031 290a 2020 6465 e(h00)(h01). de │ │ │ │ │ -00015950: 6620 6831 3020 284f 2920 2b20 312e 3620 f h10 (O) + 1.6 │ │ │ │ │ -00015960: 2a20 5b68 6469 6d5f 7265 665d 0a20 2064 * [hdim_ref]. d │ │ │ │ │ -00015970: 6566 2068 3131 2028 4f29 202b 2031 2e39 ef h11 (O) + 1.9 │ │ │ │ │ -00015980: 202a 205b 6864 696d 5f72 6566 5d0a 2020 * [hdim_ref]. │ │ │ │ │ -00015990: 6465 6620 6831 3220 284f 2920 2b20 312e def h12 (O) + 1. │ │ │ │ │ -000159a0: 3820 2a20 5b68 6469 6d5f 7265 665d 0a20 8 * [hdim_ref]. │ │ │ │ │ -000159b0: 206c 696e 6528 6831 3029 2868 3131 290a line(h10)(h11). │ │ │ │ │ -000159c0: 2020 6c69 6e65 5b61 7272 6f77 733d 3c2d line[arrows=<- │ │ │ │ │ -000159d0: 3e5d 2868 3032 2928 6831 3229 0a20 2064 >](h02)(h12). d │ │ │ │ │ -000159e0: 6566 2068 6d32 2028 2868 3032 2920 2d20 ef hm2 ((h02) - │ │ │ │ │ -000159f0: 284f 2920 2b20 2868 3132 2920 2d20 284f (O) + (h12) - (O │ │ │ │ │ -00015a00: 2929 202f 2032 202b 2028 4f29 0a20 2073 )) / 2 + (O). s │ │ │ │ │ -00015a10: 7065 6369 616c 7c5c 666f 6f74 6e6f 7465 pecial|\footnote │ │ │ │ │ -00015a20: 7369 7a65 5c72 7075 742a 2331 7b24 6824 size\rput*#1{$h$ │ │ │ │ │ -00015a30: 7d7c 2868 6d32 290a 2020 2054 6865 2067 }|(hm2). The g │ │ │ │ │ -00015a40: 656e 6572 616c 2069 6465 6120 656d 706c eneral idea empl │ │ │ │ │ -00015a50: 6f79 6564 2068 6572 6520 6973 2074 6f20 oyed here is to │ │ │ │ │ -00015a60: 636f 6d70 7574 6520 6120 756e 6974 2022 compute a unit " │ │ │ │ │ -00015a70: 7265 6665 7265 6e63 650a 7665 6374 6f72 reference.vector │ │ │ │ │ -00015a80: 2220 7061 7261 6c6c 656c 2074 6f20 7468 " parallel to th │ │ │ │ │ -00015a90: 6520 787a 2d70 6c61 6e65 2069 6e20 7468 e xz-plane in th │ │ │ │ │ -00015aa0: 6520 6465 7369 7265 6420 6469 7265 6374 e desired direct │ │ │ │ │ -00015ab0: 696f 6e20 6f66 2074 6865 0a64 696d 656e ion of the.dimen │ │ │ │ │ -00015ac0: 7369 6f6e 2066 726f 6d20 7468 6520 6f72 sion from the or │ │ │ │ │ -00015ad0: 6967 696e 2e20 2054 6865 2074 7261 6e73 igin. The trans │ │ │ │ │ -00015ae0: 666f 726d 6174 696f 6e20 e280 985b 5b73 formation ...[[s │ │ │ │ │ -00015af0: 6567 5f72 6f74 5d5d 5e32 e280 9920 726f eg_rot]]^2... ro │ │ │ │ │ -00015b00: 7461 7465 730a 7477 6f20 7365 676d 656e tates.two segmen │ │ │ │ │ -00015b10: 7473 2061 626f 7574 2074 6865 2079 2d61 ts about the y-a │ │ │ │ │ -00015b20: 7869 732e 2020 5768 656e 2061 7070 6c69 xis. When appli │ │ │ │ │ -00015b30: 6564 2074 6f20 e280 9828 7031 2920 2d20 ed to ...(p1) - │ │ │ │ │ -00015b40: 284f 29e2 8099 2c20 7468 650a 7265 7375 (O)..., the.resu │ │ │ │ │ -00015b50: 6c74 696e 6720 7665 6374 6f72 2070 6f69 lting vector poi │ │ │ │ │ -00015b60: 6e74 7320 746f 2074 6865 2072 6967 6874 nts to the right │ │ │ │ │ -00015b70: 2061 7320 7368 6f77 6e2e 2020 496e 2074 as shown. In t │ │ │ │ │ -00015b80: 6869 7320 6d61 6e6e 6572 2c20 7765 2063 his manner, we c │ │ │ │ │ -00015b90: 616e 0a70 6963 6b20 616e 7920 7665 7274 an.pick any vert │ │ │ │ │ -00015ba0: 6578 2061 7320 7468 6520 6c6f 6361 7469 ex as the locati │ │ │ │ │ -00015bb0: 6f6e 206f 6620 7468 6520 6865 6967 6874 on of the height │ │ │ │ │ -00015bc0: 2064 696d 656e 7369 6f6e 206c 696e 6573 dimension lines │ │ │ │ │ -00015bd0: 2062 7920 7661 7279 696e 670a 7468 6520 by varying.the │ │ │ │ │ -00015be0: 6578 706f 6e65 6e74 206f 6620 e280 985b exponent of ...[ │ │ │ │ │ -00015bf0: 5b73 6567 5f72 6f74 5d5d e280 992e 2020 [seg_rot]].... │ │ │ │ │ -00015c00: 5468 6973 2069 7320 6f6e 6c79 206f 6e65 This is only one │ │ │ │ │ -00015c10: 206f 6620 6d61 6e79 2070 6f73 7369 626c of many possibl │ │ │ │ │ -00015c20: 650a 7374 7261 7465 6769 6573 2e0a 0a20 e.strategies... │ │ │ │ │ -00015c30: 2020 5468 6520 636f 6d70 7574 6174 696f The computatio │ │ │ │ │ -00015c40: 6e20 6f66 20e2 8098 686d 32e2 8099 2069 n of ...hm2... i │ │ │ │ │ -00015c50: 7320 6120 7573 6566 756c 2069 6469 6f6d s a useful idiom │ │ │ │ │ -00015c60: 2066 6f72 2066 696e 6469 6e67 2074 6865 for finding the │ │ │ │ │ -00015c70: 2063 656e 7472 6f69 640a 6f66 2061 2073 centroid.of a s │ │ │ │ │ -00015c80: 6574 206f 6620 706f 696e 7473 2e0a 0a20 et of points... │ │ │ │ │ -00015c90: 2020 5468 6520 7477 6f20 7261 6469 7573 The two radius │ │ │ │ │ -00015ca0: 206d 6172 6b73 2061 7265 2064 6f6e 6520 marks are done │ │ │ │ │ -00015cb0: 7369 6d69 6c61 726c 792c 2073 6f20 7765 similarly, so we │ │ │ │ │ -00015cc0: 2070 7265 7365 6e74 2074 6865 2063 6f64 present the cod │ │ │ │ │ -00015cd0: 650a 7769 7468 6f75 7420 636f 6d6d 656e e.without commen │ │ │ │ │ -00015ce0: 742e 0a20 2025 2072 6164 6975 7320 6d65 t.. % radius me │ │ │ │ │ -00015cf0: 6173 7572 656d 656e 7420 6d61 726b 730a asurement marks. │ │ │ │ │ -00015d00: 2020 6465 6620 6761 7020 5b30 2c2e 322c def gap [0,.2, │ │ │ │ │ -00015d10: 305d 2020 2520 7573 6564 2074 6f20 6372 0] % used to cr │ │ │ │ │ -00015d20: 6561 7465 2073 6d61 6c6c 2076 6572 7469 eate small verti │ │ │ │ │ -00015d30: 6361 6c20 6761 7073 0a0a 2020 2520 6669 cal gaps.. % fi │ │ │ │ │ -00015d40: 7273 7420 7231 0a20 2064 6566 2075 7031 rst r1. def up1 │ │ │ │ │ -00015d50: 205b 302c 332e 312c 305d 2025 2074 6963 [0,3.1,0] % tic │ │ │ │ │ -00015d60: 6b20 7269 7365 7320 6162 6f76 6520 6469 k rises above di │ │ │ │ │ -00015d70: 6d65 6e73 696f 6e20 6120 6c69 7474 6c65 mension a little │ │ │ │ │ -00015d80: 0a20 2064 6566 2072 3120 2828 7031 2920 . def r1 ((p1) │ │ │ │ │ -00015d90: 7468 656e 205b 5b73 6567 5f72 6f74 5d5d then [[seg_rot]] │ │ │ │ │ -00015da0: 5e2d 3229 202b 205b 7570 315d 0a20 2064 ^-2) + [up1]. d │ │ │ │ │ -00015db0: 6566 2072 3163 2028 7231 2920 7468 656e ef r1c (r1) then │ │ │ │ │ -00015dc0: 2073 6361 6c65 285b 4a5d 290a 2020 6465 scale([J]). de │ │ │ │ │ -00015dd0: 6620 7231 7420 2872 3129 202b 205b 6761 f r1t (r1) + [ga │ │ │ │ │ -00015de0: 705d 0a20 2064 6566 2072 3162 2028 2872 p]. def r1b ((r │ │ │ │ │ -00015df0: 3174 2920 7468 656e 2073 6361 6c65 285b 1t) then scale([ │ │ │ │ │ -00015e00: 312c 302c 315d 2929 202b 205b 6761 705d 1,0,1])) + [gap] │ │ │ │ │ -00015e10: 0a20 206c 696e 655b 6172 726f 7773 3d3c . line[arrows=< │ │ │ │ │ -00015e20: 2d3e 5d28 7231 6329 2872 3129 2020 2520 ->](r1c)(r1) % │ │ │ │ │ -00015e30: 6469 6d65 6e73 696f 6e20 6c69 6e65 0a20 dimension line. │ │ │ │ │ -00015e40: 206c 696e 6528 7231 6229 2872 3174 2920 line(r1b)(r1t) │ │ │ │ │ -00015e50: 2020 2020 2020 2020 2020 2020 2520 7469 % ti │ │ │ │ │ -00015e60: 636b 0a20 2064 6566 2072 316d 2028 2872 ck. def r1m ((r │ │ │ │ │ -00015e70: 3129 202d 2028 4f29 202b 2028 7231 6329 1) - (O) + (r1c) │ │ │ │ │ -00015e80: 202d 2028 4f29 2920 2f20 3220 2b20 284f - (O)) / 2 + (O │ │ │ │ │ -00015e90: 2920 2520 6c61 6265 6c20 706f 7369 7469 ) % label positi │ │ │ │ │ -00015ea0: 6f6e 0a20 2073 7065 6369 616c 207c 5c66 on. special |\f │ │ │ │ │ -00015eb0: 6f6f 746e 6f74 6573 697a 655c 7270 7574 ootnotesize\rput │ │ │ │ │ -00015ec0: 2a23 317b 2472 5f31 247d 7c28 7231 6d29 *#1{$r_1$}|(r1m) │ │ │ │ │ -00015ed0: 2020 2520 6c61 6265 6c0a 0a20 2025 2073 % label.. % s │ │ │ │ │ -00015ee0: 616d 6520 6472 696c 6c20 666f 7220 7230 ame drill for r0 │ │ │ │ │ -00015ef0: 2c20 6275 7420 6d75 7374 2070 726f 6a65 , but must proje │ │ │ │ │ -00015f00: 6374 2064 6f77 6e20 6669 7273 740a 2020 ct down first. │ │ │ │ │ -00015f10: 6465 6620 7570 3020 5b30 2c32 2e37 2c30 def up0 [0,2.7,0 │ │ │ │ │ -00015f20: 5d0a 2020 6465 6620 7230 2028 2870 3029 ]. def r0 ((p0) │ │ │ │ │ -00015f30: 2074 6865 6e20 7363 616c 6528 5b31 2c30 then scale([1,0 │ │ │ │ │ -00015f40: 2c31 5d29 2074 6865 6e20 5b5b 7365 675f ,1]) then [[seg_ │ │ │ │ │ -00015f50: 726f 745d 5d5e 2d32 2920 2b20 5b75 7030 rot]]^-2) + [up0 │ │ │ │ │ -00015f60: 5d0a 2020 6465 6620 7230 6320 2872 3029 ]. def r0c (r0) │ │ │ │ │ -00015f70: 2074 6865 6e20 7363 616c 6528 5b4a 5d29 then scale([J]) │ │ │ │ │ -00015f80: 0a20 2064 6566 2072 3074 2028 7230 2920 . def r0t (r0) │ │ │ │ │ -00015f90: 2b20 5b67 6170 5d0a 2020 6465 6620 7230 + [gap]. def r0 │ │ │ │ │ -00015fa0: 6220 2828 7030 2920 7468 656e 205b 5b73 b ((p0) then [[s │ │ │ │ │ -00015fb0: 6567 5f72 6f74 5d5d 5e2d 3229 202b 205b eg_rot]]^-2) + [ │ │ │ │ │ -00015fc0: 6761 705d 0a20 206c 696e 655b 6172 726f gap]. line[arro │ │ │ │ │ -00015fd0: 7773 3d3c 2d3e 5d28 7230 6329 2872 3029 ws=<->](r0c)(r0) │ │ │ │ │ -00015fe0: 0a20 206c 696e 6528 7230 6229 2872 3074 . line(r0b)(r0t │ │ │ │ │ -00015ff0: 290a 2020 6465 6620 7230 6d20 2828 7230 ). def r0m ((r0 │ │ │ │ │ -00016000: 2920 2d20 284f 2920 2b20 2872 3063 2920 ) - (O) + (r0c) │ │ │ │ │ -00016010: 2d20 284f 2929 202f 2032 202b 2028 4f29 - (O)) / 2 + (O) │ │ │ │ │ -00016020: 0a20 2073 7065 6369 616c 207c 5c66 6f6f . special |\foo │ │ │ │ │ -00016030: 746e 6f74 6573 697a 655c 7270 7574 2a23 tnotesize\rput*# │ │ │ │ │ -00016040: 317b 2472 5f30 247d 7c28 7230 6d29 0a0a 1{$r_0$}|(r0m).. │ │ │ │ │ -00016050: 2020 2054 6865 2073 6563 6f6e 6420 6472 The second dr │ │ │ │ │ -00016060: 6177 696e 6720 7573 6573 2074 6865 2073 awing uses the s │ │ │ │ │ -00016070: 616d 6520 7465 6368 6e69 7175 6573 2e20 ame techniques. │ │ │ │ │ -00016080: 204f 6e6c 7920 7468 6520 6d65 7468 6f64 Only the method │ │ │ │ │ -00016090: 2066 6f72 0a64 7261 7769 6e67 2074 6865 for.drawing the │ │ │ │ │ -000160a0: 2065 6c6c 6970 7469 6361 6c20 6172 6320 elliptical arc │ │ │ │ │ -000160b0: 6973 206e 6577 2e20 2048 6572 6520 6973 is new. Here is │ │ │ │ │ -000160c0: 2074 6865 2063 6f64 652e 0a20 2064 6566 the code.. def │ │ │ │ │ -000160d0: 206d 6964 2028 2870 3030 292d 284f 292b mid ((p00)-(O)+ │ │ │ │ │ -000160e0: 2870 3130 292d 284f 292b 2870 3131 292d (p10)-(O)+(p11)- │ │ │ │ │ -000160f0: 284f 292b 2870 3031 292d 284f 2929 2f34 (O)+(p01)-(O))/4 │ │ │ │ │ -00016100: 2b28 4f29 0a20 2073 7065 6369 616c 7c5c +(O). special|\ │ │ │ │ │ -00016110: 7270 7574 2331 7b5c 7073 6375 7374 6f6d rput#1{\pscustom │ │ │ │ │ -00016120: 7b0a 2020 2020 5c73 6361 6c65 7b31 2031 {. \scale{1 1 │ │ │ │ │ -00016130: 2e33 7d0a 2020 2020 5c70 7361 7263 5b61 .3}. \psarc[a │ │ │ │ │ -00016140: 7272 6f77 6c65 6e67 7468 3d2e 355d 7b2d rrowlength=.5]{- │ │ │ │ │ -00016150: 3e7d 7b2e 3235 7d7b 2d36 307d 7b32 3430 >}{.25}{-60}{240 │ │ │ │ │ -00016160: 7d7d 7d7c 0a20 2020 205b 6c61 793d 6f76 }}}|. [lay=ov │ │ │ │ │ -00016170: 6572 5d28 6d69 6429 0a57 6520 636f 756c er](mid).We coul │ │ │ │ │ -00016180: 6420 6861 7665 2073 7765 7074 2061 2070 d have swept a p │ │ │ │ │ -00016190: 6f69 6e74 2074 6f20 6d61 6b65 2074 6865 oint to make the │ │ │ │ │ -000161a0: 2061 7263 2077 6974 6820 e280 9873 6b65 arc with ...ske │ │ │ │ │ -000161b0: 7463 68e2 8099 2c20 6275 7420 7573 696e tch..., but usin │ │ │ │ │ -000161c0: 6720 610a e280 9850 5354 7269 636b 73e2 g a....PSTricks. │ │ │ │ │ -000161d0: 8099 2063 7573 746f 6d20 6772 6170 6869 .. custom graphi │ │ │ │ │ -000161e0: 6320 7761 7320 7369 6d70 6c65 722e 2020 c was simpler. │ │ │ │ │ -000161f0: 4167 6169 6e20 7765 2063 6f6d 7075 7465 Again we compute │ │ │ │ │ -00016200: 6420 7468 6520 6365 6e74 726f 6964 0a6f d the centroid.o │ │ │ │ │ -00016210: 6620 7468 6520 7175 6164 7269 6c61 7465 f the quadrilate │ │ │ │ │ -00016220: 7261 6c20 6279 2061 7665 7261 6769 6e67 ral by averaging │ │ │ │ │ -00016230: 2070 6f69 6e74 732e 2020 4e6f 7465 2074 points. Note t │ │ │ │ │ -00016240: 6861 7420 7363 616c 696e 6720 696e 0a50 hat scaling in.P │ │ │ │ │ -00016250: 6f73 7473 6372 6970 7420 6469 7374 6f72 ostscript distor │ │ │ │ │ -00016260: 7473 2074 6865 2061 7272 6f77 6865 6164 ts the arrowhead │ │ │ │ │ -00016270: 2c20 6275 7420 696e 2074 6869 7320 6361 , but in this ca │ │ │ │ │ -00016280: 7365 2074 6865 2064 6973 746f 7274 696f se the distortio │ │ │ │ │ -00016290: 6e0a 6163 7475 616c 6c79 206c 6f6f 6b73 n.actually looks │ │ │ │ │ -000162a0: 2062 6574 7465 7220 696e 2074 6865 2070 better in the p │ │ │ │ │ -000162b0: 726f 6a65 6374 696f 6e20 6f66 2074 6865 rojection of the │ │ │ │ │ -000162c0: 2073 6c61 6e74 6564 2066 6163 652e 2020 slanted face. │ │ │ │ │ -000162d0: 4120 e280 9873 6b65 7463 68e2 8099 0a61 A ...sketch....a │ │ │ │ │ -000162e0: 7272 6f77 6865 6164 2077 6f75 6c64 206e rrowhead would n │ │ │ │ │ -000162f0: 6f74 2068 6176 6520 6265 656e 2064 6973 ot have been dis │ │ │ │ │ -00016300: 746f 7274 6564 2e0a 0a20 2020 5468 6520 torted... The │ │ │ │ │ -00016310: 636f 6d70 6c65 7465 2063 6f64 6520 666f complete code fo │ │ │ │ │ -00016320: 7220 7468 6973 2065 7861 6d70 6c65 2c20 r this example, │ │ │ │ │ -00016330: 7768 6963 6820 6472 6177 7320 6569 7468 which draws eith │ │ │ │ │ -00016340: 6572 2066 6967 7572 650a 6465 7065 6e64 er figure.depend │ │ │ │ │ -00016350: 696e 6720 6f6e 2074 6865 2064 6566 696e ing on the defin │ │ │ │ │ -00016360: 6974 696f 6e20 6f66 2074 6865 2074 6167 ition of the tag │ │ │ │ │ -00016370: 20e2 8098 3c6c 6162 656c 6564 3ee2 8099 ...... │ │ │ │ │ -00016380: 2c20 6973 2069 6e63 6c75 6465 6420 696e , is included in │ │ │ │ │ -00016390: 2074 6865 0ae2 8098 736b 6574 6368 e280 the....sketch.. │ │ │ │ │ -000163a0: 9920 6469 7374 7269 6275 7469 6f6e 2069 . distribution i │ │ │ │ │ -000163b0: 6e20 7468 6520 6669 6c65 20e2 8098 7472 n the file ...tr │ │ │ │ │ -000163c0: 756e 6361 7465 6463 6f6e 652e 736b e280 uncatedcone.sk.. │ │ │ │ │ -000163d0: 992e 0a0a 1f0a 4669 6c65 3a20 736b 6574 ......File: sket │ │ │ │ │ -000163e0: 6368 2e69 6e66 6f2c 2020 4e6f 6465 3a20 ch.info, Node: │ │ │ │ │ -000163f0: 4120 6869 6572 6172 6368 6963 616c 206d A hierarchical m │ │ │ │ │ -00016400: 6f64 656c 2c20 204e 6578 743a 2043 6176 odel, Next: Cav │ │ │ │ │ -00016410: 6561 7473 2c20 2050 7265 763a 2041 2074 eats, Prev: A t │ │ │ │ │ -00016420: 6563 686e 6963 616c 2064 7261 7769 6e67 echnical drawing │ │ │ │ │ -00016430: 2c20 2055 703a 2042 7569 6c64 696e 6720 , Up: Building │ │ │ │ │ -00016440: 6120 6472 6177 696e 670a 0a34 2e33 2041 a drawing..4.3 A │ │ │ │ │ -00016450: 2068 6965 7261 7263 6869 6361 6c20 6d6f hierarchical mo │ │ │ │ │ -00016460: 6465 6c0a 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d del.============ │ │ │ │ │ -00016470: 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d 0a0a 5768 ============..Wh │ │ │ │ │ -00016480: 696c 6520 e280 9873 6b65 7463 68e2 8099 ile ...sketch... │ │ │ │ │ -00016490: 2077 6173 206e 6576 6572 206d 6561 6e74 was never meant │ │ │ │ │ -000164a0: 2074 6f20 6265 2061 2067 656f 6d65 7472 to be a geometr │ │ │ │ │ -000164b0: 6963 206d 6f64 656c 696e 6720 6c61 6e67 ic modeling lang │ │ │ │ │ -000164c0: 7561 6765 2c20 6974 0a63 6f6d 6573 2066 uage, it.comes f │ │ │ │ │ -000164d0: 6169 726c 7920 636c 6f73 652e 2020 5468 airly close. Th │ │ │ │ │ -000164e0: 6520 666f 6c6c 6f77 696e 6720 6578 616d e following exam │ │ │ │ │ -000164f0: 706c 6520 7075 7473 2061 6c6c 2077 6520 ple puts all we │ │ │ │ │ -00016500: 6861 7665 2073 6565 6e20 746f 2077 6f72 have seen to wor │ │ │ │ │ -00016510: 6b0a 696e 2061 2076 6572 7920 7369 6d70 k.in a very simp │ │ │ │ │ -00016520: 6c65 206d 6f64 656c 206f 6620 7468 6520 le model of the │ │ │ │ │ -00016530: 6875 6d61 6e20 6861 6e64 2e20 2053 7461 human hand. Sta │ │ │ │ │ -00016540: 7274 2062 7920 7377 6565 7069 6e67 2061 rt by sweeping a │ │ │ │ │ -00016550: 206c 696e 6520 746f 0a6d 616b 6520 6120 line to.make a │ │ │ │ │ -00016560: 7472 756e 6361 7465 6420 636f 6e65 2c20 truncated cone, │ │ │ │ │ -00016570: 7768 6963 6820 7769 6c6c 2062 6520 636f which will be co │ │ │ │ │ -00016580: 7069 6564 206f 7665 7220 616e 6420 6f76 pied over and ov │ │ │ │ │ -00016590: 6572 2061 6761 696e 2074 6f20 6d61 6b65 er again to make │ │ │ │ │ -000165a0: 0a74 6865 2073 6567 6d65 6e74 7320 6f66 .the segments of │ │ │ │ │ -000165b0: 2066 696e 6765 7273 2e0a 2020 6465 6620 fingers.. def │ │ │ │ │ -000165c0: 4f20 2830 2c30 2c30 2920 2520 6f72 6967 O (0,0,0) % orig │ │ │ │ │ -000165d0: 696e 0a20 2064 6566 2049 205b 312c 302c in. def I [1,0, │ │ │ │ │ -000165e0: 305d 2064 6566 204a 205b 302c 312c 305d 0] def J [0,1,0] │ │ │ │ │ -000165f0: 2064 6566 204b 205b 302c 302c 315d 2025 def K [0,0,1] % │ │ │ │ │ -00016600: 2063 616e 6f6e 6963 616c 2075 6e69 7420 canonical unit │ │ │ │ │ -00016610: 7665 6374 6f72 730a 2020 6465 6620 7365 vectors. def se │ │ │ │ │ -00016620: 676d 656e 7420 7b0a 2020 2020 6465 6620 gment {. def │ │ │ │ │ -00016630: 6e5f 6661 6365 7320 380a 2020 2020 7377 n_faces 8. sw │ │ │ │ │ -00016640: 6565 7020 7b20 6e5f 6661 6365 733c 3e2c eep { n_faces<>, │ │ │ │ │ -00016650: 2072 6f74 6174 6528 3336 3020 2f20 6e5f rotate(360 / n_ │ │ │ │ │ -00016660: 6661 6365 732c 205b 4a5d 2920 7d20 0a20 faces, [J]) } . │ │ │ │ │ -00016670: 2020 2020 206c 696e 6528 7072 6f78 696d line(proxim │ │ │ │ │ -00016680: 616c 5f72 6164 2c20 3029 2864 6973 7461 al_rad, 0)(dista │ │ │ │ │ -00016690: 6c5f 7261 642c 2064 6973 7461 6c5f 6c65 l_rad, distal_le │ │ │ │ │ -000166a0: 6e29 0a20 207d 0a49 6e20 6861 6e64 2061 n). }.In hand a │ │ │ │ │ -000166b0: 6e61 746f 6d79 2c20 5f64 6973 7461 6c5f natomy, _distal_ │ │ │ │ │ -000166c0: 2069 7320 2261 7420 7468 6520 7469 7022 is "at the tip" │ │ │ │ │ -000166d0: 2061 6e64 205f 7072 6f78 696d 616c 5f20 and _proximal_ │ │ │ │ │ -000166e0: 6973 2022 696e 2074 6865 2061 7265 610a is "in the area. │ │ │ │ │ -000166f0: 6f66 2074 6865 2070 616c 6d2e 2220 2057 of the palm." W │ │ │ │ │ -00016700: 6520 6861 7665 206f 6d69 7474 6564 2061 e have omitted a │ │ │ │ │ -00016710: 6c6c 2074 6865 2073 6361 6c61 7220 636f ll the scalar co │ │ │ │ │ -00016720: 6e73 7461 6e74 732e 2020 596f 7520 6361 nstants. You ca │ │ │ │ │ -00016730: 6e20 6669 6e64 0a74 6865 6d20 696e 20e2 n find.them in . │ │ │ │ │ -00016740: 8098 6861 6e64 2e73 6be2 8099 2c20 7768 ..hand.sk..., wh │ │ │ │ │ -00016750: 6963 6820 6973 2070 726f 7669 6465 6420 ich is provided │ │ │ │ │ -00016760: 696e 2074 6865 20e2 8098 736b 6574 6368 in the ...sketch │ │ │ │ │ -00016770: e280 9920 6469 7374 7269 6275 7469 6f6e ... distribution │ │ │ │ │ -00016780: 2e0a 0a20 2020 5765 2061 6c73 6f20 6e65 ... We also ne │ │ │ │ │ -00016790: 6564 2061 2070 726f 746f 7479 7069 6361 ed a prototypica │ │ │ │ │ -000167a0: 6c20 7370 6865 7265 2074 6f20 7573 6520 l sphere to use │ │ │ │ │ -000167b0: 666f 7220 7468 6520 6a6f 696e 7473 2074 for the joints t │ │ │ │ │ -000167c0: 6865 6d73 656c 7665 732e 0a20 2064 6566 hemselves.. def │ │ │ │ │ -000167d0: 206a 6f69 6e74 5f73 7068 6572 6520 7b0a joint_sphere {. │ │ │ │ │ -000167e0: 2020 2020 6465 6620 6e5f 6a6f 696e 745f def n_joint_ │ │ │ │ │ -000167f0: 6661 6365 7320 380a 2020 2020 7377 6565 faces 8. swee │ │ │ │ │ -00016800: 7020 5b66 696c 6c63 6f6c 6f72 3d72 6564 p [fillcolor=red │ │ │ │ │ -00016810: 5d20 7b20 6e5f 6a6f 696e 745f 6661 6365 ] { n_joint_face │ │ │ │ │ -00016820: 732c 2072 6f74 6174 6528 3336 3020 2f20 s, rotate(360 / │ │ │ │ │ -00016830: 6e5f 6a6f 696e 745f 6661 6365 732c 205b n_joint_faces, [ │ │ │ │ │ -00016840: 4a5d 2920 7d0a 2020 2020 2020 7377 6565 J]) }. swee │ │ │ │ │ -00016850: 7020 7b20 6e5f 6a6f 696e 745f 6661 6365 p { n_joint_face │ │ │ │ │ -00016860: 732c 2072 6f74 6174 6528 3138 3020 2f20 s, rotate(180 / │ │ │ │ │ -00016870: 6e5f 6a6f 696e 745f 6661 6365 7329 207d n_joint_faces) } │ │ │ │ │ -00016880: 200a 2020 2020 2020 2020 2830 2c20 2d6a . (0, -j │ │ │ │ │ -00016890: 6f69 6e74 5f72 6164 290a 2020 7d0a 0a20 oint_rad). }.. │ │ │ │ │ -000168a0: 2020 5765 276c 6c20 6e6f 7720 6465 7369 We'll now desi │ │ │ │ │ -000168b0: 676e 2074 6865 2069 6e64 6578 2066 696e gn the index fin │ │ │ │ │ -000168c0: 6765 7220 286e 756d 6265 7220 3120 696e ger (number 1 in │ │ │ │ │ -000168d0: 206f 7572 206e 6f74 6174 696f 6e61 6c0a our notational. │ │ │ │ │ -000168e0: 636f 6e76 656e 7469 6f6e 3b20 6669 6e67 convention; fing │ │ │ │ │ -000168f0: 6572 2030 2069 7320 7468 6520 7468 756d er 0 is the thum │ │ │ │ │ -00016900: 6229 2e20 2054 6865 2064 6973 7461 6c20 b). The distal │ │ │ │ │ -00016910: 726f 7461 7469 6f6e 2066 6f72 2074 6865 rotation for the │ │ │ │ │ -00016920: 2066 696e 6765 720a 6170 706c 6965 7320 finger.applies │ │ │ │ │ -00016930: 6f6e 6c79 2074 6f20 7468 6520 7469 702c only to the tip, │ │ │ │ │ -00016940: 2073 6f20 7765 2064 6566 696e 6520 7468 so we define th │ │ │ │ │ -00016950: 6520 666f 6c6c 6f77 696e 672e 0a20 2064 e following.. d │ │ │ │ │ -00016960: 6566 2064 6973 7461 6c5f 3120 7b0a 2020 ef distal_1 {. │ │ │ │ │ -00016970: 2020 7075 7420 7b20 7472 616e 736c 6174 put { translat │ │ │ │ │ -00016980: 6528 6a6f 696e 745f 6761 7020 2a20 6a6f e(joint_gap * jo │ │ │ │ │ -00016990: 696e 745f 7261 6420 2a20 5b4a 5d29 200a int_rad * [J]) . │ │ │ │ │ -000169a0: 2020 2020 2020 2020 2020 7468 656e 2072 then r │ │ │ │ │ -000169b0: 6f74 6174 6528 6469 7374 616c 5f31 5f72 otate(distal_1_r │ │ │ │ │ -000169c0: 6f74 2c20 5b49 5d29 200a 2020 2020 2020 ot, [I]) . │ │ │ │ │ -000169d0: 2020 2020 7468 656e 2074 7261 6e73 6c61 then transla │ │ │ │ │ -000169e0: 7465 2828 6469 7374 616c 5f6c 656e 202b te((distal_len + │ │ │ │ │ -000169f0: 206a 6f69 6e74 5f67 6170 202a 206a 6f69 joint_gap * joi │ │ │ │ │ -00016a00: 6e74 5f72 6164 2920 2a20 5b4a 5d29 207d nt_rad) * [J]) } │ │ │ │ │ -00016a10: 0a20 2020 2020 207b 7365 676d 656e 747d . {segment} │ │ │ │ │ -00016a20: 0a20 2020 2070 7574 207b 2072 6f74 6174 . put { rotat │ │ │ │ │ -00016a30: 6528 6469 7374 616c 5f31 5f72 6f74 202f e(distal_1_rot / │ │ │ │ │ -00016a40: 2032 2c20 5b49 5d29 0a20 2020 2020 2020 2, [I]). │ │ │ │ │ -00016a50: 2020 2074 6865 6e20 7472 616e 736c 6174 then translat │ │ │ │ │ -00016a60: 6528 2864 6973 7461 6c5f 6c65 6e20 2b20 e((distal_len + │ │ │ │ │ -00016a70: 6a6f 696e 745f 6761 7020 2a20 6a6f 696e joint_gap * join │ │ │ │ │ -00016a80: 745f 7261 6429 202a 205b 4a5d 2920 7d20 t_rad) * [J]) } │ │ │ │ │ -00016a90: 0a20 2020 2020 207b 6a6f 696e 745f 7370 . {joint_sp │ │ │ │ │ -00016aa0: 6865 7265 7d0a 2020 2020 7075 7420 7b20 here}. put { │ │ │ │ │ -00016ab0: 7363 616c 6528 205b 4a5d 202b 2070 726f scale( [J] + pro │ │ │ │ │ -00016ac0: 7869 6d61 6c5f 6469 7374 616c 5f72 6174 ximal_distal_rat │ │ │ │ │ -00016ad0: 696f 202a 2028 5b49 5d2b 5b4b 5d29 2029 io * ([I]+[K]) ) │ │ │ │ │ -00016ae0: 207d 0a20 2020 2020 207b 7365 676d 656e }. {segmen │ │ │ │ │ -00016af0: 747d 0a20 207d 2020 0a54 6865 2069 6465 t}. } .The ide │ │ │ │ │ -00016b00: 6e74 6966 6965 7273 2068 6572 6520 6172 ntifiers here ar │ │ │ │ │ -00016b10: 6520 666f 7220 7369 7a65 2061 6e64 206c e for size and l │ │ │ │ │ -00016b20: 6f63 6174 696f 6e20 636f 6e73 7461 6e74 ocation constant │ │ │ │ │ -00016b30: 732e 2020 5468 6520 6578 6365 7074 696f s. The exceptio │ │ │ │ │ -00016b40: 6e0a 6973 20e2 8098 6469 7374 616c 5f72 n.is ...distal_r │ │ │ │ │ -00016b50: 6f74 5f31 e280 992e 2020 5468 6973 2072 ot_1.... This r │ │ │ │ │ -00016b60: 6f74 6174 696f 6e20 7061 7261 6d65 7465 otation paramete │ │ │ │ │ -00016b70: 7220 6d6f 6465 6c73 2074 6865 2066 6c65 r models the fle │ │ │ │ │ -00016b80: 7869 6e67 206f 6620 7468 650a 6669 6e67 xing of the.fing │ │ │ │ │ -00016b90: 6572 2074 6970 2e20 2054 6865 2066 6972 er tip. The fir │ │ │ │ │ -00016ba0: 7374 20e2 8098 7075 74e2 8099 206d 616b st ...put... mak │ │ │ │ │ -00016bb0: 6573 2061 2063 6f70 7920 6f66 2074 6865 es a copy of the │ │ │ │ │ -00016bc0: 2066 696e 6765 7220 7365 676d 656e 7420 finger segment │ │ │ │ │ -00016bd0: 7468 6174 2069 730a 7472 616e 736c 6174 that is.translat │ │ │ │ │ -00016be0: 6564 2075 7077 6172 6420 6a75 7374 2066 ed upward just f │ │ │ │ │ -00016bf0: 6172 2065 6e6f 7567 6820 746f 206d 616b ar enough to mak │ │ │ │ │ -00016c00: 6520 726f 6f6d 2066 6f72 2074 6865 2073 e room for the s │ │ │ │ │ -00016c10: 7068 6572 6963 616c 206a 6f69 6e74 2e0a pherical joint.. │ │ │ │ │ -00016c20: 5468 656e 2069 7420 6170 706c 6965 7320 Then it applies │ │ │ │ │ -00016c30: 7468 6520 6469 7374 616c 2072 6f74 6174 the distal rotat │ │ │ │ │ -00016c40: 696f 6e2e 2020 4669 6e61 6c6c 7920 6974 ion. Finally it │ │ │ │ │ -00016c50: 2074 7261 6e73 6c61 7465 7320 7468 6520 translates the │ │ │ │ │ -00016c60: 7768 6f6c 650a 6173 7365 6d62 6c79 2075 whole.assembly u │ │ │ │ │ -00016c70: 7077 6172 6420 6167 6169 6e20 746f 206d pward again to m │ │ │ │ │ -00016c80: 616b 6520 726f 6f6d 2066 6f72 2074 6865 ake room for the │ │ │ │ │ -00016c90: 206d 6964 646c 6520 7068 6c61 6e67 6573 middle phlanges │ │ │ │ │ -00016ca0: 2028 7468 6520 6e65 7874 0a62 6f6e 6520 (the next.bone │ │ │ │ │ -00016cb0: 746f 7761 7264 2074 6865 2070 616c 6d29 toward the palm) │ │ │ │ │ -00016cc0: 2e20 2054 6865 2073 6563 6f6e 6420 e280 . The second .. │ │ │ │ │ -00016cd0: 9870 7574 e280 9920 706f 7369 7469 6f6e .put... position │ │ │ │ │ -00016ce0: 7320 7468 6520 7370 6865 7265 2e20 2054 s the sphere. T │ │ │ │ │ -00016cf0: 6865 7265 2069 730a 6120 726f 7461 7469 here is.a rotati │ │ │ │ │ -00016d00: 6f6e 2074 6f20 706c 6163 6520 7468 6520 on to place the │ │ │ │ │ -00016d10: 6772 6964 206f 6e20 7468 6520 7370 6865 grid on the sphe │ │ │ │ │ -00016d20: 7265 2073 7572 6661 6365 2061 7420 616e re surface at an │ │ │ │ │ -00016d30: 206e 6963 6520 616e 676c 652c 0a74 6865 nice angle,.the │ │ │ │ │ -00016d40: 6e20 6120 7472 616e 736c 6174 696f 6e20 n a translation │ │ │ │ │ -00016d50: 746f 2074 6865 2062 6173 6520 6f66 2074 to the base of t │ │ │ │ │ -00016d60: 6865 2064 6973 7461 6c20 7068 6c61 6e67 he distal phlang │ │ │ │ │ -00016d70: 6573 2c20 7768 6963 6820 6973 2061 6c73 es, which is als │ │ │ │ │ -00016d80: 6f0a 6365 6e74 6572 206f 6620 6974 7320 o.center of its │ │ │ │ │ -00016d90: 726f 7461 7469 6f6e 2e20 2046 696e 616c rotation. Final │ │ │ │ │ -00016da0: 6c79 2c20 7468 6520 6c61 7374 20e2 8098 ly, the last ... │ │ │ │ │ -00016db0: 7075 74e2 8099 2070 6f73 6974 696f 6e73 put... positions │ │ │ │ │ -00016dc0: 2074 6865 206d 6964 646c 650a 7365 676d the middle.segm │ │ │ │ │ -00016dd0: 656e 7420 6974 7365 6c66 2e0a 0a20 2020 ent itself... │ │ │ │ │ -00016de0: 5468 6520 6d69 6464 6c65 206a 6f69 6e74 The middle joint │ │ │ │ │ -00016df0: 2069 7320 7468 6520 6e65 7874 206f 6e65 is the next one │ │ │ │ │ -00016e00: 2064 6f77 6e2c 2077 6974 6820 726f 7461 down, with rota │ │ │ │ │ -00016e10: 7469 6f6e 2061 6e67 6c65 0ae2 8098 6d69 tion angle....mi │ │ │ │ │ -00016e20: 6464 6c65 5f72 6f74 5f31 e280 992e 2020 ddle_rot_1.... │ │ │ │ │ -00016e30: 5768 656e 2074 6869 7320 616e 676c 6520 When this angle │ │ │ │ │ -00016e40: 6368 616e 6765 732c 2077 6520 6e65 6564 changes, we need │ │ │ │ │ -00016e50: 2061 6c6c 2074 6865 206f 626a 6563 7473 all the objects │ │ │ │ │ -00016e60: 2069 6e0a e280 9864 6973 7461 6c5f 31e2 in....distal_1. │ │ │ │ │ -00016e70: 8099 2074 6f20 726f 7461 7465 2061 7320 .. to rotate as │ │ │ │ │ -00016e80: 6120 756e 6974 2e20 2054 6869 7320 6973 a unit. This is │ │ │ │ │ -00016e90: 2074 6865 2072 6561 736f 6e69 6e67 2062 the reasoning b │ │ │ │ │ -00016ea0: 6568 696e 6420 7468 6520 6e65 7874 0a64 ehind the next.d │ │ │ │ │ -00016eb0: 6566 696e 6974 696f 6e2e 0a20 2064 6566 efinition.. def │ │ │ │ │ -00016ec0: 2066 696e 6765 725f 3120 7b0a 2020 2020 finger_1 {. │ │ │ │ │ -00016ed0: 7075 7420 7b20 7472 616e 736c 6174 6528 put { translate( │ │ │ │ │ -00016ee0: 6a6f 696e 745f 6761 7020 2a20 6a6f 696e joint_gap * join │ │ │ │ │ -00016ef0: 745f 7261 6420 2a20 5b4a 5d29 0a20 2020 t_rad * [J]). │ │ │ │ │ -00016f00: 2020 2020 2020 2074 6865 6e20 726f 7461 then rota │ │ │ │ │ -00016f10: 7465 286d 6964 646c 655f 315f 726f 742c te(middle_1_rot, │ │ │ │ │ -00016f20: 205b 495d 290a 2020 2020 2020 2020 2020 [I]). │ │ │ │ │ -00016f30: 7468 656e 2074 7261 6e73 6c61 7465 2828 then translate(( │ │ │ │ │ -00016f40: 6d69 6464 6c65 5f72 6174 696f 202a 2064 middle_ratio * d │ │ │ │ │ -00016f50: 6973 7461 6c5f 6c65 6e20 2b20 0a20 2020 istal_len + . │ │ │ │ │ -00016f60: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -00016f70: 2020 2020 2020 206a 6f69 6e74 5f67 6170 joint_gap │ │ │ │ │ -00016f80: 202a 206a 6f69 6e74 5f72 6164 2920 2a20 * joint_rad) * │ │ │ │ │ -00016f90: 5b4a 5d29 207d 0a20 2020 2020 207b 6469 [J]) }. {di │ │ │ │ │ -00016fa0: 7374 616c 5f31 7d0a 2020 2020 7075 7420 stal_1}. put │ │ │ │ │ -00016fb0: 7b20 7363 616c 6528 7072 6f78 696d 616c { scale(proximal │ │ │ │ │ -00016fc0: 5f64 6973 7461 6c5f 7261 7469 6f29 0a20 _distal_ratio). │ │ │ │ │ -00016fd0: 2020 2020 2020 2020 2074 6865 6e20 726f then ro │ │ │ │ │ -00016fe0: 7461 7465 286d 6964 646c 655f 315f 726f tate(middle_1_ro │ │ │ │ │ -00016ff0: 7420 2f20 322c 205b 495d 290a 2020 2020 t / 2, [I]). │ │ │ │ │ -00017000: 2020 2020 2020 7468 656e 2074 7261 6e73 then trans │ │ │ │ │ -00017010: 6c61 7465 2828 6d69 6464 6c65 5f72 6174 late((middle_rat │ │ │ │ │ -00017020: 696f 202a 2064 6973 7461 6c5f 6c65 6e20 io * distal_len │ │ │ │ │ -00017030: 2b20 0a20 2020 2020 2020 2020 2020 2020 + . │ │ │ │ │ -00017040: 2020 2020 2020 2020 2020 2020 206a 6f69 joi │ │ │ │ │ -00017050: 6e74 5f67 6170 202a 206a 6f69 6e74 5f72 nt_gap * joint_r │ │ │ │ │ -00017060: 6164 2920 2a20 5b4a 5d29 207d 200a 2020 ad) * [J]) } . │ │ │ │ │ -00017070: 2020 2020 7b6a 6f69 6e74 5f73 7068 6572 {joint_spher │ │ │ │ │ -00017080: 657d 0a20 2020 2070 7574 207b 2073 6361 e}. put { sca │ │ │ │ │ -00017090: 6c65 2820 6d69 6464 6c65 5f72 6174 696f le( middle_ratio │ │ │ │ │ -000170a0: 202a 205b 4a5d 202b 200a 2020 2020 2020 * [J] + . │ │ │ │ │ -000170b0: 2020 2020 2020 2020 2020 2070 726f 7869 proxi │ │ │ │ │ -000170c0: 6d61 6c5f 6469 7374 616c 5f72 6174 696f mal_distal_ratio │ │ │ │ │ -000170d0: 5e32 202a 2028 5b49 5d2b 5b4b 5d29 2029 ^2 * ([I]+[K]) ) │ │ │ │ │ -000170e0: 207d 0a20 2020 2020 207b 7365 676d 656e }. {segmen │ │ │ │ │ -000170f0: 747d 0a20 207d 0a54 6869 7320 6c6f 6f6b t}. }.This look │ │ │ │ │ -00017100: 7320 7665 7279 2073 696d 696c 6172 2074 s very similar t │ │ │ │ │ -00017110: 6f20 7468 6520 7072 6576 696f 7573 2064 o the previous d │ │ │ │ │ -00017120: 6566 696e 6974 696f 6e2c 2061 6e64 2069 efinition, and i │ │ │ │ │ -00017130: 7420 6973 2e20 2054 6865 0a69 6d70 6f72 t is. The.impor │ │ │ │ │ -00017140: 7461 6e74 2064 6966 6665 7265 6e63 6520 tant difference │ │ │ │ │ -00017150: 6973 2074 6861 7420 7261 7468 6572 2074 is that rather t │ │ │ │ │ -00017160: 6861 6e20 706f 7369 7469 6f6e 696e 6720 han positioning │ │ │ │ │ -00017170: 616e 6420 726f 7461 7469 6e67 2061 0a73 and rotating a.s │ │ │ │ │ -00017180: 696e 676c 6520 7365 676d 656e 742c 2077 ingle segment, w │ │ │ │ │ -00017190: 6520 706f 7369 7469 6f6e 2061 6e64 2072 e position and r │ │ │ │ │ -000171a0: 6f74 6174 6520 7468 6520 656e 7469 7265 otate the entire │ │ │ │ │ -000171b0: 2022 6173 7365 6d62 6c79 2220 6465 6669 "assembly" defi │ │ │ │ │ -000171c0: 6e65 6420 6173 0ae2 8098 6469 7374 616c ned as....distal │ │ │ │ │ -000171d0: 5f31 e280 992e 2020 5468 6520 7265 7374 _1.... The rest │ │ │ │ │ -000171e0: 2069 7320 6a75 7374 2061 7269 7468 6d65 is just arithme │ │ │ │ │ -000171f0: 7469 6320 746f 2063 6f6d 7075 7465 2073 tic to compute s │ │ │ │ │ -00017200: 697a 6573 2061 6e64 2070 6f73 6974 696f izes and positio │ │ │ │ │ -00017210: 6e73 0a74 6861 7420 6c6f 6f6b 206e 6963 ns.that look nic │ │ │ │ │ -00017220: 652e 2020 5468 6520 6c61 7374 20e2 8098 e. The last ... │ │ │ │ │ -00017230: 7075 74e2 8099 2070 6c61 6365 7320 616e put... places an │ │ │ │ │ -00017240: 2061 7070 726f 7072 6961 7465 6c79 2073 appropriately s │ │ │ │ │ -00017250: 6861 7065 6420 7365 676d 656e 740a 7468 haped segment.th │ │ │ │ │ -00017260: 6174 2069 7320 7468 6520 5f70 726f 7869 at is the _proxi │ │ │ │ │ -00017270: 6d61 6c20 7068 6c61 6e67 6573 5f2c 2074 mal phlanges_, t │ │ │ │ │ -00017280: 6865 2062 6f6e 6520 7468 6174 206a 6f69 he bone that joi │ │ │ │ │ -00017290: 6e73 2074 6865 2070 616c 6d20 6f66 2074 ns the palm of t │ │ │ │ │ -000172a0: 6865 0a68 616e 642e 2020 5468 6973 2063 he.hand. This c │ │ │ │ │ -000172b0: 6f6d 706c 6574 6573 2074 6865 2066 696e ompletes the fin │ │ │ │ │ -000172c0: 6765 7220 6974 7365 6c66 2e0a 0a20 2020 ger itself... │ │ │ │ │ -000172d0: 416c 6c20 7468 6520 6f74 6865 7220 6669 All the other fi │ │ │ │ │ -000172e0: 6e67 6572 7320 6172 6520 6465 7363 7269 ngers are descri │ │ │ │ │ -000172f0: 6265 6420 6964 656e 7469 6361 6c6c 7920 bed identically │ │ │ │ │ -00017300: 746f 2074 6869 7320 6f6e 652e 2020 5765 to this one. We │ │ │ │ │ -00017310: 0a61 6363 6f75 6e74 2066 6f72 2074 6865 .account for the │ │ │ │ │ -00017320: 2066 6163 7420 7468 6174 2072 6561 6c20 fact that real │ │ │ │ │ -00017330: 6669 6e67 6572 7320 6172 6520 6469 6666 fingers are diff │ │ │ │ │ -00017340: 6572 656e 7420 7369 7a65 7320 696e 2074 erent sizes in t │ │ │ │ │ -00017350: 6865 206e 6578 740a 7374 6570 2c20 7768 he next.step, wh │ │ │ │ │ -00017360: 6963 6820 6973 2074 6f20 6275 696c 6420 ich is to build │ │ │ │ │ -00017370: 7468 6520 656e 7469 7265 2068 616e 642e the entire hand. │ │ │ │ │ -00017380: 0a0a 2020 2054 6865 20e2 8098 6861 6e64 .. The ...hand │ │ │ │ │ -00017390: e280 9920 6465 6669 6e69 7469 6f6e 2074 ... definition t │ │ │ │ │ -000173a0: 6861 7420 666f 6c6c 6f77 7320 696e 636c hat follows incl │ │ │ │ │ -000173b0: 7564 6573 2061 2073 6563 7469 6f6e 2066 udes a section f │ │ │ │ │ -000173c0: 6f72 2065 6163 680a 6669 6e67 6572 2e20 or each.finger. │ │ │ │ │ -000173d0: 2057 6527 6c6c 2063 6f6e 7469 6e75 6520 We'll continue │ │ │ │ │ -000173e0: 7769 7468 2066 696e 6765 7220 3120 616e with finger 1 an │ │ │ │ │ -000173f0: 6420 6f6d 6974 2061 6c6c 2074 6865 206f d omit all the o │ │ │ │ │ -00017400: 7468 6572 732e 2020 284f 6620 6e6f 7465 thers. (Of note │ │ │ │ │ -00017410: 0a69 7320 7468 6174 2074 6865 2074 6875 .is that the thu │ │ │ │ │ -00017420: 6d62 206e 6565 6473 2073 6c69 6768 746c mb needs slightl │ │ │ │ │ -00017430: 7920 7370 6563 6961 6c20 7472 6561 746d y special treatm │ │ │ │ │ -00017440: 656e 742d 2d61 6e20 6578 7472 6120 726f ent--an extra ro │ │ │ │ │ -00017450: 7461 7469 6f6e 2074 6f0a 6163 636f 756e tation to.accoun │ │ │ │ │ -00017460: 7420 666f 7220 6974 7320 6f70 706f 7369 t for its opposi │ │ │ │ │ -00017470: 6e67 2061 6e67 6c65 2e20 2054 6869 7320 ng angle. This │ │ │ │ │ -00017480: 6973 2063 6c65 6172 2069 6e20 7468 6520 is clear in the │ │ │ │ │ -00017490: 6675 6c6c 2073 6f75 7263 6520 636f 6465 full source code │ │ │ │ │ -000174a0: 2e29 0a4e 6f74 2073 7572 7072 6973 696e .).Not surprisin │ │ │ │ │ -000174b0: 676c 792c 2074 6865 20e2 8098 6861 6e64 gly, the ...hand │ │ │ │ │ -000174c0: e280 9920 6465 6669 6e69 7469 6f6e 206c ... definition l │ │ │ │ │ -000174d0: 6f6f 6b73 2076 6572 7920 6d75 6368 206c ooks very much l │ │ │ │ │ -000174e0: 696b 6520 7468 650a 7072 6576 696f 7573 ike the.previous │ │ │ │ │ -000174f0: 2074 776f 2e20 2049 7420 7368 6f75 6c64 two. It should │ │ │ │ │ -00017500: 2062 6520 6e6f 2073 7572 7072 6973 6520 be no surprise │ │ │ │ │ -00017510: 7468 6174 2077 6865 6e20 7468 6520 726f that when the ro │ │ │ │ │ -00017520: 7461 7469 6f6e 2070 6172 616d 6574 6572 tation parameter │ │ │ │ │ -00017530: 0ae2 8098 6d65 7461 5f31 5f72 6f74 e280 ....meta_1_rot.. │ │ │ │ │ -00017540: 9920 6368 616e 6765 732c 2074 6865 2065 . changes, the e │ │ │ │ │ -00017550: 6e74 6972 6520 6669 6e67 6572 2072 6f74 ntire finger rot │ │ │ │ │ -00017560: 6174 6573 2120 2054 6865 7265 2069 7320 ates! There is │ │ │ │ │ -00017570: 616e 2061 6464 6974 696f 6e61 6c0a 726f an additional.ro │ │ │ │ │ -00017580: 7461 7469 6f6e 2074 6861 7420 616c 6c6f tation that allo │ │ │ │ │ -00017590: 7773 2074 6865 2066 696e 6765 7273 2074 ws the fingers t │ │ │ │ │ -000175a0: 6f20 7370 7265 6164 206c 6174 6572 616c o spread lateral │ │ │ │ │ -000175b0: 6c79 2e20 2057 6520 7361 7920 7468 6573 ly. We say thes │ │ │ │ │ -000175c0: 650a 6a6f 696e 7473 206f 6620 7468 6520 e.joints of the │ │ │ │ │ -000175d0: 7072 6f78 696d 616c 2070 686c 616e 6765 proximal phlange │ │ │ │ │ -000175e0: 7320 6861 7665 2074 776f 205f 6465 6772 s have two _degr │ │ │ │ │ -000175f0: 6565 7320 6f66 2066 7265 6564 6f6d 5f2e ees of freedom_. │ │ │ │ │ -00017600: 2020 5468 650a 6a6f 696e 7473 2068 6967 The.joints hig │ │ │ │ │ -00017610: 6865 7220 6f6e 2074 6865 2066 696e 6765 her on the finge │ │ │ │ │ -00017620: 7220 6861 7665 206f 6e6c 7920 6f6e 652e r have only one. │ │ │ │ │ -00017630: 2020 4669 6e61 6c6c 792c 2065 6163 6820 Finally, each │ │ │ │ │ -00017640: 6669 6e67 6572 2069 730a 7363 616c 6564 finger is.scaled │ │ │ │ │ -00017650: 2062 7920 6120 6661 6374 6f72 2074 6f20 by a factor to │ │ │ │ │ -00017660: 6c65 6e64 2069 7420 7072 6f70 6f72 7469 lend it proporti │ │ │ │ │ -00017670: 6f6e 2e0a 2020 6465 6620 6861 6e64 207b on.. def hand { │ │ │ │ │ -00017680: 0a20 2020 2025 2066 696e 6765 7220 3120 . % finger 1 │ │ │ │ │ -00017690: 5b61 6c6c 206f 7468 6572 2066 696e 6765 [all other finge │ │ │ │ │ -000176a0: 7273 206f 6d69 7474 6564 5d0a 2020 2020 rs omitted]. │ │ │ │ │ -000176b0: 6465 6620 7363 616c 655f 3120 2e38 350a def scale_1 .85. │ │ │ │ │ -000176c0: 2020 2020 7075 7420 7b20 7363 616c 6528 put { scale( │ │ │ │ │ -000176d0: 7363 616c 655f 3129 200a 2020 2020 2020 scale_1) . │ │ │ │ │ -000176e0: 2020 2020 7468 656e 2074 7261 6e73 6c61 then transla │ │ │ │ │ -000176f0: 7465 2828 6a6f 696e 745f 6761 7020 2a20 te((joint_gap * │ │ │ │ │ -00017700: 6a6f 696e 745f 7261 6429 202a 205b 4a5d joint_rad) * [J] │ │ │ │ │ -00017710: 290a 0920 2074 6865 6e20 726f 7461 7465 ).. then rotate │ │ │ │ │ -00017720: 286d 6574 615f 315f 726f 742c 205b 495d (meta_1_rot, [I] │ │ │ │ │ -00017730: 290a 2020 2020 2020 2020 2020 7468 656e ). then │ │ │ │ │ -00017740: 2072 6f74 6174 6528 2d73 7072 6561 645f rotate(-spread_ │ │ │ │ │ -00017750: 726f 742c 205b 4b5d 290a 2020 2020 2020 rot, [K]). │ │ │ │ │ -00017760: 2020 2020 7468 656e 2074 7261 6e73 6c61 then transla │ │ │ │ │ -00017770: 7465 2828 7072 6f78 696d 616c 5f31 5f6c te((proximal_1_l │ │ │ │ │ -00017780: 6f63 2920 2d20 284f 2929 207d 200a 2020 oc) - (O)) } . │ │ │ │ │ -00017790: 2020 2020 7b66 696e 6765 725f 317d 0a20 {finger_1}. │ │ │ │ │ -000177a0: 2020 2070 7574 207b 2073 6361 6c65 2873 put { scale(s │ │ │ │ │ -000177b0: 6361 6c65 5f31 202a 2070 726f 7869 6d61 cale_1 * proxima │ │ │ │ │ -000177c0: 6c5f 6469 7374 616c 5f72 6174 696f 5e32 l_distal_ratio^2 │ │ │ │ │ -000177d0: 290a 2020 2020 2020 2020 2020 7468 656e ). then │ │ │ │ │ -000177e0: 2072 6f74 6174 6528 6d65 7461 5f31 5f72 rotate(meta_1_r │ │ │ │ │ -000177f0: 6f74 202f 2032 2c20 5b49 5d29 0a20 2020 ot / 2, [I]). │ │ │ │ │ -00017800: 2020 2020 2020 2074 6865 6e20 726f 7461 then rota │ │ │ │ │ -00017810: 7465 282d 7370 7265 6164 5f72 6f74 2c20 te(-spread_rot, │ │ │ │ │ -00017820: 5b4b 5d29 0a20 2020 2020 2020 2020 2074 [K]). t │ │ │ │ │ -00017830: 6865 6e20 7472 616e 736c 6174 6528 2870 hen translate((p │ │ │ │ │ -00017840: 726f 7869 6d61 6c5f 315f 6c6f 6329 202d roximal_1_loc) - │ │ │ │ │ -00017850: 2028 4f29 2920 7d20 0a20 2020 2020 207b (O)) } . { │ │ │ │ │ -00017860: 6a6f 696e 745f 7370 6865 7265 7d0a 0a20 joint_sphere}.. │ │ │ │ │ -00017870: 2020 2025 2070 616c 6d0a 2020 2020 7377 % palm. sw │ │ │ │ │ -00017880: 6565 7020 7b20 312c 2072 6f74 6174 6528 eep { 1, rotate( │ │ │ │ │ -00017890: 362c 2028 302c 3135 2c30 292c 205b 495d 6, (0,15,0), [I] │ │ │ │ │ -000178a0: 2920 7d0a 2020 2020 2020 7075 7420 7b20 ) }. put { │ │ │ │ │ -000178b0: 726f 7461 7465 282d 332c 2028 302c 3135 rotate(-3, (0,15 │ │ │ │ │ -000178c0: 2c30 292c 205b 495d 2920 7d20 7b0a 2020 ,0), [I]) } {. │ │ │ │ │ -000178d0: 2020 2020 2020 706f 6c79 676f 6e28 7072 polygon(pr │ │ │ │ │ -000178e0: 6f78 696d 616c 5f31 5f6c 6f63 2928 7072 oximal_1_loc)(pr │ │ │ │ │ -000178f0: 6f78 696d 616c 5f32 5f6c 6f63 290a 2020 oximal_2_loc). │ │ │ │ │ -00017900: 2020 2020 2020 2020 2020 2020 2028 7072 (pr │ │ │ │ │ -00017910: 6f78 696d 616c 5f33 5f6c 6f63 2928 7072 oximal_3_loc)(pr │ │ │ │ │ -00017920: 6f78 696d 616c 5f34 5f6c 6f63 290a 2020 oximal_4_loc). │ │ │ │ │ -00017930: 2020 2020 2020 2020 2020 2020 2028 6835 (h5 │ │ │ │ │ -00017940: 2928 6836 2928 6836 6129 2868 3929 2868 )(h6)(h6a)(h9)(h │ │ │ │ │ -00017950: 3130 290a 2020 2020 2020 2020 706f 6c79 10). poly │ │ │ │ │ -00017960: 676f 6e28 6836 6129 2868 3729 2868 3829 gon(h6a)(h7)(h8) │ │ │ │ │ -00017970: 2868 3929 0a20 2020 7d20 207d 0a54 6865 (h9). } }.The │ │ │ │ │ -00017980: 206c 6173 7420 7365 6374 696f 6e20 6f66 last section of │ │ │ │ │ -00017990: 2074 6865 2064 6566 696e 6974 696f 6e20 the definition │ │ │ │ │ -000179a0: 6372 6561 7465 7320 7468 6520 706f 6c79 creates the poly │ │ │ │ │ -000179b0: 746f 7065 2066 6f72 2074 6865 2070 616c tope for the pal │ │ │ │ │ -000179c0: 6d20 6f66 0a74 6865 2068 616e 6420 6279 m of.the hand by │ │ │ │ │ -000179d0: 20e2 8098 7377 6565 70e2 8099 696e 6720 ...sweep...ing │ │ │ │ │ -000179e0: 6120 3130 2d73 6964 6564 2070 6f6c 7967 a 10-sided polyg │ │ │ │ │ -000179f0: 6f6e 2074 6872 6f75 6768 2061 2076 6572 on through a ver │ │ │ │ │ -00017a00: 7920 7368 6f72 7420 6172 630a 2839 2064 y short arc.(9 d │ │ │ │ │ -00017a10: 6567 7265 6573 292e 2020 5468 6973 2070 egrees). This p │ │ │ │ │ -00017a20: 726f 7669 6465 7320 6120 7765 6467 652d rovides a wedge- │ │ │ │ │ -00017a30: 7368 6170 6564 2070 726f 6669 6c65 2077 shaped profile w │ │ │ │ │ -00017a40: 6865 6e20 7669 6577 6564 2066 726f 6d20 hen viewed from │ │ │ │ │ -00017a50: 7468 650a 7369 6465 2e20 2054 6865 2074 the.side. The t │ │ │ │ │ -00017a60: 6869 636b 2065 6e64 206f 6620 7468 6520 hick end of the │ │ │ │ │ -00017a70: 7765 6467 6520 6973 2074 6865 2077 7269 wedge is the wri │ │ │ │ │ -00017a80: 7374 2e20 2042 6563 6175 7365 2074 6865 st. Because the │ │ │ │ │ -00017a90: 2070 6f6c 7967 6f6e 2069 730a 636f 6e63 polygon is.conc │ │ │ │ │ -00017aa0: 6176 652c 2069 7420 6973 2073 706c 6974 ave, it is split │ │ │ │ │ -00017ab0: 2069 6e74 6f20 696e 746f 2074 776f 2063 into into two c │ │ │ │ │ -00017ac0: 6f6e 7665 7820 7368 6170 6573 2077 6974 onvex shapes wit │ │ │ │ │ -00017ad0: 6820 6e69 6e65 2061 6e64 2066 6f75 720a h nine and four. │ │ │ │ │ -00017ae0: 7665 7274 6963 6573 2e0a 0a20 2020 5765 vertices... We │ │ │ │ │ -00017af0: 2063 616e 206e 6f77 2068 6176 6520 6675 can now have fu │ │ │ │ │ -00017b00: 6e20 706f 7369 7469 6f6e 696e 6720 7468 n positioning th │ │ │ │ │ -00017b10: 6520 6861 6e64 2062 7920 6164 6a75 7374 e hand by adjust │ │ │ │ │ -00017b20: 696e 6720 7468 6520 7661 7269 6f75 730a ing the various. │ │ │ │ │ -00017b30: 726f 7461 7469 6f6e 2061 6e67 6c65 732e rotation angles. │ │ │ │ │ -00017b40: 2020 5468 6520 636f 6d70 6c65 7465 2073 The complete s │ │ │ │ │ -00017b50: 6f75 7263 6520 696e 636c 7564 6573 2064 ource includes d │ │ │ │ │ -00017b60: 6566 696e 6974 696f 6e73 2077 6974 680a efinitions with. │ │ │ │ │ -00017b70: 616c 7465 726e 6174 6976 6573 2074 6861 alternatives tha │ │ │ │ │ -00017b80: 7420 696e 636c 7564 6520 7468 6520 666f t include the fo │ │ │ │ │ -00017b90: 6c6c 6f77 696e 6720 7669 6577 7320 616e llowing views an │ │ │ │ │ -00017ba0: 6420 6d6f 7265 2e0a 0a00 085b 696d 6167 d more.....[imag │ │ │ │ │ -00017bb0: 6520 7372 633d 2265 7832 3130 2e70 6e67 e src="ex210.png │ │ │ │ │ -00017bc0: 2220 7465 7874 3d22 496d 6167 6520 6578 " text="Image ex │ │ │ │ │ -00017bd0: 3231 3020 6f6d 6974 7465 6420 696e 2074 210 omitted in t │ │ │ │ │ -00017be0: 6578 7420 7665 7273 696f 6e20 6f66 2074 ext version of t │ │ │ │ │ -00017bf0: 6869 7320 646f 6375 6d65 6e74 2e22 0008 his document.".. │ │ │ │ │ -00017c00: 5d00 085b 696d 6167 6520 7372 633d 2265 ]..[image src="e │ │ │ │ │ -00017c10: 7832 3230 2e70 6e67 2220 7465 7874 3d22 x220.png" text=" │ │ │ │ │ -00017c20: 496d 6167 6520 6578 3232 3020 6f6d 6974 Image ex220 omit │ │ │ │ │ -00017c30: 7465 6420 696e 2074 6578 7420 7665 7273 ted in text vers │ │ │ │ │ -00017c40: 696f 6e20 6f66 2074 6869 7320 646f 6375 ion of this docu │ │ │ │ │ -00017c50: 6d65 6e74 2e22 0008 5d00 085b 696d 6167 ment."..]..[imag │ │ │ │ │ -00017c60: 6520 7372 633d 2265 7832 3330 2e70 6e67 e src="ex230.png │ │ │ │ │ -00017c70: 2220 7465 7874 3d22 496d 6167 6520 6578 " text="Image ex │ │ │ │ │ -00017c80: 3233 3020 6f6d 6974 7465 6420 696e 2074 230 omitted in t │ │ │ │ │ -00017c90: 6578 7420 7665 7273 696f 6e20 6f66 2074 ext version of t │ │ │ │ │ -00017ca0: 6869 7320 646f 6375 6d65 6e74 2e22 0008 his document.".. │ │ │ │ │ -00017cb0: 5d00 085b 696d 6167 6520 7372 633d 2265 ]..[image src="e │ │ │ │ │ -00017cc0: 7832 3430 2e70 6e67 2220 7465 7874 3d22 x240.png" text=" │ │ │ │ │ -00017cd0: 496d 6167 6520 6578 3234 3020 6f6d 6974 Image ex240 omit │ │ │ │ │ -00017ce0: 7465 6420 696e 2074 6578 7420 7665 7273 ted in text vers │ │ │ │ │ -00017cf0: 696f 6e20 6f66 2074 6869 7320 646f 6375 ion of this docu │ │ │ │ │ -00017d00: 6d65 6e74 2e22 0008 5d0a 0a1f 0a46 696c ment."..]....Fil │ │ │ │ │ -00017d10: 653a 2073 6b65 7463 682e 696e 666f 2c20 e: sketch.info, │ │ │ │ │ -00017d20: 204e 6f64 653a 2043 6176 6561 7473 2c20 Node: Caveats, │ │ │ │ │ -00017d30: 2050 7265 763a 2041 2068 6965 7261 7263 Prev: A hierarc │ │ │ │ │ -00017d40: 6869 6361 6c20 6d6f 6465 6c2c 2020 5570 hical model, Up │ │ │ │ │ -00017d50: 3a20 4275 696c 6469 6e67 2061 2064 7261 : Building a dra │ │ │ │ │ -00017d60: 7769 6e67 0a0a 342e 3420 4361 7665 6174 wing..4.4 Caveat │ │ │ │ │ -00017d70: 730a 3d3d 3d3d 3d3d 3d3d 3d3d 3d0a 0ae2 s.===========... │ │ │ │ │ -00017d80: 8098 536b 6574 6368 e280 9920 6973 2061 ..Sketch... is a │ │ │ │ │ -00017d90: 2066 6169 726c 7920 706f 7765 7266 756c fairly powerful │ │ │ │ │ -00017da0: 2074 6f6f 6c20 666f 7220 6472 6177 696e tool for drawin │ │ │ │ │ -00017db0: 672c 2062 7574 2c20 6a75 7374 2061 7320 g, but, just as │ │ │ │ │ -00017dc0: 7769 7468 2054 6558 2c0a 7468 6520 706f with TeX,.the po │ │ │ │ │ -00017dd0: 7765 7220 746f 2063 7265 6174 6520 6265 wer to create be │ │ │ │ │ -00017de0: 6175 7469 6675 6c20 7265 7375 6c74 7320 autiful results │ │ │ │ │ -00017df0: 636f 6d65 7320 616c 6f6e 6720 7769 7468 comes along with │ │ │ │ │ -00017e00: 2074 6865 2070 6f77 6572 2074 6f20 6d61 the power to ma │ │ │ │ │ -00017e10: 6b65 0a6d 6973 7461 6b65 732e 2020 5468 ke.mistakes. Th │ │ │ │ │ -00017e20: 6520 666f 6c6c 6f77 696e 6720 6172 6520 e following are │ │ │ │ │ -00017e30: 736f 6d65 2070 6f69 6e74 7320 7768 6572 some points wher │ │ │ │ │ -00017e40: 6520 6361 7265 2069 7320 6e65 6365 7373 e care is necess │ │ │ │ │ -00017e50: 6172 7920 616e 640a 7768 6572 6520 7468 ary and.where th │ │ │ │ │ -00017e60: 6520 6375 7272 656e 7420 7665 7273 696f e current versio │ │ │ │ │ -00017e70: 6e20 6f66 20e2 8098 736b 6574 6368 e280 n of ...sketch.. │ │ │ │ │ -00017e80: 9920 6973 206c 696d 6974 6564 206f 7220 . is limited or │ │ │ │ │ -00017e90: 6861 7320 6b6e 6f77 6e20 6275 6773 2e0a has known bugs.. │ │ │ │ │ -00017ea0: 0a2a 204d 656e 753a 0a0a 2a20 4c69 6d69 .* Menu:..* Limi │ │ │ │ │ -00017eb0: 7473 206f 6e20 6572 726f 7220 6465 7465 ts on error dete │ │ │ │ │ -00017ec0: 6374 696f 6e3a 3a20 2020 5768 6174 2073 ction:: What s │ │ │ │ │ -00017ed0: 6b65 7463 6820 646f 6573 6e27 7420 646f ketch doesn't do │ │ │ │ │ -00017ee0: 2e0a 2a20 436c 6970 7069 6e67 3a3a 2020 ..* Clipping:: │ │ │ │ │ -00017ef0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ -00017f00: 2020 4e6f 2063 6c69 7070 696e 6720 6174 No clipping at │ │ │ │ │ -00017f10: 2070 7265 7365 6e74 2e0a 2a20 4869 6464 present..* Hidd │ │ │ │ │ -00017f20: 656e 2073 7572 6661 6365 2072 656d 6f76 en surface remov │ │ │ │ │ -00017f30: 616c 3a3a 2020 2020 2020 496d 7065 7266 al:: Imperf │ │ │ │ │ -00017f40: 6563 7469 6f6e 7320 746f 2066 6978 2e0a ections to fix.. │ │ │ │ │ -00017f50: 0a1f 0a46 696c 653a 2073 6b65 7463 682e ...File: sketch. │ │ │ │ │ -00017f60: 696e 666f 2c20 204e 6f64 653a 204c 696d info, Node: Lim │ │ │ │ │ -00017f70: 6974 7320 6f6e 2065 7272 6f72 2064 6574 its on error det │ │ │ │ │ -00017f80: 6563 7469 6f6e 2c20 204e 6578 743a 2043 ection, Next: C │ │ │ │ │ -00017f90: 6c69 7070 696e 672c 2020 5072 6576 3a20 lipping, Prev: │ │ │ │ │ -00017fa0: 4361 7665 6174 732c 2020 5570 3a20 4361 Caveats, Up: Ca │ │ │ │ │ -00017fb0: 7665 6174 730a 0a34 2e34 2e31 204c 696d veats..4.4.1 Lim │ │ │ │ │ -00017fc0: 6974 7320 6f6e 20e2 8098 736b 6574 6368 its on ...sketch │ │ │ │ │ -00017fd0: e280 9920 6572 726f 7220 6465 7465 6374 ... error detect │ │ │ │ │ -00017fe0: 696f 6e0a 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ion.------------ │ │ │ │ │ +00011d40: 2d2d 2d2d 2d2d 2d0a 7363 616c 6172 2020 -------.scalar │ │ │ │ │ +00011d50: 2020 2020 e280 9849 44e2 8099 0a70 6f69 ...ID....poi │ │ │ │ │ +00011d60: 6e74 2020 2020 2020 20e2 8098 2849 4429 nt ...(ID) │ │ │ │ │ +00011d70: e280 990a 7665 6374 6f72 2020 2020 2020 ....vector │ │ │ │ │ +00011d80: e280 985b 4944 5de2 8099 0a74 7261 6e73 ...[ID]....trans │ │ │ │ │ +00011d90: 666f 726d 2020 20e2 8098 5b5b 4944 5d5d form ...[[ID]] │ │ │ │ │ +00011da0: e280 990a 6472 6177 6162 6c65 2020 2020 ....drawable │ │ │ │ │ +00011db0: e280 987b 4944 7de2 8099 0a6f 7074 696f ...{ID}....optio │ │ │ │ │ +00011dc0: 6e73 2020 2020 20e2 8098 5b49 445d e280 ns ...[ID].. │ │ │ │ │ +00011dd0: 9920 6f72 20e2 8098 5b49 4431 2c2e 2e2e . or ...[ID1,... │ │ │ │ │ +00011de0: 2c49 444e 5de2 8099 0a74 6167 2020 2020 ,IDN]....tag │ │ │ │ │ +00011df0: 2020 2020 20e2 8098 3c49 443e e280 990a ....... │ │ │ │ │ +00011e00: 0a4e 6f74 6520 7468 6174 2073 7175 6172 .Note that squar │ │ │ │ │ +00011e10: 6520 6272 6163 6b65 7473 20e2 8098 5b20 e brackets ...[ │ │ │ │ │ +00011e20: 5de2 8099 2061 7265 2075 7365 6420 626f ]... are used bo │ │ │ │ │ +00011e30: 7468 2066 6f72 2076 6563 746f 7220 616e th for vector an │ │ │ │ │ +00011e40: 6420 666f 7220 6f70 7469 6f6e 730a 7265 d for options.re │ │ │ │ │ +00011e50: 6665 7265 6e63 6573 2e20 2044 6574 6169 ferences. Detai │ │ │ │ │ +00011e60: 6c73 206f 6620 e280 9873 6b65 7463 68e2 ls of ...sketch. │ │ │ │ │ +00011e70: 8099 2073 796e 7461 7820 6d61 6b65 2069 .. syntax make i │ │ │ │ │ +00011e80: 7420 696d 706f 7373 6962 6c65 2066 6f72 t impossible for │ │ │ │ │ +00011e90: 2074 6865 7365 2074 776f 0a72 6566 6572 these two.refer │ │ │ │ │ +00011ea0: 656e 6365 2074 7970 6573 2074 6f20 6265 ence types to be │ │ │ │ │ +00011eb0: 2063 6f6e 6675 7365 642e 2020 5468 6520 confused. The │ │ │ │ │ +00011ec0: 7370 6563 6961 6c20 6d75 6c74 6970 6c65 special multiple │ │ │ │ │ +00011ed0: 2072 6566 6572 656e 6365 0ae2 8098 5b49 reference....[I │ │ │ │ │ +00011ee0: 4431 2c49 4432 2c2e 2e2e 2c49 444e 5de2 D1,ID2,...,IDN]. │ │ │ │ │ +00011ef0: 8099 2061 6374 7320 6173 2069 6620 7468 .. acts as if th │ │ │ │ │ +00011f00: 6520 7265 7370 6563 7469 7665 206c 6973 e respective lis │ │ │ │ │ +00011f10: 7473 206f 6620 6f70 7469 6f6e 7320 7765 ts of options we │ │ │ │ │ +00011f20: 7265 0a63 6f6e 6361 7465 6e61 7465 642e re.concatenated. │ │ │ │ │ +00011f30: 0a0a 1f0a 4669 6c65 3a20 736b 6574 6368 ....File: sketch │ │ │ │ │ +00011f40: 2e69 6e66 6f2c 2020 4e6f 6465 3a20 476c .info, Node: Gl │ │ │ │ │ +00011f50: 6f62 616c 2065 6e76 6972 6f6e 6d65 6e74 obal environment │ │ │ │ │ +00011f60: 2c20 2050 7265 763a 2044 6566 696e 6974 , Prev: Definit │ │ │ │ │ +00011f70: 696f 6e73 2c20 2055 703a 2049 6e70 7574 ions, Up: Input │ │ │ │ │ +00011f80: 206c 616e 6775 6167 650a 0a33 2e34 2047 language..3.4 G │ │ │ │ │ +00011f90: 6c6f 6261 6c20 656e 7669 726f 6e6d 656e lobal environmen │ │ │ │ │ +00011fa0: 740a 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d t.============== │ │ │ │ │ +00011fb0: 3d3d 3d3d 3d3d 3d3d 0a0a 416e 206f 7074 ========..An opt │ │ │ │ │ +00011fc0: 696f 6e61 6c20 676c 6f62 616c 2065 6e76 ional global env │ │ │ │ │ +00011fd0: 6972 6f6e 6d65 6e74 2062 6c6f 636b 2070 ironment block p │ │ │ │ │ +00011fe0: 726f 7669 6465 7320 6120 6665 7720 7761 rovides a few wa │ │ │ │ │ +00011ff0: 7973 2074 6f20 6166 6665 6374 2074 6865 ys to affect the │ │ │ │ │ +00012000: 0a65 6e74 6972 6520 7363 656e 652e 2020 .entire scene. │ │ │ │ │ +00012010: 5468 6520 626c 6f63 6b20 6d75 7374 2061 The block must a │ │ │ │ │ +00012020: 7070 6561 7220 6173 2074 6865 206c 6173 ppear as the las │ │ │ │ │ +00012030: 7420 7465 7874 2069 6e20 7468 6520 e280 t text in the .. │ │ │ │ │ +00012040: 9873 6b65 7463 68e2 8099 0a69 6e70 7574 .sketch....input │ │ │ │ │ +00012050: 2066 696c 652e 2020 4974 206d 6179 2069 file. It may i │ │ │ │ │ +00012060: 6e63 6c75 6465 2064 6566 696e 6974 696f nclude definitio │ │ │ │ │ +00012070: 6e73 2c20 6275 7420 6e6f 7465 2074 6861 ns, but note tha │ │ │ │ │ +00012080: 7420 7072 6576 696f 7573 0a64 6566 696e t previous.defin │ │ │ │ │ +00012090: 6974 696f 6e73 2061 7420 7468 6520 746f itions at the to │ │ │ │ │ +000120a0: 7020 6c65 7665 6c20 286e 6f74 206e 6573 p level (not nes │ │ │ │ │ +000120b0: 7465 6420 696e 7369 6465 2062 6c6f 636b ted inside block │ │ │ │ │ +000120c0: 7329 2061 7265 2061 6c73 6f0a 6176 6169 s) are also.avai │ │ │ │ │ +000120d0: 6c61 626c 652e 0a0a 2a53 796e 7461 783a lable...*Syntax: │ │ │ │ │ +000120e0: 2a0a 2020 2020 2067 6c6f 6261 6c20 7b20 *. global { │ │ │ │ │ +000120f0: 454e 5649 524f 4e4d 454e 545f 5345 5454 ENVIRONMENT_SETT │ │ │ │ │ +00012100: 494e 4753 207d 0a54 6865 2063 6f6e 7465 INGS }.The conte │ │ │ │ │ +00012110: 6e74 7320 6f66 2045 4e56 4952 4f4e 4d45 nts of ENVIRONME │ │ │ │ │ +00012120: 4e54 5f53 4554 5449 4e47 5320 6172 6520 NT_SETTINGS are │ │ │ │ │ +00012130: 6469 7363 7573 7365 6420 696e 2074 6865 discussed in the │ │ │ │ │ +00012140: 2073 6563 7469 6f6e 7320 7468 6174 0a66 sections that.f │ │ │ │ │ +00012150: 6f6c 6c6f 772e 0a0a 2a20 4d65 6e75 3a0a ollow...* Menu:. │ │ │ │ │ +00012160: 0a2a 2047 6c6f 6261 6c20 6f70 7469 6f6e .* Global option │ │ │ │ │ +00012170: 733a 3a20 2020 2020 2020 2020 2020 2020 s:: │ │ │ │ │ +00012180: 2041 7474 7269 6275 7465 7320 6f66 2074 Attributes of t │ │ │ │ │ +00012190: 6865 2065 6e74 6972 6520 6472 6177 696e he entire drawin │ │ │ │ │ +000121a0: 672e 0a2a 2043 616d 6572 613a 3a20 2020 g..* Camera:: │ │ │ │ │ +000121b0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +000121c0: 2020 2041 2066 696e 616c 2063 616d 6572 A final camer │ │ │ │ │ +000121d0: 6120 7472 616e 7366 6f72 6d61 7469 6f6e a transformation │ │ │ │ │ +000121e0: 206f 6620 7468 6520 7363 656e 652e 0a2a of the scene..* │ │ │ │ │ +000121f0: 2050 6963 7475 7265 2062 6f78 3a3a 2020 Picture box:: │ │ │ │ │ +00012200: 2020 2020 2020 2020 2020 2020 2020 2053 S │ │ │ │ │ +00012210: 6574 7469 6e67 2074 6865 2062 6f75 6e64 etting the bound │ │ │ │ │ +00012220: 696e 6720 626f 7820 616e 6420 3264 2063 ing box and 2d c │ │ │ │ │ +00012230: 6c69 7070 696e 672e 0a2a 2046 7261 6d65 lipping..* Frame │ │ │ │ │ +00012240: 3a3a 2020 2020 2020 2020 2020 2020 2020 :: │ │ │ │ │ +00012250: 2020 2020 2020 2020 2041 6464 696e 6720 Adding │ │ │ │ │ +00012260: 6120 626f 7820 6172 6f75 6e64 2074 6865 a box around the │ │ │ │ │ +00012270: 2064 7261 7769 6e67 2e0a 2a20 4c61 6e67 drawing..* Lang │ │ │ │ │ +00012280: 7561 6765 3a3a 2020 2020 2020 2020 2020 uage:: │ │ │ │ │ +00012290: 2020 2020 2020 2020 2020 5365 7474 696e Settin │ │ │ │ │ +000122a0: 6720 7468 6520 6f75 7470 7574 206c 616e g the output lan │ │ │ │ │ +000122b0: 6775 6167 652e 0a0a 1f0a 4669 6c65 3a20 guage.....File: │ │ │ │ │ +000122c0: 736b 6574 6368 2e69 6e66 6f2c 2020 4e6f sketch.info, No │ │ │ │ │ +000122d0: 6465 3a20 476c 6f62 616c 206f 7074 696f de: Global optio │ │ │ │ │ +000122e0: 6e73 2c20 204e 6578 743a 2043 616d 6572 ns, Next: Camer │ │ │ │ │ +000122f0: 612c 2020 5072 6576 3a20 476c 6f62 616c a, Prev: Global │ │ │ │ │ +00012300: 2065 6e76 6972 6f6e 6d65 6e74 2c20 2055 environment, U │ │ │ │ │ +00012310: 703a 2047 6c6f 6261 6c20 656e 7669 726f p: Global enviro │ │ │ │ │ +00012320: 6e6d 656e 740a 0a33 2e34 2e31 2047 6c6f nment..3.4.1 Glo │ │ │ │ │ +00012330: 6261 6c20 6f70 7469 6f6e 730a 2d2d 2d2d bal options.---- │ │ │ │ │ +00012340: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d ---------------- │ │ │ │ │ +00012350: 0a0a 2a53 796e 7461 783a 2a0a 2020 2020 ..*Syntax:*. │ │ │ │ │ +00012360: 2073 6574 205b 204f 5054 494f 4e53 205d set [ OPTIONS ] │ │ │ │ │ +00012370: 0a54 6865 2063 6f6e 7465 6e74 7320 6f66 .The contents of │ │ │ │ │ +00012380: 204f 5054 494f 4e53 2c20 6578 6365 7074 OPTIONS, except │ │ │ │ │ +00012390: 2066 6f72 20e2 8098 736b 6574 6368 e280 for ...sketch.. │ │ │ │ │ +000123a0: 9920 696e 7465 726e 616c 206f 7074 696f . internal optio │ │ │ │ │ +000123b0: 6e73 2c20 6172 650a 636f 7069 6564 2061 ns, are.copied a │ │ │ │ │ +000123c0: 732d 6973 2074 6f20 6120 5c70 7373 6574 s-is to a \psset │ │ │ │ │ +000123d0: 2074 6861 7420 6170 7065 6172 7320 6265 that appears be │ │ │ │ │ +000123e0: 666f 7265 2061 6e79 7468 696e 6720 656c fore anything el │ │ │ │ │ +000123f0: 7365 2069 6e20 7468 6520 6f75 7470 7574 se in the output │ │ │ │ │ +00012400: 0a66 696c 652e 2020 5468 6973 2069 7320 .file. This is │ │ │ │ │ +00012410: 6120 676f 6f64 2070 6c61 6365 2074 6f20 a good place to │ │ │ │ │ +00012420: 7365 7420 e280 9875 6e69 74e2 8099 2c20 set ...unit..., │ │ │ │ │ +00012430: 6120 6465 6661 756c 7420 e280 986c 696e a default ...lin │ │ │ │ │ +00012440: 6577 6964 7468 e280 992c 2065 7463 2e0a ewidth..., etc.. │ │ │ │ │ +00012450: 0a20 2020 496e 7465 726e 616c 206f 7074 . Internal opt │ │ │ │ │ +00012460: 696f 6e73 2077 6f72 6b20 6f6e 2061 6c6c ions work on all │ │ │ │ │ +00012470: 206f 626a 6563 7473 2077 6865 7265 2074 objects where t │ │ │ │ │ +00012480: 6865 7920 6d61 6b65 2073 656e 7365 2e20 hey make sense. │ │ │ │ │ +00012490: 2054 6869 730a 696e 636c 7564 6573 20e2 This.includes . │ │ │ │ │ +000124a0: 8098 6375 6c6c e280 9920 616e 6420 e280 ..cull... and .. │ │ │ │ │ +000124b0: 9873 706c 6974 e280 9920 2862 7574 206e .split... (but n │ │ │ │ │ +000124c0: 6f74 20e2 8098 6c61 79e2 8099 292e 2020 ot ...lay...). │ │ │ │ │ +000124d0: 2a4e 6f74 6520 496e 7465 726e 616c 206f *Note Internal o │ │ │ │ │ +000124e0: 7074 696f 6e73 3a3a 2e0a 0a1f 0a46 696c ptions::.....Fil │ │ │ │ │ +000124f0: 653a 2073 6b65 7463 682e 696e 666f 2c20 e: sketch.info, │ │ │ │ │ +00012500: 204e 6f64 653a 2043 616d 6572 612c 2020 Node: Camera, │ │ │ │ │ +00012510: 4e65 7874 3a20 5069 6374 7572 6520 626f Next: Picture bo │ │ │ │ │ +00012520: 782c 2020 5072 6576 3a20 476c 6f62 616c x, Prev: Global │ │ │ │ │ +00012530: 206f 7074 696f 6e73 2c20 2055 703a 2047 options, Up: G │ │ │ │ │ +00012540: 6c6f 6261 6c20 656e 7669 726f 6e6d 656e lobal environmen │ │ │ │ │ +00012550: 740a 0a33 2e34 2e32 2043 616d 6572 610a t..3.4.2 Camera. │ │ │ │ │ +00012560: 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 0a0a 2a53 ------------..*S │ │ │ │ │ +00012570: 796e 7461 783a 2a0a 2020 2020 2063 616d yntax:*. cam │ │ │ │ │ +00012580: 6572 6120 5452 414e 5346 4f52 4d5f 4558 era TRANSFORM_EX │ │ │ │ │ +00012590: 5052 4553 5349 4f4e 0a20 2020 5468 6520 PRESSION. The │ │ │ │ │ +000125a0: 5452 414e 5346 4f52 4d5f 4558 5052 4553 TRANSFORM_EXPRES │ │ │ │ │ +000125b0: 5349 4f4e 2069 7320 6170 706c 6965 6420 SION is applied │ │ │ │ │ +000125c0: 6166 7465 7220 616c 6c20 6f74 6865 7220 after all other │ │ │ │ │ +000125d0: 7472 616e 7366 6f72 6d61 7469 6f6e 730a transformations. │ │ │ │ │ +000125e0: 6f66 2074 6865 2073 6365 6e65 2e20 2054 of the scene. T │ │ │ │ │ +000125f0: 6869 7320 6973 2063 7572 7265 6e74 6c79 his is currently │ │ │ │ │ +00012600: 206f 6e6c 7920 7573 6566 756c 2066 6f72 only useful for │ │ │ │ │ +00012610: 2074 7261 6e73 666f 726d 696e 6720 7468 transforming th │ │ │ │ │ +00012620: 650a 626f 756e 6469 6e67 2062 6f78 2e20 e.bounding box. │ │ │ │ │ +00012630: 202a 4e6f 7465 2050 6963 7475 7265 2062 *Note Picture b │ │ │ │ │ +00012640: 6f78 3a3a 2e20 2049 7420 7769 6c6c 2070 ox::. It will p │ │ │ │ │ +00012650: 6c61 7920 6120 726f 6c65 2069 6e20 616e lay a role in an │ │ │ │ │ +00012660: 7920 6675 7475 7265 0a69 6d70 6c65 6d65 y future.impleme │ │ │ │ │ +00012670: 6e74 6174 696f 6e20 6f66 2063 6c69 7070 ntation of clipp │ │ │ │ │ +00012680: 696e 672e 0a0a 1f0a 4669 6c65 3a20 736b ing.....File: sk │ │ │ │ │ +00012690: 6574 6368 2e69 6e66 6f2c 2020 4e6f 6465 etch.info, Node │ │ │ │ │ +000126a0: 3a20 5069 6374 7572 6520 626f 782c 2020 : Picture box, │ │ │ │ │ +000126b0: 4e65 7874 3a20 4672 616d 652c 2020 5072 Next: Frame, Pr │ │ │ │ │ +000126c0: 6576 3a20 4361 6d65 7261 2c20 2055 703a ev: Camera, Up: │ │ │ │ │ +000126d0: 2047 6c6f 6261 6c20 656e 7669 726f 6e6d Global environm │ │ │ │ │ +000126e0: 656e 740a 0a33 2e34 2e33 2050 6963 7475 ent..3.4.3 Pictu │ │ │ │ │ +000126f0: 7265 2062 6f78 0a2d 2d2d 2d2d 2d2d 2d2d re box.--------- │ │ │ │ │ +00012700: 2d2d 2d2d 2d2d 2d2d 0a0a 2a53 796e 7461 --------..*Synta │ │ │ │ │ +00012710: 783a 2a0a 2020 2020 2070 6963 7475 7265 x:*. picture │ │ │ │ │ +00012720: 626f 785b 4241 5345 4c49 4e45 5d0a 2020 box[BASELINE]. │ │ │ │ │ +00012730: 2020 2070 6963 7475 7265 626f 785b 4241 picturebox[BA │ │ │ │ │ +00012740: 5345 4c49 4e45 5d20 2850 3129 2850 3229 SELINE] (P1)(P2) │ │ │ │ │ +00012750: 0a54 6865 2066 6972 7374 2066 6f72 6d20 .The first form │ │ │ │ │ +00012760: 6f66 20e2 8098 7069 6374 7572 6562 6f78 of ...picturebox │ │ │ │ │ +00012770: e280 9920 6361 7573 6573 2061 2073 6361 ... causes a sca │ │ │ │ │ +00012780: 6c61 7220 4241 5345 4c49 4e45 2066 7261 lar BASELINE fra │ │ │ │ │ +00012790: 6374 696f 6e20 746f 2062 650a 656d 6974 ction to be.emit │ │ │ │ │ +000127a0: 7465 6420 696e 2074 6865 20e2 8098 7073 ted in the ...ps │ │ │ │ │ +000127b0: 7069 6374 7572 65e2 8099 2065 6e76 6972 picture... envir │ │ │ │ │ +000127c0: 6f6e 6d65 6e74 206f 6620 7468 6520 6f75 onment of the ou │ │ │ │ │ +000127d0: 7470 7574 2e20 2053 6565 20e2 8098 5053 tput. See ...PS │ │ │ │ │ +000127e0: 5472 6963 6b73 e280 990a 646f 6375 6d65 Tricks....docume │ │ │ │ │ +000127f0: 6e74 6174 696f 6e20 666f 7220 e280 9870 ntation for ...p │ │ │ │ │ +00012800: 7370 6963 7475 7265 e280 992e 0a0a 2020 spicture...... │ │ │ │ │ +00012810: 2049 6e20 7468 6520 7365 636f 6e64 2066 In the second f │ │ │ │ │ +00012820: 6f72 6d2c 2074 6865 2042 4153 454c 494e orm, the BASELIN │ │ │ │ │ +00012830: 4520 6672 6163 7469 6f6e 2069 7320 6f70 E fraction is op │ │ │ │ │ +00012840: 7469 6f6e 616c 2c20 616e 6420 7468 6520 tional, and the │ │ │ │ │ +00012850: 7477 6f0a 706f 696e 7473 2074 6861 7420 two.points that │ │ │ │ │ +00012860: 666f 6c6c 6f77 2064 6566 696e 6520 7468 follow define th │ │ │ │ │ +00012870: 6520 6469 6167 6f6e 616c 206f 6620 6120 e diagonal of a │ │ │ │ │ +00012880: 7468 7265 652d 6469 6d65 6e73 696f 6e61 three-dimensiona │ │ │ │ │ +00012890: 6c20 626f 756e 6469 6e67 0a62 6f78 2066 l bounding.box f │ │ │ │ │ +000128a0: 6f72 2074 6865 2063 6f6d 706c 6574 6564 or the completed │ │ │ │ │ +000128b0: 2073 6365 6e65 2e20 2054 6865 2070 6172 scene. The par │ │ │ │ │ +000128c0: 616c 6c65 6c20 7072 6f6a 6563 7469 6f6e allel projection │ │ │ │ │ +000128d0: 206f 6620 7468 6520 626f 756e 6469 6e67 of the bounding │ │ │ │ │ +000128e0: 0a62 6f78 2064 6574 6572 6d69 6e65 7320 .box determines │ │ │ │ │ +000128f0: 7468 6520 636f 726e 6572 7320 6f66 2074 the corners of t │ │ │ │ │ +00012900: 6865 2064 7261 7769 6e67 2773 20e2 8098 he drawing's ... │ │ │ │ │ +00012910: 7073 7069 6374 7572 652a e280 9920 656e pspicture*... en │ │ │ │ │ +00012920: 7669 726f 6e6d 656e 742c 0a77 6869 6368 vironment,.which │ │ │ │ │ +00012930: 2069 7320 7573 6564 2069 6e20 706c 6163 is used in plac │ │ │ │ │ +00012940: 6520 6f66 20e2 8098 7073 7069 6374 7572 e of ...pspictur │ │ │ │ │ +00012950: 65e2 8099 2e20 2054 6869 7320 6361 7573 e.... This caus │ │ │ │ │ +00012960: 6573 2050 6f73 7453 6372 6970 7420 746f es PostScript to │ │ │ │ │ +00012970: 2063 6c69 700a 7468 6520 6669 6e61 6c20 clip.the final │ │ │ │ │ +00012980: 6472 6177 696e 6720 746f 2074 6865 2062 drawing to the b │ │ │ │ │ +00012990: 6f75 6e64 696e 6720 626f 7820 696e 2032 ounding box in 2 │ │ │ │ │ +000129a0: 642e 2020 4966 2074 6865 7265 2069 7320 d. If there is │ │ │ │ │ +000129b0: 6120 e280 9863 616d 6572 61e2 8099 0a73 a ...camera....s │ │ │ │ │ +000129c0: 7065 6369 6669 6564 2c20 7468 6520 6361 pecified, the ca │ │ │ │ │ +000129d0: 6d65 7261 2074 7261 6e66 6f72 6d61 7469 mera tranformati │ │ │ │ │ +000129e0: 6f6e 2069 7320 6170 706c 6965 6420 746f on is applied to │ │ │ │ │ +000129f0: 2074 6865 2062 6f75 6e64 696e 6720 626f the bounding bo │ │ │ │ │ +00012a00: 782c 2061 6e64 0a74 6865 20e2 8098 7073 x, and.the ...ps │ │ │ │ │ +00012a10: 7069 6374 7572 65e2 8099 2069 7320 7365 picture... is se │ │ │ │ │ +00012a20: 7420 6a75 7374 206c 6172 6765 2065 6e6f t just large eno │ │ │ │ │ +00012a30: 7567 6820 746f 2069 6e63 6c75 6465 2074 ugh to include t │ │ │ │ │ +00012a40: 6865 2074 7261 6e73 666f 726d 6564 2062 he transformed b │ │ │ │ │ +00012a50: 6f78 2e0a 0a20 2020 5768 656e 206e 6f20 ox... When no │ │ │ │ │ +00012a60: 626f 756e 6469 6e67 2062 6f78 2069 7320 bounding box is │ │ │ │ │ +00012a70: 6769 7665 6e2c 20e2 8098 736b 6574 6368 given, ...sketch │ │ │ │ │ +00012a80: e280 9920 636f 6d70 7574 6573 206f 6e65 ... computes one │ │ │ │ │ +00012a90: 2061 7574 6f6d 6174 6963 616c 6c79 2e0a automatically.. │ │ │ │ │ +00012aa0: 0a1f 0a46 696c 653a 2073 6b65 7463 682e ...File: sketch. │ │ │ │ │ +00012ab0: 696e 666f 2c20 204e 6f64 653a 2046 7261 info, Node: Fra │ │ │ │ │ +00012ac0: 6d65 2c20 204e 6578 743a 204c 616e 6775 me, Next: Langu │ │ │ │ │ +00012ad0: 6167 652c 2020 5072 6576 3a20 5069 6374 age, Prev: Pict │ │ │ │ │ +00012ae0: 7572 6520 626f 782c 2020 5570 3a20 476c ure box, Up: Gl │ │ │ │ │ +00012af0: 6f62 616c 2065 6e76 6972 6f6e 6d65 6e74 obal environment │ │ │ │ │ +00012b00: 0a0a 332e 342e 3420 4672 616d 650a 2d2d ..3.4.4 Frame.-- │ │ │ │ │ +00012b10: 2d2d 2d2d 2d2d 2d2d 2d0a 0a2a 5379 6e74 ---------..*Synt │ │ │ │ │ +00012b20: 6178 3a2a 0a20 2020 2020 6672 616d 6520 ax:*. frame │ │ │ │ │ +00012b30: 5b4f 5054 494f 4e53 5d0a 4361 7573 6573 [OPTIONS].Causes │ │ │ │ │ +00012b40: 2061 205c 7073 6672 616d 6562 6f78 2074 a \psframebox t │ │ │ │ │ +00012b50: 6f20 7375 7272 6f75 6e64 2074 6865 20e2 o surround the . │ │ │ │ │ +00012b60: 8098 7073 7069 6374 7572 65e2 8099 2065 ..pspicture... e │ │ │ │ │ +00012b70: 6e76 6972 6f6e 6d65 6e74 2069 6e20 7468 nvironment in th │ │ │ │ │ +00012b80: 650a 6f75 7470 7574 2e20 2049 6620 4f50 e.output. If OP │ │ │ │ │ +00012b90: 5449 4f4e 5320 6172 6520 7072 6573 656e TIONS are presen │ │ │ │ │ +00012ba0: 742c 2074 6865 7920 6172 6520 636f 7069 t, they are copi │ │ │ │ │ +00012bb0: 6564 2061 732d 6973 2e20 204e 6f72 6d61 ed as-is. Norma │ │ │ │ │ +00012bc0: 6c6c 7920 6f6e 650a 776f 756c 6420 7761 lly one.would wa │ │ │ │ │ +00012bd0: 6e74 2074 6f20 7365 7420 e280 986c 696e nt to set ...lin │ │ │ │ │ +00012be0: 6577 6964 7468 e280 992c 20e2 8098 6c69 ewidth..., ...li │ │ │ │ │ +00012bf0: 6e65 7374 796c 65e2 8099 2c20 e280 986c nestyle..., ...l │ │ │ │ │ +00012c00: 696e 6563 6f6c 6f72 e280 992c 2065 7463 inecolor..., etc │ │ │ │ │ +00012c10: 2e20 2049 660a 6f6d 6974 7465 642c 2074 . If.omitted, t │ │ │ │ │ +00012c20: 6865 6e20 e280 9866 7261 6d65 7365 703d hen ...framesep= │ │ │ │ │ +00012c30: 3070 74e2 8099 2069 7320 6164 6465 6420 0pt... is added │ │ │ │ │ +00012c40: 736f 2074 6861 7420 7468 6520 6672 616d so that the fram │ │ │ │ │ +00012c50: 6520 7469 6768 746c 7920 6875 6773 2074 e tightly hugs t │ │ │ │ │ +00012c60: 6865 0ae2 8098 7073 7069 6374 7572 65e2 he....pspicture. │ │ │ │ │ +00012c70: 8099 2e0a 0a1f 0a46 696c 653a 2073 6b65 .......File: ske │ │ │ │ │ +00012c80: 7463 682e 696e 666f 2c20 204e 6f64 653a tch.info, Node: │ │ │ │ │ +00012c90: 204c 616e 6775 6167 652c 2020 5072 6576 Language, Prev │ │ │ │ │ +00012ca0: 3a20 4672 616d 652c 2020 5570 3a20 476c : Frame, Up: Gl │ │ │ │ │ +00012cb0: 6f62 616c 2065 6e76 6972 6f6e 6d65 6e74 obal environment │ │ │ │ │ +00012cc0: 0a0a 332e 342e 3520 4c61 6e67 7561 6765 ..3.4.5 Language │ │ │ │ │ +00012cd0: 0a2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d2d 2d0a .--------------. │ │ │ │ │ +00012ce0: 0a20 2020 2020 6c61 6e67 7561 6765 2074 . language t │ │ │ │ │ +00012cf0: 696b 7a0a 2020 2020 206c 616e 6775 6167 ikz. languag │ │ │ │ │ +00012d00: 6520 7469 6b7a 2c20 636f 6e74 6578 740a e tikz, context. │ │ │ │ │ +00012d10: 2020 2020 206c 616e 6775 6167 6520 7073 language ps │ │ │ │ │ +00012d20: 7472 6963 6b73 0a20 2020 2020 6c61 6e67 tricks. lang │ │ │ │ │ +00012d30: 7561 6765 2070 7374 7269 636b 732c 206c uage pstricks, l │ │ │ │ │ +00012d40: 6174 6578 0a53 6574 7320 7468 6520 6f75 atex.Sets the ou │ │ │ │ │ +00012d50: 7470 7574 206c 616e 6775 6167 6520 6765 tput language ge │ │ │ │ │ +00012d60: 6e65 7261 7465 6420 6279 20e2 8098 736b nerated by ...sk │ │ │ │ │ +00012d70: 6574 6368 e280 992e 2020 5468 6520 7365 etch.... The se │ │ │ │ │ +00012d80: 7420 6f66 206f 7074 696f 6e73 0a75 6e64 t of options.und │ │ │ │ │ +00012d90: 6572 7374 6f6f 6420 6279 2073 6b65 7463 erstood by sketc │ │ │ │ │ +00012da0: 6820 616c 736f 2063 6861 6e67 6573 2e20 h also changes. │ │ │ │ │ +00012db0: 2046 6f72 2065 7861 6d70 6c65 2c20 7468 For example, th │ │ │ │ │ +00012dc0: 6520 e280 9850 5354 7269 636b 73e2 8099 e ...PSTricks... │ │ │ │ │ +00012dd0: 206f 7074 696f 6e0a e280 986c 696e 6577 option....linew │ │ │ │ │ +00012de0: 6964 7468 e280 9920 7769 6c6c 206e 6f74 idth... will not │ │ │ │ │ +00012df0: 2062 6520 7072 6f70 6572 6c79 2068 616e be properly han │ │ │ │ │ +00012e00: 646c 6564 2069 6620 e280 986c 616e 6775 dled if ...langu │ │ │ │ │ +00012e10: 6167 65e2 8099 2069 7320 7365 7420 746f age... is set to │ │ │ │ │ +00012e20: 20e2 8098 7469 6b7a e280 992e 0a53 696d ...tikz.....Sim │ │ │ │ │ +00012e30: 696c 6172 6c79 2c20 7468 6520 e280 9854 ilarly, the ...T │ │ │ │ │ +00012e40: 696b 5ae2 8099 206f 7074 696f 6e20 e280 ikZ... option .. │ │ │ │ │ +00012e50: 986c 696e 6520 7374 796c 65e2 8099 2028 .line style... ( │ │ │ │ │ +00012e60: 6e6f 7465 2074 6865 2073 7061 6365 2920 note the space) │ │ │ │ │ +00012e70: 7769 6c6c 206e 6f74 2062 650a 7072 6f70 will not be.prop │ │ │ │ │ +00012e80: 6572 6c79 2068 616e 646c 6564 2069 6620 erly handled if │ │ │ │ │ +00012e90: e280 986c 616e 6775 6167 65e2 8099 2069 ...language... i │ │ │ │ │ +00012ea0: 7320 7365 7420 746f 20e2 8098 7073 7472 s set to ...pstr │ │ │ │ │ +00012eb0: 6963 6b73 e280 992e 2020 4966 206e 6f20 icks.... If no │ │ │ │ │ +00012ec0: 6c61 6e67 7561 6765 2069 730a 7370 6563 language is.spec │ │ │ │ │ +00012ed0: 6966 6965 642c 2074 6865 2064 6566 6175 ified, the defau │ │ │ │ │ +00012ee0: 6c74 20e2 8098 7073 7472 6963 6b73 e280 lt ...pstricks.. │ │ │ │ │ +00012ef0: 9920 6973 2075 7365 642e 0a0a 2020 2041 . is used... A │ │ │ │ │ +00012f00: 6e20 6f70 7469 6f6e 616c 2063 6f6d 6d61 n optional comma │ │ │ │ │ +00012f10: 2066 6f6c 6c6f 7765 6420 6279 20e2 8098 followed by ... │ │ │ │ │ +00012f20: 6c61 7465 78e2 8099 206f 7220 e280 9863 latex... or ...c │ │ │ │ │ +00012f30: 6f6e 7465 7874 e280 9920 7370 6563 6966 ontext... specif │ │ │ │ │ +00012f40: 6965 7320 7468 650a 6d61 6372 6f20 7061 ies the.macro pa │ │ │ │ │ +00012f50: 636b 6167 6520 7468 6174 2074 6865 206f ckage that the o │ │ │ │ │ +00012f60: 7574 7075 7420 7368 6f75 6c64 2061 7373 utput should ass │ │ │ │ │ +00012f70: 756d 652e 2020 5468 6973 2061 6666 6563 ume. This affec │ │ │ │ │ +00012f80: 7473 2074 6865 20e2 8098 7069 6374 7572 ts the ...pictur │ │ │ │ │ +00012f90: 65e2 8099 0a65 6e76 6972 6f6e 6d65 6e74 e....environment │ │ │ │ │ +00012fa0: 2063 6f6d 6d61 6e64 7320 656d 6974 7465 commands emitte │ │ │ │ │ +00012fb0: 6420 616e 6420 7468 6520 646f 6375 6d65 d and the docume │ │ │ │ │ +00012fc0: 6e74 2074 656d 706c 6174 6520 7573 6564 nt template used │ │ │ │ │ +00012fd0: 2077 6974 6820 7468 650a e280 982d 54e2 with the....-T. │ │ │ │ │ +00012fe0: 8099 206f 7074 696f 6e2e 2020 2a4e 6f74 .. option. *Not │ │ │ │ │ +00012ff0: 6520 436f 6d6d 616e 6420 6c69 6e65 3a3a e Command line:: │ │ │ │ │ +00013000: 2e20 204e 6f74 6520 7468 6174 2061 7420 . Note that at │ │ │ │ │ +00013010: 7468 6520 7469 6d65 2074 6869 7320 6d61 the time this ma │ │ │ │ │ +00013020: 6e75 616c 0a77 6173 2067 656e 6572 6174 nual.was generat │ │ │ │ │ +00013030: 6564 2c20 e280 9850 5354 7269 636b 73e2 ed, ...PSTricks. │ │ │ │ │ +00013040: 8099 2077 6173 206e 6f74 2073 7570 706f .. was not suppo │ │ │ │ │ +00013050: 7274 6564 2062 7920 4c61 5465 5820 6f72 rted by LaTeX or │ │ │ │ │ +00013060: 2062 7920 e280 9843 6f6e 5465 5874 e280 by ...ConTeXt.. │ │ │ │ │ +00013070: 992e 0a0a 1f0a 4669 6c65 3a20 736b 6574 ......File: sket │ │ │ │ │ +00013080: 6368 2e69 6e66 6f2c 2020 4e6f 6465 3a20 ch.info, Node: │ │ │ │ │ +00013090: 4275 696c 6469 6e67 2061 2064 7261 7769 Building a drawi │ │ │ │ │ +000130a0: 6e67 2c20 204e 6578 743a 2043 6f6d 6d61 ng, Next: Comma │ │ │ │ │ +000130b0: 6e64 206c 696e 652c 2020 5072 6576 3a20 nd line, Prev: │ │ │ │ │ +000130c0: 496e 7075 7420 6c61 6e67 7561 6765 2c20 Input language, │ │ │ │ │ +000130d0: 2055 703a 2054 6f70 0a0a 3420 4275 696c Up: Top..4 Buil │ │ │ │ │ +000130e0: 6469 6e67 2061 2064 7261 7769 6e67 0a2a ding a drawing.* │ │ │ │ │ +000130f0: 2a2a 2a2a 2a2a 2a2a 2a2a 2a2a 2a2a 2a2a **************** │ │ │ │ │ +00013100: 2a2a 2a0a 0a53 7563 6365 7373 6675 6c20 ***..Successful │ │ │ │ │ +00013110: 6472 6177 696e 6773 2077 6974 6820 e280 drawings with .. │ │ │ │ │ +00013120: 9873 6b65 7463 68e2 8099 2061 6e64 2077 .sketch... and w │ │ │ │ │ +00013130: 6974 6820 616e 7920 7363 656e 6520 6465 ith any scene de │ │ │ │ │ +00013140: 7363 7269 7074 696f 6e0a 6c61 6e67 7561 scription.langua │ │ │ │ │ +00013150: 6765 2072 6571 7569 7265 2074 6861 7420 ge require that │ │ │ │ │ +00013160: 7468 6520 7573 6572 2064 6576 656c 6f70 the user develop │ │ │ │ │ +00013170: 2061 6e20 6163 6375 7261 7465 206d 656e an accurate men │ │ │ │ │ +00013180: 7461 6c20 7069 6374 7572 6520 6f66 2068 tal picture of h │ │ │ │ │ +00013190: 6572 0a63 6f64 6520 616e 6420 6974 7320 er.code and its │ │ │ │ │ +000131a0: 6d65 616e 696e 672e 2020 5468 6973 2069 meaning. This i │ │ │ │ │ +000131b0: 6d61 6765 2069 7320 6265 7374 2062 7569 mage is best bui │ │ │ │ │ +000131c0: 6c74 2069 6e20 736d 616c 6c20 7069 6563 lt in small piec │ │ │ │ │ +000131d0: 6573 2e0a 5468 6572 6566 6f72 652c 20e2 es..Therefore, . │ │ │ │ │ +000131e0: 8098 736b 6574 6368 e280 9920 696e 7075 ..sketch... inpu │ │ │ │ │ +000131f0: 7473 2061 7265 2062 6573 7420 6372 6561 ts are best crea │ │ │ │ │ +00013200: 7465 6420 696e 2073 6d61 6c6c 2069 6e63 ted in small inc │ │ │ │ │ +00013210: 7265 6d65 6e74 7320 7769 7468 0a66 7265 rements with.fre │ │ │ │ │ +00013220: 7175 656e 7420 7061 7573 6573 2074 6f20 quent pauses to │ │ │ │ │ +00013230: 636f 6d70 696c 6520 616e 6420 7669 6577 compile and view │ │ │ │ │ +00013240: 2074 6865 2072 6573 756c 7473 2e20 2043 the results. C │ │ │ │ │ +00013250: 6172 6566 756c 2063 6f6d 6d65 6e74 7320 areful comments │ │ │ │ │ +00013260: 696e 0a74 6865 2069 6e70 7574 206f 6674 in.the input oft │ │ │ │ │ +00013270: 656e 2068 656c 7020 6173 2061 2073 6365 en help as a sce │ │ │ │ │ +00013280: 6e65 2067 726f 7773 2069 6e20 636f 6d70 ne grows in comp │ │ │ │ │ +00013290: 6c65 7869 7479 2e0a 0a2a 204d 656e 753a lexity...* Menu: │ │ │ │ │ +000132a0: 0a0a 2a20 4f76 6572 7669 6577 3a3a 2020 ..* Overview:: │ │ │ │ │ +000132b0: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +000132c0: 2020 4275 696c 6469 6e67 2061 2073 7562 Building a sub │ │ │ │ │ +000132d0: 7374 616e 7469 616c 2064 7261 7769 6e67 stantial drawing │ │ │ │ │ +000132e0: 2e0a 2a20 4120 7465 6368 6e69 6361 6c20 ..* A technical │ │ │ │ │ +000132f0: 6472 6177 696e 673a 3a20 2020 2020 2020 drawing:: │ │ │ │ │ +00013300: 2020 416e 2065 7861 6d70 6c65 2077 6974 An example wit │ │ │ │ │ +00013310: 6820 6669 6e65 2070 6c61 6365 6d65 6e74 h fine placement │ │ │ │ │ +00013320: 2e0a 2a20 4120 6869 6572 6172 6368 6963 ..* A hierarchic │ │ │ │ │ +00013330: 616c 206d 6f64 656c 3a3a 2020 2020 2020 al model:: │ │ │ │ │ +00013340: 2020 416e 2065 7861 6d70 6c65 2077 6974 An example wit │ │ │ │ │ +00013350: 6820 7377 6565 7073 2061 6e64 2070 7574 h sweeps and put │ │ │ │ │ +00013360: 732e 0a2a 2043 6176 6561 7473 3a3a 2020 s..* Caveats:: │ │ │ │ │ +00013370: 2020 2020 2020 2020 2020 2020 2020 2020 │ │ │ │ │ +00013380: 2020 2057 6865 7265 2074 726f 7562 6c65 Where trouble │ │ │ │ │ +00013390: 2063 616e 206f 6363 7572 2e0a 0a1f 0a46 can occur.....F │ │ │ │ │ +000133a0: 696c 653a 2073 6b65 7463 682e 696e 666f ile: sketch.info │ │ │ │ │ +000133b0: 2c20 204e 6f64 653a 204f 7665 7276 6965 , Node: Overvie │ │ │ │ │ +000133c0: 772c 2020 4e65 7874 3a20 4120 7465 6368 w, Next: A tech │ │ │ │ │ +000133d0: 6e69 6361 6c20 6472 6177 696e 672c 2020 nical drawing, │ │ │ │ │ +000133e0: 5072 6576 3a20 4275 696c 6469 6e67 2061 Prev: Building a │ │ │ │ │ +000133f0: 2064 7261 7769 6e67 2c20 2055 703a 2042 drawing, Up: B │ │ │ │ │ +00013400: 7569 6c64 696e 6720 6120 6472 6177 696e uilding a drawin │ │ │ │ │ +00013410: 670a 0a34 2e31 204f 7665 7276 6965 770a g..4.1 Overview. │ │ │ │ │ +00013420: 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d 0a0a 4173 ============..As │ │ │ │ │ +00013430: 2061 6e20 6f76 6572 7669 6577 2c20 6c65 an overview, le │ │ │ │ │ +00013440: 7427 7320 6465 7665 6c6f 7020 6120 6469 t's develop a di │ │ │ │ │ +00013450: 6167 7261 6d20 7468 6174 2073 686f 7773 agram that shows │ │ │ │ │ +00013460: 2068 6f77 2061 2070 6572 7370 6563 7469 how a perspecti │ │ │ │ │ +00013470: 7665 0a70 726f 6a65 6374 696f 6e20 7472 ve.projection tr │ │ │ │ │ +00013480: 616e 7366 6f72 6d20 776f 726b 732e 2020 ansform works. │ │ │ │ │ +00013490: 5765 276c 6c20 7374 6172 7420 7769 7468 We'll start with │ │ │ │ │ +000134a0: 2074 6865 2074 7261 6469 7469 6f6e 616c the traditional │ │ │ │ │ +000134b0: 2072 6566 6572 656e 6365 0a6f 626a 6563 reference.objec │ │ │ │ │ +000134c0: 7420 7573 6564 2069 6e20 636f 6d70 7574 t used in comput │ │ │ │ │ +000134d0: 6572 2067 7261 7068 6963 7320 7465 7874 er graphics text │ │ │ │ │ +000134e0: 626f 6f6b 732c 2061 2068 6f75 7365 2d73 books, a house-s │ │ │ │ │ +000134f0: 6861 7065 6420 7072 6973 6d2e 2020 4265 haped prism. Be │ │ │ │ │ +00013500: 6769 6e0a 6279 2064 6566 696e 696e 6720 gin.by defining │ │ │ │ │ +00013510: 7468 6520 706f 696e 7473 206f 6620 7468 the points of th │ │ │ │ │ +00013520: 6520 686f 7573 652e 2020 5261 7468 6572 e house. Rather │ │ │ │ │ +00013530: 2074 6861 6e20 6465 6669 6e69 6e67 2074 than defining t │ │ │ │ │ +00013540: 6865 2066 6163 6573 206f 660a 7468 6520 he faces of.the │ │ │ │ │ +00013550: 686f 7573 6520 6173 2070 6f6c 7967 6f6e house as polygon │ │ │ │ │ +00013560: 7320 616e 6420 7472 616e 7366 6f72 6d69 s and transformi │ │ │ │ │ +00013570: 6e67 2074 686f 7365 2c20 7765 2061 7265 ng those, we are │ │ │ │ │ +00013580: 2067 6f69 6e67 2074 6f20 7472 616e 7366 going to transf │ │ │ │ │ +00013590: 6f72 6d0a 7468 6520 706f 696e 7473 2074 orm.the points t │ │ │ │ │ +000135a0: 6865 6d73 656c 7665 7320 7769 7468 20e2 hemselves with . │ │ │ │ │ +000135b0: 8098 736b 6574 6368 e280 9920 6172 6974 ..sketch... arit │ │ │ │ │ +000135c0: 686d 6574 6963 2073 6f20 7468 6174 2077 hmetic so that w │ │ │ │ │ +000135d0: 6520 6861 7665 206e 616d 6573 2066 6f72 e have names for │ │ │ │ │ +000135e0: 0a74 6865 2074 7261 6e73 666f 726d 6564 .the transformed │ │ │ │ │ +000135f0: 2070 6f69 6e74 7320 6c61 7465 722e 0a20 points later.. │ │ │ │ │ +00013600: 2025 2072 6967 6874 2073 6964 6520 286f % right side (o │ │ │ │ │ +00013610: 7574 7369 6465 2074 6f20 7269 6768 7429 utside to right) │ │ │ │ │ +00013620: 0a20 2064 6566 2052 3120 2831 2c31 2c31 . def R1 (1,1,1 │ │ │ │ │ +00013630: 2920 6465 6620 5232 2028 312c 2d31 2c31 ) def R2 (1,-1,1 │ │ │ │ │ +00013640: 2920 6465 6620 5233 2028 312c 2d31 2c2d ) def R3 (1,-1,- │ │ │ │ │ +00013650: 3129 2064 6566 2052 3420 2831 2c31 2c2d 1) def R4 (1,1,- │ │ │ │ │ +00013660: 3129 0a20 2064 6566 2052 3520 2831 2c31 1). def R5 (1,1 │ │ │ │ │ +00013670: 2e35 2c30 290a 0a20 2025 206c 6566 7420 .5,0).. % left │ │ │ │ │ +00013680: 7369 6465 2028 6f75 7473 6964 6520 746f side (outside to │ │ │ │ │ +00013690: 2072 6967 6874 2d2d 6261 636b 7761 7264 right--backward │ │ │ │ │ +000136a0: 290a 2020 6465 6620 5720 205b 322c 302c ). def W [2,0, │ │ │ │ │ +000136b0: 305d 0a20 2064 6566 204c 3120 2852 3129 0]. def L1 (R1) │ │ │ │ │ +000136c0: 2d5b 575d 2064 6566 204c 3220 2852 3229 -[W] def L2 (R2) │ │ │ │ │ +000136d0: 2d5b 575d 2064 6566 204c 3320 2852 3329 -[W] def L3 (R3) │ │ │ │ │ +000136e0: 2d5b 575d 2064 6566 204c 3420 2852 3429 -[W] def L4 (R4) │ │ │ │ │ +000136f0: 2d5b 575d 0a20 2064 6566 204c 3520 2852 -[W]. def L5 (R │ │ │ │ │ +00013700: 3529 2d5b 575d 0a54 6f20 6164 6420 6120 5)-[W].To add a │ │ │ │ │ +00013710: 646f 6f72 2074 6f20 7468 6520 686f 7573 door to the hous │ │ │ │ │ +00013720: 652c 2077 6520 7573 6520 6120 706f 6c79 e, we use a poly │ │ │ │ │ +00013730: 676f 6e20 736c 6967 6874 6c79 2069 6e20 gon slightly in │ │ │ │ │ +00013740: 6672 6f6e 7420 6f66 2074 6865 0a66 6f72 front of the.for │ │ │ │ │ +00013750: 656d 6f73 7420 6661 6365 206f 6620 7468 emost face of th │ │ │ │ │ +00013760: 6520 686f 7573 652e 0a20 2025 2064 6f6f e house.. % doo │ │ │ │ │ +00013770: 720a 2020 6465 6620 6520 2e30 310a 2020 r. def e .01. │ │ │ │ │ +00013780: 6465 6620 4431 2028 302c 2d31 2c31 2b65 def D1 (0,-1,1+e │ │ │ │ │ +00013790: 2920 6465 6620 4432 2028 2e35 2c2d 312c ) def D2 (.5,-1, │ │ │ │ │ +000137a0: 312b 6529 2064 6566 2044 3320 282e 352c 1+e) def D3 (.5, │ │ │ │ │ +000137b0: 302c 312b 6529 2064 6566 2044 3420 2830 0,1+e) def D4 (0 │ │ │ │ │ +000137c0: 2c30 2c31 2b65 290a 4e6f 7720 6c65 7427 ,0,1+e).Now let' │ │ │ │ │ +000137d0: 7320 6372 6561 7465 2061 206e 6577 2073 s create a new s │ │ │ │ │ +000137e0: 6574 206f 6620 706f 696e 7473 2074 6861 et of points tha │ │ │ │ │ +000137f0: 7420 6172 6520 6120 746f 2d62 652d 6465 t are a to-be-de │ │ │ │ │ +00013800: 7465 726d 696e 6564 0a74 7261 6e73 666f termined.transfo │ │ │ │ │ +00013810: 726d 206f 6620 7468 6520 6f72 6967 696e rm of the origin │ │ │ │ │ +00013820: 616c 732e 0a20 2064 6566 2068 7020 7363 als.. def hp sc │ │ │ │ │ +00013830: 616c 6528 3129 2025 2068 6f75 7365 2070 ale(1) % house p │ │ │ │ │ +00013840: 6f73 6974 696f 6e65 720a 2020 6465 6620 ositioner. def │ │ │ │ │ +00013850: 7052 3120 5b5b 6870 5d5d 2a28 5231 2920 pR1 [[hp]]*(R1) │ │ │ │ │ +00013860: 6465 6620 7052 3220 5b5b 6870 5d5d 2a28 def pR2 [[hp]]*( │ │ │ │ │ +00013870: 5232 2920 6465 6620 7052 3320 5b5b 6870 R2) def pR3 [[hp │ │ │ │ │ +00013880: 5d5d 2a28 5233 290a 2020 6465 6620 7052 ]]*(R3). def pR │ │ │ │ │ +00013890: 3420 5b5b 6870 5d5d 2a28 5234 2920 6465 4 [[hp]]*(R4) de │ │ │ │ │ +000138a0: 6620 7052 3520 5b5b 6870 5d5d 2a28 5235 f pR5 [[hp]]*(R5 │ │ │ │ │ +000138b0: 290a 2020 6465 6620 704c 3120 5b5b 6870 ). def pL1 [[hp │ │ │ │ │ +000138c0: 5d5d 2a28 4c31 2920 6465 6620 704c 3220 ]]*(L1) def pL2 │ │ │ │ │ +000138d0: 5b5b 6870 5d5d 2a28 4c32 2920 6465 6620 [[hp]]*(L2) def │ │ │ │ │ +000138e0: 704c 3320 5b5b 6870 5d5d 2a28 4c33 290a pL3 [[hp]]*(L3). │ │ │ │ │ +000138f0: 2020 6465 6620 704c 3420 5b5b 6870 5d5d def pL4 [[hp]] │ │ │ │ │ +00013900: 2a28 4c34 2920 6465 6620 704c 3520 5b5b *(L4) def pL5 [[ │ │ │ │ │ +00013910: 6870 5d5d 2a28 4c35 290a 2020 6465 6620 hp]]*(L5). def │ │ │ │ │ +00013920: 7044 3120 5b5b 6870 5d5d 2a28 4431 2920 pD1 [[hp]]*(D1) │ │ │ │ │ +00013930: 6465 6620 7044 3220 5b5b 6870 5d5d 2a28 def pD2 [[hp]]*( │ │ │ │ │ +00013940: 4432 2920 6465 6620 7044 3320 5b5b 6870 D2) def pD3 [[hp │ │ │ │ │ +00013950: 5d5d 2a28 4433 290a 2020 6465 6620 7044 ]]*(D3). def pD │ │ │ │ │ +00013960: 3420 5b5b 6870 5d5d 2a28 4434 2920 0a4e 4 [[hp]]*(D4) .N │ │ │ │ │ +00013970: 6f74 6520 7468 6520 7573 6520 6f66 2061 ote the use of a │ │ │ │ │ +00013980: 20e2 809c 7472 616e 7366 6f72 6d20 6465 ...transform de │ │ │ │ │ +00013990: 6669 6e69 7469 6f6e e280 9d20 616e 6420 finition... and │ │ │ │ │ +000139a0: e280 9c74 7261 6e73 666f 726d 2072 6566 ...transform ref │ │ │ │ │ +000139b0: 6572 656e 6365 73e2 809d 2e0a 4e6f 7720 erences.....Now │ │ │ │ │ +000139c0: 6465 6669 6e65 2074 6865 2073 6576 656e define the seven │ │ │ │ │ +000139d0: 2070 6f6c 7967 6f6e 616c 2066 6163 6573 polygonal faces │ │ │ │ │ +000139e0: 206f 6620 7468 6520 686f 7573 6520 616e of the house an │ │ │ │ │ +000139f0: 6420 7468 6520 646f 6f72 2075 7369 6e67 d the door using │ │ │ │ │ +00013a00: 2074 6865 0a74 7261 6e73 666f 726d 6564 the.transformed │ │ │ │ │ +00013a10: 2070 6f69 6e74 7320 6173 2076 6572 7469 points as verti │ │ │ │ │ +00013a20: 6365 732e 2020 4265 2063 6172 6566 756c ces. Be careful │ │ │ │ │ +00013a30: 2077 6974 6820 7665 7274 6578 206f 7264 with vertex ord │ │ │ │ │ +00013a40: 6572 210a 2020 6465 6620 7267 7420 706f er!. def rgt po │ │ │ │ │ +00013a50: 6c79 676f 6e20 2870 5231 2928 7052 3229 lygon (pR1)(pR2) │ │ │ │ │ +00013a60: 2870 5233 2928 7052 3429 2870 5235 290a (pR3)(pR4)(pR5). │ │ │ │ │ +00013a70: 2020 6465 6620 6c66 7420 706f 6c79 676f def lft polygo │ │ │ │ │ +00013a80: 6e20 2870 4c35 2928 704c 3429 2870 4c33 n (pL5)(pL4)(pL3 │ │ │ │ │ +00013a90: 2928 704c 3229 2870 4c31 290a 2020 6465 )(pL2)(pL1). de │ │ │ │ │ +00013aa0: 6620 6672 7420 706f 6c79 676f 6e20 2870 f frt polygon (p │ │ │ │ │ +00013ab0: 5232 2928 7052 3129 2870 4c31 2928 704c R2)(pR1)(pL1)(pL │ │ │ │ │ +00013ac0: 3229 0a20 2064 6566 2062 636b 2070 6f6c 2). def bck pol │ │ │ │ │ +00013ad0: 7967 6f6e 2028 7052 3429 2870 5233 2928 ygon (pR4)(pR3)( │ │ │ │ │ +00013ae0: 704c 3329 2870 4c34 290a 2020 6465 6620 pL3)(pL4). def │ │ │ │ │ +00013af0: 7466 7220 706f 6c79 676f 6e20 2870 5231 tfr polygon (pR1 │ │ │ │ │ +00013b00: 2928 7052 3529 2870 4c35 2928 704c 3129 )(pR5)(pL5)(pL1) │ │ │ │ │ +00013b10: 0a20 2064 6566 2074 626b 2070 6f6c 7967 . def tbk polyg │ │ │ │ │ +00013b20: 6f6e 2028 7052 3529 2870 5234 2928 704c on (pR5)(pR4)(pL │ │ │ │ │ +00013b30: 3429 2870 4c35 290a 2020 6465 6620 626f 4)(pL5). def bo │ │ │ │ │ +00013b40: 7420 706f 6c79 676f 6e20 2870 5232 2928 t polygon (pR2)( │ │ │ │ │ +00013b50: 704c 3229 2870 4c33 2928 7052 3329 0a20 pL2)(pL3)(pR3). │ │ │ │ │ +00013b60: 2064 6566 2064 6f6f 7220 706f 6c79 676f def door polygo │ │ │ │ │ +00013b70: 6e5b 6669 6c6c 636f 6c6f 723d 6272 6f77 n[fillcolor=brow │ │ │ │ │ +00013b80: 6e5d 2028 7044 3129 2870 4432 2928 7044 n] (pD1)(pD2)(pD │ │ │ │ │ +00013b90: 3329 2870 4434 290a 2020 6465 6620 686f 3)(pD4). def ho │ │ │ │ │ +00013ba0: 7573 6520 7b20 7b72 6774 7d7b 6c66 747d use { {rgt}{lft} │ │ │ │ │ +00013bb0: 7b66 7274 7d7b 6263 6b7d 7b74 6672 7d7b {frt}{bck}{tfr}{ │ │ │ │ │ +00013bc0: 7462 6b7d 7b62 6f74 7d7b 646f 6f72 7d20 tbk}{bot}{door} │ │ │ │ │ +00013bd0: 7d0a 2020 2054 696d 6520 666f 7220 6120 }. Time for a │ │ │ │ │ +00013be0: 7361 6e69 7479 2063 6865 636b 2e20 2041 sanity check. A │ │ │ │ │ +00013bf0: 6464 2074 6865 206c 696e 650a 2020 7b68 dd the line. {h │ │ │ │ │ +00013c00: 6f75 7365 7d0a 616e 6420 7468 6973 2069 ouse}.and this i │ │ │ │ │ +00013c10: 7320 7768 6174 2077 6520 6765 742e 0a0a s what we get... │ │ │ │ │ +00013c20: 0008 5b69 6d61 6765 2073 7263 3d22 6578 ..[image src="ex │ │ │ │ │ +00013c30: 3133 302e 706e 6722 2074 6578 743d 2249 130.png" text="I │ │ │ │ │ +00013c40: 6d61 6765 2065 7831 3330 206f 6d69 7474 mage ex130 omitt │ │ │ │ │ +00013c50: 6564 2069 6e20 7465 7874 2076 6572 7369 ed in text versi │ │ │ │ │ +00013c60: 6f6e 206f 6620 7468 6973 2064 6f63 756d on of this docum │ │ │ │ │ +00013c70: 656e 742e 2200 085d 0a0a 5468 6973 2069 ent."..]..This i │ │ │ │ │ +00013c80: 7320 636f 7272 6563 742c 2062 7574 2064 s correct, but d │ │ │ │ │ +00013c90: 6f65 7320 6e6f 7420 7265 7665 616c 2076 oes not reveal v │ │ │ │ │ +00013ca0: 6572 7920 6d75 6368 2e20 2043 6f6d 6d6f ery much. Commo │ │ │ │ │ +00013cb0: 6e20 6572 726f 7273 2061 7265 0a6d 6973 n errors are.mis │ │ │ │ │ +00013cc0: 706c 6163 6564 2076 6572 7469 6365 7320 placed vertices │ │ │ │ │ +00013cd0: 616e 6420 706f 6c79 676f 6e73 206d 6973 and polygons mis │ │ │ │ │ +00013ce0: 7369 6e67 2065 6e74 6972 656c 7920 6475 sing entirely du │ │ │ │ │ +00013cf0: 6520 746f 2069 6e63 6f72 7265 6374 2076 e to incorrect v │ │ │ │ │ +00013d00: 6572 7465 780a 6f72 6465 722e 2020 546f ertex.order. To │ │ │ │ │ +00013d10: 2072 756c 6520 7468 6573 6520 6f75 742c rule these out, │ │ │ │ │ +00013d20: 206c 6574 2773 2069 6e73 7065 6374 2061 let's inspect a │ │ │ │ │ +00013d30: 6c6c 2073 6964 6573 206f 6620 7468 6520 ll sides of the │ │ │ │ │ +00013d40: 686f 7573 652e 2020 5468 6973 0a69 7320 house. This.is │ │ │ │ │ +00013d50: 6e6f 7420 6861 7264 2e20 204d 6572 656c not hard. Merel │ │ │ │ │ +00013d60: 7920 7265 706c 6163 6520 7468 6520 7265 y replace the re │ │ │ │ │ +00013d70: 6665 7265 6e63 6520 7b68 6f75 7365 7d20 ference {house} │ │ │ │ │ +00013d80: 7769 7468 2061 20e2 8098 7265 7065 6174 with a ...repeat │ │ │ │ │ +00013d90: e280 992e 0a2a 4e6f 7465 2052 6570 6561 .....*Note Repea │ │ │ │ │ +00013da0: 7473 3a3a 2e0a 2020 7265 7065 6174 207b ts::.. repeat { │ │ │ │ │ +00013db0: 2031 332c 2072 6f74 6174 6528 3330 2c20 13, rotate(30, │ │ │ │ │ +00013dc0: 5b31 2c32 2c33 5d29 2c20 7472 616e 736c [1,2,3]), transl │ │ │ │ │ +00013dd0: 6174 6528 5b33 2c30 2c30 5d29 207d 207b ate([3,0,0]) } { │ │ │ │ │ +00013de0: 686f 7573 657d 0a00 085b 696d 6167 6520 house}...[image │ │ │ │ │ +00013df0: 7372 633d 2265 7831 3430 2e70 6e67 2220 src="ex140.png" │ │ │ │ │ +00013e00: 7465 7874 3d22 496d 6167 6520 6578 3134 text="Image ex14 │ │ │ │ │ +00013e10: 3020 6f6d 6974 7465 6420 696e 2074 6578 0 omitted in tex │ │ │ │ │ +00013e20: 7420 7665 7273 696f 6e20 6f66 2074 6869 t version of thi │ │ │ │ │ +00013e30: 7320 646f 6375 6d65 6e74 2e22 0008 5d0a s document."..]. │ │ │ │ │ +00013e40: 0a41 6761 696e 2074 6869 6e67 7320 6c6f .Again things lo │ │ │ │ │ +00013e50: 6f6b 2063 6f72 7265 6374 2e20 204e 6f74 ok correct. Not │ │ │ │ │ +00013e60: 6520 7468 6174 2074 6865 2068 6964 6465 e that the hidde │ │ │ │ │ +00013e70: 6e20 7375 7266 6163 6520 616c 676f 7269 n surface algori │ │ │ │ │ +00013e80: 7468 6d0a 6861 6e64 6c65 7320 696e 7465 thm.handles inte │ │ │ │ │ +00013e90: 7273 6563 7469 6e67 2070 6f6c 7967 6f6e rsecting polygon │ │ │ │ │ +00013ea0: 7320 636f 7272 6563 746c 7920 7768 6572 s correctly wher │ │ │ │ │ +00013eb0: 6520 736f 6d65 2063 6f70 6965 7320 6f66 e some copies of │ │ │ │ │ +00013ec0: 2074 6865 2068 6f75 7365 0a6f 7665 726c the house.overl │ │ │ │ │ +00013ed0: 6170 2e0a 0a20 2020 4c65 7427 7320 6c61 ap... Let's la │ │ │ │ │ +00013ee0: 7920 6f75 7420 7468 6520 6765 6f6d 6574 y out the geomet │ │ │ │ │ +00013ef0: 7279 206f 6620 7065 7273 7065 6374 6976 ry of perspectiv │ │ │ │ │ +00013f00: 6520 7072 6f6a 6563 7469 6f6e 206f 6620 e projection of │ │ │ │ │ +00013f10: 7468 6520 686f 7573 650a 6f6e 746f 2061 the house.onto a │ │ │ │ │ +00013f20: 2070 6c61 6e65 2077 6974 6820 7261 7973 plane with rays │ │ │ │ │ +00013f30: 2070 6173 7369 6e67 2074 6872 6f75 6768 passing through │ │ │ │ │ +00013f40: 2074 6865 206f 7269 6769 6e2e 2020 4265 the origin. Be │ │ │ │ │ +00013f50: 6769 6e20 6279 2070 6f73 6974 696f 6e69 gin by positioni │ │ │ │ │ +00013f60: 6e67 0a74 6865 2068 6f75 7365 2074 7765 ng.the house twe │ │ │ │ │ +00013f70: 6c76 6520 756e 6974 7320 6261 636b 206f lve units back o │ │ │ │ │ +00013f80: 6e20 7468 6520 6e65 6761 7469 7665 207a n the negative z │ │ │ │ │ +00013f90: 2d61 7869 7320 616e 6420 6164 6469 6e67 -axis and adding │ │ │ │ │ +00013fa0: 2061 2073 6574 206f 660a 636f 6f72 6469 a set of.coordi │ │ │ │ │ +00013fb0: 6e61 7465 2061 7865 732e 2020 546f 206d nate axes. To m │ │ │ │ │ +00013fc0: 6f76 6520 7468 6520 686f 7573 6520 7765 ove the house we │ │ │ │ │ +00013fd0: 206e 6565 6420 6f6e 6c79 2063 6861 6e67 need only chang │ │ │ │ │ +00013fe0: 6520 7468 6520 2268 6f75 7365 0a70 6f73 e the "house.pos │ │ │ │ │ +00013ff0: 6974 696f 6e69 6e67 2220 7472 616e 7366 itioning" transf │ │ │ │ │ +00014000: 6f72 6d20 6465 6669 6e65 6420 6561 726c orm defined earl │ │ │ │ │ +00014010: 6965 722e 0a20 2064 6566 2068 7020 726f ier.. def hp ro │ │ │ │ │ +00014020: 7461 7465 282d 3430 2c20 5b30 2c31 2c30 tate(-40, [0,1,0 │ │ │ │ │ +00014030: 5d29 2074 6865 6e20 7472 616e 736c 6174 ]) then translat │ │ │ │ │ +00014040: 6528 5b30 2c30 2c2d 3132 5d29 0a20 2064 e([0,0,-12]). d │ │ │ │ │ +00014050: 6566 2061 7865 7320 7b0a 2020 2020 6465 ef axes {. de │ │ │ │ │ +00014060: 6620 737a 2031 0a20 2020 206c 696e 6520 f sz 1. line │ │ │ │ │ +00014070: 5b61 7272 6f77 733d 3c2d 3e5d 2028 737a [arrows=<->] (sz │ │ │ │ │ +00014080: 2c30 2c30 2928 4f29 2830 2c73 7a2c 3029 ,0,0)(O)(0,sz,0) │ │ │ │ │ +00014090: 0a20 2020 206c 696e 6520 5b61 7272 6f77 . line [arrow │ │ │ │ │ +000140a0: 733d 2d3e 5d20 2028 4f29 2830 2c30 2c73 s=->] (O)(0,0,s │ │ │ │ │ +000140b0: 7a29 0a20 2020 206c 696e 6520 5b6c 696e z). line [lin │ │ │ │ │ +000140c0: 6577 6964 7468 3d2e 3270 742c 6c69 6e65 ewidth=.2pt,line │ │ │ │ │ +000140d0: 636f 6c6f 723d 626c 7565 2c6c 696e 6573 color=blue,lines │ │ │ │ │ +000140e0: 7479 6c65 3d64 6173 6865 645d 2028 4f29 tyle=dashed] (O) │ │ │ │ │ +000140f0: 2830 2c30 2c2d 3130 290a 2020 2020 7370 (0,0,-10). sp │ │ │ │ │ +00014100: 6563 6961 6c20 7c5c 7570 7574 5b72 5d23 ecial |\uput[r]# │ │ │ │ │ +00014110: 317b 2478 247d 5c75 7075 745b 755d 2332 1{$x$}\uput[u]#2 │ │ │ │ │ +00014120: 7b24 7924 7d5c 7570 7574 5b6c 5d23 337b {$y$}\uput[l]#3{ │ │ │ │ │ +00014130: 247a 247d 7c0a 2020 2020 2020 2873 7a2c $z$}|. (sz, │ │ │ │ │ +00014140: 302c 3029 2830 2c73 7a2c 3029 2830 2c30 0,0)(0,sz,0)(0,0 │ │ │ │ │ +00014150: 2c73 7a29 0a20 207d 0a0a 2020 2054 696d ,sz). }.. Tim │ │ │ │ │ +00014160: 6520 666f 7220 616e 6f74 6865 7220 7465 e for another te │ │ │ │ │ +00014170: 7374 2e20 204c 6574 2773 2062 7569 6c64 st. Let's build │ │ │ │ │ +00014180: 2061 2072 6561 6c20 7669 6577 2074 7261 a real view tra │ │ │ │ │ +00014190: 6e73 666f 726d 2c20 6372 6561 7469 6e67 nsform, creating │ │ │ │ │ +000141a0: 2061 0ae2 809c 7669 7274 7561 6c20 6361 a....virtual ca │ │ │ │ │ +000141b0: 6d65 7261 e280 9d20 746f 206c 6f6f 6b20 mera... to look │ │ │ │ │ +000141c0: 6174 2074 6865 2073 6365 6e65 2077 6520 at the scene we │ │ │ │ │ +000141d0: 6172 6520 636f 6e73 7472 7563 7469 6e67 are constructing │ │ │ │ │ +000141e0: 2e20 2052 6570 6c61 6365 2074 6865 0ae2 . Replace the.. │ │ │ │ │ +000141f0: 8098 7265 7065 6174 e280 9920 7769 7468 ..repeat... with │ │ │ │ │ +00014200: 0a20 2064 6566 2065 7965 2028 3130 2c34 . def eye (10,4 │ │ │ │ │ +00014210: 2c31 3029 0a20 2064 6566 206c 6f6f 6b5f ,10). def look_ │ │ │ │ │ +00014220: 6174 2028 302c 302c 2d35 290a 2020 7075 at (0,0,-5). pu │ │ │ │ │ +00014230: 7420 7b20 7669 6577 2828 6579 6529 2c20 t { view((eye), │ │ │ │ │ +00014240: 286c 6f6f 6b5f 6174 2929 207d 207b 207b (look_at)) } { { │ │ │ │ │ +00014250: 686f 7573 657d 7b61 7865 737d 207d 0a20 house}{axes} }. │ │ │ │ │ +00014260: 2020 5468 6520 e280 9c76 6965 7720 7472 The ...view tr │ │ │ │ │ +00014270: 616e 7366 6f72 6de2 809d 2072 6570 6f73 ansform... repos │ │ │ │ │ +00014280: 6974 696f 6e73 2074 6865 2073 6365 6e65 itions the scene │ │ │ │ │ +00014290: 2073 6f20 7468 6174 2074 6865 2070 6f69 so that the poi │ │ │ │ │ +000142a0: 6e74 20e2 8098 6579 65e2 8099 2069 730a nt ...eye... is. │ │ │ │ │ +000142b0: 6174 2074 6865 206f 7269 6769 6e20 616e at the origin an │ │ │ │ │ +000142c0: 6420 7468 6520 6469 7265 6374 696f 6e20 d the direction │ │ │ │ │ +000142d0: 6672 6f6d 20e2 8098 6579 65e2 8099 2074 from ...eye... t │ │ │ │ │ +000142e0: 6f20 e280 986c 6f6f 6b5f 6174 e280 9920 o ...look_at... │ │ │ │ │ +000142f0: 6973 2074 6865 206e 6567 6174 6976 650a is the negative. │ │ │ │ │ +00014300: 7a2d 6178 6973 2e20 2054 6869 7320 7265 z-axis. This re │ │ │ │ │ +00014310: 7175 6972 6573 2061 2072 6f74 6174 696f quires a rotatio │ │ │ │ │ +00014320: 6e20 616e 6420 6120 7472 616e 736c 6174 n and a translat │ │ │ │ │ +00014330: 696f 6e20 7468 6174 2061 7265 2061 6c6c ion that are all │ │ │ │ │ +00014340: 2070 6163 6b65 640a 696e 746f 2074 6865 packed.into the │ │ │ │ │ +00014350: 2063 6f6e 7374 7275 6374 6f72 20e2 8098 constructor ... │ │ │ │ │ +00014360: 7669 6577 e280 992e 0a0a 0008 5b69 6d61 view........[ima │ │ │ │ │ +00014370: 6765 2073 7263 3d22 6578 3135 302e 706e ge src="ex150.pn │ │ │ │ │ +00014380: 6722 2074 6578 743d 2249 6d61 6765 2065 g" text="Image e │ │ │ │ │ +00014390: 7831 3530 206f 6d69 7474 6564 2069 6e20 x150 omitted in │ │ │ │ │ +000143a0: 7465 7874 2076 6572 7369 6f6e 206f 6620 text version of │ │ │ │ │ +000143b0: 7468 6973 2064 6f63 756d 656e 742e 2200 this document.". │ │ │ │ │ +000143c0: 085d 0a0a 5468 6973 2069 7320 7374 6172 .]..This is star │ │ │ │ │ +000143d0: 7469 6e67 2074 6f20 6c6f 6f6b 2067 6f6f ting to look goo │ │ │ │ │ +000143e0: 6421 2020 4164 6420 7468 6520 7072 6f6a d! Add the proj │ │ │ │ │ +000143f0: 6563 7469 6f6e 2070 6c61 6e65 2068 616c ection plane hal │ │ │ │ │ +00014400: 6620 7761 790a 6265 7477 6565 6e20 7468 f way.between th │ │ │ │ │ +00014410: 6520 6f72 6967 696e 2061 6e64 2074 6865 e origin and the │ │ │ │ │ +00014420: 2068 6f75 7365 2061 7420 7a3d 2d35 2e20 house at z=-5. │ │ │ │ │ +00014430: 2057 6527 6c6c 2074 7279 2074 6865 2061 We'll try the a │ │ │ │ │ +00014440: 6e67 6c65 2061 7267 756d 656e 740a 6665 ngle argument.fe │ │ │ │ │ +00014450: 6174 7572 6520 6f66 20e2 8098 7370 6563 ature of ...spec │ │ │ │ │ +00014460: 6961 6ce2 8099 2074 6f20 706f 7369 7469 ial... to positi │ │ │ │ │ +00014470: 6f6e 2061 206c 6162 656c 2e0a 2020 6465 on a label.. de │ │ │ │ │ +00014480: 6620 7020 3520 2520 7072 6f6a 6563 7469 f p 5 % projecti │ │ │ │ │ +00014490: 6f6e 2064 6973 7461 6e63 6520 2870 6c61 on distance (pla │ │ │ │ │ +000144a0: 6e65 2061 7420 7a3d 2d70 290a 2020 6465 ne at z=-p). de │ │ │ │ │ +000144b0: 6620 7072 6f6a 6563 7469 6f6e 5f70 6c61 f projection_pla │ │ │ │ │ +000144c0: 6e65 207b 0a20 2020 2064 6566 2073 7a20 ne {. def sz │ │ │ │ │ +000144d0: 312e 350a 2020 2020 706f 6c79 676f 6e20 1.5. polygon │ │ │ │ │ +000144e0: 282d 737a 2c2d 737a 2c2d 7029 2873 7a2c (-sz,-sz,-p)(sz, │ │ │ │ │ +000144f0: 2d73 7a2c 2d70 2928 737a 2c73 7a2c 2d70 -sz,-p)(sz,sz,-p │ │ │ │ │ +00014500: 2928 2d73 7a2c 737a 2c2d 7029 0a20 2020 )(-sz,sz,-p). │ │ │ │ │ +00014510: 2073 7065 6369 616c 207c 5c72 7075 745b special |\rput[ │ │ │ │ │ +00014520: 625d 2331 2d32 2333 7b5c 666f 6f74 6e6f b]#1-2#3{\footno │ │ │ │ │ +00014530: 7465 7369 7a65 5c73 6620 7072 6f6a 6563 tesize\sf projec │ │ │ │ │ +00014540: 7469 6f6e 2070 6c61 6e65 7d7c 200a 2020 tion plane}| . │ │ │ │ │ +00014550: 2020 2020 282d 737a 2c2d 737a 2c2d 7029 (-sz,-sz,-p) │ │ │ │ │ +00014560: 2873 7a2c 2d73 7a2c 2d70 2928 302c 2d73 (sz,-sz,-p)(0,-s │ │ │ │ │ +00014570: 7a2b 2e31 2c2d 7029 0a20 207d 0a41 6464 z+.1,-p). }.Add │ │ │ │ │ +00014580: 207b 7072 6f6a 6563 7469 6f6e 5f70 6c61 {projection_pla │ │ │ │ │ +00014590: 6e65 7d20 746f 2074 6865 206c 6973 7420 ne} to the list │ │ │ │ │ +000145a0: 6f66 206f 626a 6563 7473 2069 6e20 7468 of objects in th │ │ │ │ │ +000145b0: 6520 e280 9870 7574 e280 9920 6162 6f76 e ...put... abov │ │ │ │ │ +000145c0: 652e 0a0a 0008 5b69 6d61 6765 2073 7263 e.....[image src │ │ │ │ │ +000145d0: 3d22 6578 3136 302e 706e 6722 2074 6578 ="ex160.png" tex │ │ │ │ │ +000145e0: 743d 2249 6d61 6765 2065 7831 3630 206f t="Image ex160 o │ │ │ │ │ +000145f0: 6d69 7474 6564 2069 6e20 7465 7874 2076 mitted in text v │ │ │ │ │ +00014600: 6572 7369 6f6e 206f 6620 7468 6973 2064 ersion of this d │ │ │ │ │ +00014610: 6f63 756d 656e 742e 2200 085d 0a0a 2020 ocument."..].. │ │ │ │ │ +00014620: 2054 6865 2077 6179 2077 6520 636f 6e73 The way we cons │ │ │ │ │ +00014630: 7472 7563 7465 6420 7468 6520 706f 696e tructed the poin │ │ │ │ │ +00014640: 7473 206f 6620 7468 6520 686f 7573 6520 ts of the house │ │ │ │ │ +00014650: 6e6f 7720 6d61 6b65 7320 6974 2065 6173 now makes it eas │ │ │ │ │ +00014660: 7920 746f 0a64 7261 7720 7261 7973 206f y to.draw rays o │ │ │ │ │ +00014670: 6620 7072 6f6a 6563 7469 6f6e 2e20 2057 f projection. W │ │ │ │ │ +00014680: 6527 6c6c 2063 6173 7420 6f6e 6520 7261 e'll cast one ra │ │ │ │ │ +00014690: 7920 6672 6f6d 2065 7665 7279 2076 6973 y from every vis │ │ │ │ │ +000146a0: 6962 6c65 2076 6572 7465 780a 6f66 2074 ible vertex.of t │ │ │ │ │ +000146b0: 6865 2068 6f75 7365 2061 6e64 2064 6566 he house and def │ │ │ │ │ +000146c0: 696e 6520 6f70 7469 6f6e 7320 736f 2074 ine options so t │ │ │ │ │ +000146d0: 6865 2061 7070 6561 7261 6e63 6520 6f66 he appearance of │ │ │ │ │ +000146e0: 2061 6c6c 2072 6179 7320 6361 6e20 6265 all rays can be │ │ │ │ │ +000146f0: 0a63 6861 6e67 6564 2061 7420 7468 6520 .changed at the │ │ │ │ │ +00014700: 7361 6d65 2074 696d 652e 0a20 2064 6566 same time.. def │ │ │ │ │ +00014710: 2070 726f 6a65 6374 696f 6e5f 7261 7973 projection_rays │ │ │ │ │ +00014720: 207b 0a20 2020 2064 6566 2072 6179 6f70 {. def rayop │ │ │ │ │ +00014730: 7420 5b6c 696e 6577 6964 7468 3d2e 3370 t [linewidth=.3p │ │ │ │ │ +00014740: 742c 6c69 6e65 636f 6c6f 723d 6c69 6768 t,linecolor=ligh │ │ │ │ │ +00014750: 7467 7261 795d 0a20 2020 206c 696e 6520 tgray]. line │ │ │ │ │ +00014760: 5b72 6179 6f70 745d 284f 2928 7052 3129 [rayopt](O)(pR1) │ │ │ │ │ +00014770: 206c 696e 6520 5b72 6179 6f70 745d 284f line [rayopt](O │ │ │ │ │ +00014780: 2928 7052 3229 206c 696e 655b 7261 796f )(pR2) line[rayo │ │ │ │ │ +00014790: 7074 5d28 4f29 2870 5233 290a 2020 2020 pt](O)(pR3). │ │ │ │ │ +000147a0: 6c69 6e65 205b 7261 796f 7074 5d28 4f29 line [rayopt](O) │ │ │ │ │ +000147b0: 2870 5234 2920 6c69 6e65 205b 7261 796f (pR4) line [rayo │ │ │ │ │ +000147c0: 7074 5d28 4f29 2870 5235 290a 2020 2020 pt](O)(pR5). │ │ │ │ │ +000147d0: 6c69 6e65 205b 7261 796f 7074 5d28 4f29 line [rayopt](O) │ │ │ │ │ +000147e0: 2870 4c31 2920 6c69 6e65 205b 7261 796f (pL1) line [rayo │ │ │ │ │ +000147f0: 7074 5d28 4f29 2870 4c32 2920 6c69 6e65 pt](O)(pL2) line │ │ │ │ │ +00014800: 5b72 6179 6f70 745d 284f 2928 704c 3529 [rayopt](O)(pL5) │ │ │ │ │ +00014810: 0a20 2020 206c 696e 6520 5b72 6179 6f70 . line [rayop │ │ │ │ │ +00014820: 745d 284f 2928 7044 3129 206c 696e 6520 t](O)(pD1) line │ │ │ │ │ +00014830: 5b72 6179 6f70 745d 284f 2928 7044 3229 [rayopt](O)(pD2) │ │ │ │ │ +00014840: 200a 2020 2020 6c69 6e65 205b 7261 796f . line [rayo │ │ │ │ │ +00014850: 7074 5d28 4f29 2870 4433 2920 6c69 6e65 pt](O)(pD3) line │ │ │ │ │ +00014860: 205b 7261 796f 7074 5d28 4f29 2870 4434 [rayopt](O)(pD4 │ │ │ │ │ +00014870: 2920 0a20 207d 0a54 6865 2072 6573 756c ) . }.The resul │ │ │ │ │ +00014880: 7420 6973 2073 686f 776e 2068 6572 652e t is shown here. │ │ │ │ │ +00014890: 0a0a 0008 5b69 6d61 6765 2073 7263 3d22 ....[image src=" │ │ │ │ │ +000148a0: 6578 3137 302e 706e 6722 2074 6578 743d ex170.png" text= │ │ │ │ │ +000148b0: 2249 6d61 6765 2065 7831 3730 206f 6d69 "Image ex170 omi │ │ │ │ │ +000148c0: 7474 6564 2069 6e20 7465 7874 2076 6572 tted in text ver │ │ │ │ │ +000148d0: 7369 6f6e 206f 6620 7468 6973 2064 6f63 sion of this doc │ │ │ │ │ +000148e0: 756d 656e 742e 2200 085d 0a0a 5468 6520 ument."..]..The │ │ │ │ │ +000148f0: 7261 7973 2070 6965 7263 6520 7468 6520 rays pierce the │ │ │ │ │ +00014900: 7072 6f6a 6563 7469 6f6e 2070 6c61 6e65 projection plane │ │ │ │ │ +00014910: 2061 7420 7468 6520 636f 7272 6573 706f at the correspo │ │ │ │ │ +00014920: 6e64 696e 6720 706f 696e 7473 206f 6e20 nding points on │ │ │ │ │ +00014930: 7468 650a 7065 7273 7065 6374 6976 6520 the.perspective │ │ │ │ │ +00014940: 696d 6167 6520 7765 2061 7265 2074 7279 image we are try │ │ │ │ │ +00014950: 696e 6720 746f 2064 7261 772e 2020 416c ing to draw. Al │ │ │ │ │ +00014960: 6272 6563 6874 2044 c3bc 7265 7220 616e brecht D..rer an │ │ │ │ │ +00014970: 6420 6869 730a 5265 6e61 6973 7361 6e63 d his.Renaissanc │ │ │ │ │ +00014980: 6520 636f 6e74 656d 706f 7261 7269 6573 e contemporaries │ │ │ │ │ +00014990: 2068 6164 2074 6865 2073 616d 6520 6964 had the same id │ │ │ │ │ +000149a0: 6561 2069 6e20 7468 6520 6561 726c 7920 ea in the early │ │ │ │ │ +000149b0: 3135 3030 2773 2e0a 0a00 085b 696d 6167 1500's.....[imag │ │ │ │ │ +000149c0: 6520 7372 633d 2264 7565 7265 722e 706e e src="duerer.pn │ │ │ │ │ +000149d0: 6722 2074 6578 743d 2249 6d61 6765 206f g" text="Image o │ │ │ │ │ +000149e0: 6620 4475 6572 6572 2773 2070 6572 7370 f Duerer's persp │ │ │ │ │ +000149f0: 6563 7469 7665 2063 6f6d 7075 7465 7220 ective computer │ │ │ │ │ +00014a00: 6f6d 6974 7465 6420 696e 2074 6578 7420 omitted in text │ │ │ │ │ +00014a10: 7665 7273 696f 6e20 6f66 2074 6869 7320 version of this │ │ │ │ │ +00014a20: 646f 6375 6d65 6e74 2e22 0008 5d0a 0a20 document."..].. │ │ │ │ │ +00014a30: 2020 416c 6c20 7468 6174 2773 206c 6566 All that's lef │ │ │ │ │ +00014a40: 7420 6973 2074 6f20 6669 6e64 2061 2077 t is to find a w │ │ │ │ │ +00014a50: 6179 2074 6f20 636f 6e6e 6563 7420 7468 ay to connect th │ │ │ │ │ +00014a60: 6520 706f 696e 7473 206f 6620 7468 6520 e points of the │ │ │ │ │ +00014a70: 686f 7573 650a 6f6e 2074 6865 2070 726f house.on the pro │ │ │ │ │ +00014a80: 6a65 6374 696f 6e20 706c 616e 652e 2020 jection plane. │ │ │ │ │ +00014a90: 5765 2063 6f75 6c64 2070 756c 6c20 6f75 We could pull ou │ │ │ │ │ +00014aa0: 7420 6120 676f 6f64 2063 6f6d 7075 7465 t a good compute │ │ │ │ │ +00014ab0: 7220 6772 6170 6869 6373 0a74 6578 742c r graphics.text, │ │ │ │ │ +00014ac0: 2066 696e 6420 7468 6520 6e65 6365 7373 find the necess │ │ │ │ │ +00014ad0: 6172 7920 6d61 7472 6978 2c20 616e 6420 ary matrix, and │ │ │ │ │ +00014ae0: 656e 7465 7220 6974 206f 7572 7365 6c76 enter it ourselv │ │ │ │ │ +00014af0: 6573 2061 7320 6120 7472 616e 7366 6f72 es as a transfor │ │ │ │ │ +00014b00: 6d0a 6c69 7465 7261 6c2e 2020 2a4e 6f74 m.literal. *Not │ │ │ │ │ +00014b10: 6520 5472 616e 7366 6f72 6d20 6c69 7465 e Transform lite │ │ │ │ │ +00014b20: 7261 6c73 3a3a 2e20 2054 6861 7420 776f rals::. That wo │ │ │ │ │ +00014b30: 726b 2069 7320 616c 7265 6164 7920 646f rk is already do │ │ │ │ │ +00014b40: 6e65 2c0a 686f 7765 7665 722e 2020 5765 ne,.however. We │ │ │ │ │ +00014b50: 2063 616e 2075 7365 2074 6865 20e2 8098 can use the ... │ │ │ │ │ +00014b60: 7072 6f6a 6563 7428 7029 e280 9920 636f project(p)... co │ │ │ │ │ +00014b70: 6e73 7472 7563 746f 722e 0a0a 2020 2054 nstructor... T │ │ │ │ │ +00014b80: 6865 7265 2061 7265 2073 7469 6c6c 2073 here are still s │ │ │ │ │ +00014b90: 6f6d 6520 6465 7461 696c 7320 7468 6174 ome details that │ │ │ │ │ +00014ba0: 2072 6571 7569 7265 2063 6172 652e 2020 require care. │ │ │ │ │ +00014bb0: 5072 6f6a 6563 7469 6f6e 2077 696c 6c0a Projection will. │ │ │ │ │ +00014bc0: 666c 6174 7465 6e20 7768 6174 6576 6572 flatten whatever │ │ │ │ │ +00014bd0: 2069 7320 7472 616e 7366 6f72 6d65 6420 is transformed │ │ │ │ │ +00014be0: 6f6e 746f 2074 6865 2070 6c61 6e65 207a onto the plane z │ │ │ │ │ +00014bf0: 3d2d 702e 2020 5468 6572 6566 6f72 6520 =-p. Therefore │ │ │ │ │ +00014c00: 616e 7920 7061 7274 0a6f 6620 7468 6520 any part.of the │ │ │ │ │ +00014c10: 686f 7573 6520 636f 756c 6420 6469 7361 house could disa │ │ │ │ │ +00014c20: 7070 6561 7220 6265 6869 6e64 2074 6865 ppear behind the │ │ │ │ │ +00014c30: 2070 726f 6a65 6374 696f 6e20 706c 616e projection plan │ │ │ │ │ +00014c40: 6520 2874 6865 2068 6964 6465 6e0a 7375 e (the hidden.su │ │ │ │ │ +00014c50: 7266 6163 6520 616c 676f 7269 7468 6d20 rface algorithm │ │ │ │ │ +00014c60: 6f72 6465 7273 206f 626a 6563 7473 2061 orders objects a │ │ │ │ │ +00014c70: 7420 7468 6520 7361 6d65 2064 6570 7468 t the same depth │ │ │ │ │ +00014c80: 2061 7262 6974 7261 7269 6c79 292e 2020 arbitrarily). │ │ │ │ │ +00014c90: 5468 650a 646f 6f72 206d 6179 2061 6c73 The.door may als │ │ │ │ │ +00014ca0: 6f20 6469 7361 7070 6561 7220 6265 6869 o disappear behi │ │ │ │ │ +00014cb0: 6e64 2074 6865 2066 726f 6e74 206f 6620 nd the front of │ │ │ │ │ +00014cc0: 7468 6520 686f 7573 652e 2020 546f 206d the house. To m │ │ │ │ │ +00014cd0: 616b 6520 7375 7265 0a65 7665 7279 7468 ake sure.everyth │ │ │ │ │ +00014ce0: 696e 6720 7265 6d61 696e 7320 7669 7369 ing remains visi │ │ │ │ │ +00014cf0: 626c 652c 2077 6527 6c6c 2070 6c61 6365 ble, we'll place │ │ │ │ │ +00014d00: 2074 6865 2068 6f75 7365 2061 2074 696e the house a tin │ │ │ │ │ +00014d10: 7920 6269 7420 696e 2066 726f 6e74 206f y bit in front o │ │ │ │ │ +00014d20: 660a 7468 6520 7072 6f6a 6563 7469 6f6e f.the projection │ │ │ │ │ +00014d30: 2070 6c61 6e65 2061 6e64 2061 2073 6563 plane and a sec │ │ │ │ │ +00014d40: 6f6e 6420 636f 7079 206f 6620 7468 6520 ond copy of the │ │ │ │ │ +00014d50: 646f 6f72 2069 6e20 6672 6f6e 7420 6f66 door in front of │ │ │ │ │ +00014d60: 2074 6865 0a68 6f75 7365 2e0a 2020 6465 the.house.. de │ │ │ │ │ +00014d70: 6620 7072 6f6a 6563 7469 6f6e 207b 0a20 f projection {. │ │ │ │ │ +00014d80: 2020 2025 2065 2069 7320 6120 736d 616c % e is a smal │ │ │ │ │ +00014d90: 6c20 6e75 6d62 6572 2064 6566 696e 6564 l number defined │ │ │ │ │ +00014da0: 2061 626f 7665 0a20 2020 2070 7574 207b above. put { │ │ │ │ │ +00014db0: 2070 726f 6a65 6374 2870 2920 7468 656e project(p) then │ │ │ │ │ +00014dc0: 2074 7261 6e73 6c61 7465 285b 302c 302c translate([0,0, │ │ │ │ │ +00014dd0: 312a 655d 2920 7d20 7b68 6f75 7365 7d0a 1*e]) } {house}. │ │ │ │ │ +00014de0: 2020 2020 7075 7420 7b20 7072 6f6a 6563 put { projec │ │ │ │ │ +00014df0: 7428 7029 2074 6865 6e20 7472 616e 736c t(p) then transl │ │ │ │ │ +00014e00: 6174 6528 5b30 2c30 2c32 2a65 5d29 207d ate([0,0,2*e]) } │ │ │ │ │ +00014e10: 207b 646f 6f72 7d0a 2020 7d0a 0a00 085b {door}. }....[ │ │ │ │ │ +00014e20: 696d 6167 6520 7372 633d 2265 7831 3830 image src="ex180 │ │ │ │ │ +00014e30: 2e70 6e67 2220 7465 7874 3d22 496d 6167 .png" text="Imag │ │ │ │ │ +00014e40: 6520 6578 3138 3020 6f6d 6974 7465 6420 e ex180 omitted │ │ │ │ │ +00014e50: 696e 2074 6578 7420 7665 7273 696f 6e20 in text version │ │ │ │ │ +00014e60: 6f66 2074 6869 7320 646f 6375 6d65 6e74 of this document │ │ │ │ │ +00014e70: 2e22 0008 5d0a 0a20 2020 4966 2079 6f75 ."..].. If you │ │ │ │ │ +00014e80: 2068 6176 6520 7374 7564 6965 6420 616e have studied an │ │ │ │ │ +00014e90: 6420 756e 6465 7273 7461 6e64 2061 6c6c d understand all │ │ │ │ │ +00014ea0: 2074 6869 732c 2079 6f75 2061 7265 2077 this, you are w │ │ │ │ │ +00014eb0: 656c 6c20 6f6e 2074 6865 2077 6179 0a74 ell on the way.t │ │ │ │ │ +00014ec0: 6f20 7375 6363 6573 7320 7769 7468 20e2 o success with . │ │ │ │ │ +00014ed0: 8098 736b 6574 6368 e280 992e 2020 4e6f ..sketch.... No │ │ │ │ │ +00014ee0: 7420 7368 6f77 6e20 6172 6520 7468 6520 t shown are the │ │ │ │ │ +00014ef0: 3230 206f 7220 736f 2069 7465 7261 7469 20 or so iterati │ │ │ │ │ +00014f00: 6f6e 7320 7468 6174 0a77 6572 6520 7265 ons that.were re │ │ │ │ │ +00014f10: 7175 6972 6564 2074 6f20 6669 6e64 2061 quired to find a │ │ │ │ │ +00014f20: 2072 6561 736f 6e61 626c 6520 7669 6577 reasonable view │ │ │ │ │ +00014f30: 696e 6720 616e 676c 6520 616e 6420 686f ing angle and ho │ │ │ │ │ +00014f40: 7573 6520 706f 7369 7469 6f6e 2c0a 6574 use position,.et │ │ │ │ │ +00014f50: 632e 2020 4e6f 6e65 7468 656c 6573 732c c. Nonetheless, │ │ │ │ │ +00014f60: 2074 6869 7320 6472 6177 696e 6720 7761 this drawing wa │ │ │ │ │ +00014f70: 7320 636f 6d70 6c65 7465 6420 696e 2061 s completed in a │ │ │ │ │ +00014f80: 626f 7574 2061 6e20 686f 7572 2e20 2057 bout an hour. W │ │ │ │ │ +00014f90: 6869 6c65 2061 0a47 5549 2074 6f6f 6c20 hile a.GUI tool │ │ │ │ │ +00014fa0: 6d61 7920 6861 7665 2062 6565 6e20 6120 may have been a │ │ │ │ │ +00014fb0: 6c69 7474 6c65 2066 6173 7465 722c 2069 little faster, i │ │ │ │ │ +00014fc0: 7420 6973 2075 6e6c 696b 656c 7920 7468 t is unlikely th │ │ │ │ │ +00014fd0: 6174 2061 206e 6577 0a64 7261 7769 6e67 at a new.drawing │ │ │ │ │ +00014fe0: 2c20 6974 7365 6c66 2061 2070 6572 7370 , itself a persp │ │ │ │ │ +00014ff0: 6563 7469 7665 2070 726f 6a65 6374 696f ective projectio │ │ │ │ │ +00015000: 6e20 6f66 2074 6865 2073 6365 6e65 2c20 n of the scene, │ │ │ │ │ +00015010: 636f 756c 6420 6265 0a67 656e 6572 6174 could be.generat │ │ │ │ │ +00015020: 6564 2077 6974 6820 7477 6f20 6d6f 7265 ed with two more │ │ │ │ │ +00015030: 206d 696e 7574 6573 2720 776f 726b 2120 minutes' work! │ │ │ │ │ +00015040: 204a 7573 7420 6368 616e 6765 2074 6865 Just change the │ │ │ │ │ +00015050: 2076 6965 7720 7472 616e 7366 6f72 6d0a view transform. │ │ │ │ │ +00015060: 746f 0a20 2070 7574 207b 2076 6965 7728 to. put { view( │ │ │ │ │ +00015070: 2865 7965 292c 2028 6c6f 6f6b 5f61 7429 (eye), (look_at) │ │ │ │ │ +00015080: 2920 7468 656e 2070 6572 7370 6563 7469 ) then perspecti │ │ │ │ │ +00015090: 7665 2839 2920 7d20 7b20 2e2e 2e0a 616e ve(9) } { ....an │ │ │ │ │ +000150a0: 6420 7072 6f64 7563 6520 7468 6973 2e0a d produce this.. │ │ │ │ │ +000150b0: 0a00 085b 696d 6167 6520 7372 633d 2265 ...[image src="e │ │ │ │ │ +000150c0: 7831 3930 2e70 6e67 2220 7465 7874 3d22 x190.png" text=" │ │ │ │ │ +000150d0: 496d 6167 6520 6578 3139 3020 6f6d 6974 Image ex190 omit │ │ │ │ │ +000150e0: 7465 6420 696e 2074 6578 7420 7665 7273 ted in text vers │ │ │ │ │ +000150f0: 696f 6e20 6f66 2074 6869 7320 646f 6375 ion of this docu │ │ │ │ │ +00015100: 6d65 6e74 2e22 0008 5d0a 0a1f 0a46 696c ment."..]....Fil │ │ │ │ │ +00015110: 653a 2073 6b65 7463 682e 696e 666f 2c20 e: sketch.info, │ │ │ │ │ +00015120: 204e 6f64 653a 2041 2074 6563 686e 6963 Node: A technic │ │ │ │ │ +00015130: 616c 2064 7261 7769 6e67 2c20 204e 6578 al drawing, Nex │ │ │ │ │ +00015140: 743a 2041 2068 6965 7261 7263 6869 6361 t: A hierarchica │ │ │ │ │ +00015150: 6c20 6d6f 6465 6c2c 2020 5072 6576 3a20 l model, Prev: │ │ │ │ │ +00015160: 4f76 6572 7669 6577 2c20 2055 703a 2042 Overview, Up: B │ │ │ │ │ +00015170: 7569 6c64 696e 6720 6120 6472 6177 696e uilding a drawin │ │ │ │ │ +00015180: 670a 0a34 2e32 2041 2074 6563 686e 6963 g..4.2 A technic │ │ │ │ │ +00015190: 616c 2064 7261 7769 6e67 0a3d 3d3d 3d3d al drawing.===== │ │ │ │ │ +000151a0: 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d 3d3d ================ │ │ │ │ │ +000151b0: 3d3d 0a0a 4c65 7427 7320 6c6f 6f6b 2061 ==..Let's look a │ │ │ │ │ +000151c0: 7420 6120 6472 6177 696e 6720 7468 6174 t a drawing that │ │ │ │ │ +000151d0: 2072 6570 7265 7365 6e74 7320 7468 6520 represents the │ │ │ │ │ +000151e0: 6b69 6e64 206f 6620 7072 6f62 6c65 6d20 kind of problem │ │ │ │ │ +000151f0: e280 9873 6b65 7463 68e2 8099 2077 6173 ...sketch... was │ │ │ │ │ +00015200: 0a6d 6561 6e74 2074 6f20 736f 6c76 652d .meant to solve- │ │ │ │ │ +00015210: 2d61 2070 6169 7220 6f66 2074 6578 7462 -a pair of textb │ │ │ │ │ +00015220: 6f6f 6b20 6669 6775 7265 7320 7265 6761 ook figures rega │ │ │ │ │ +00015230: 7264 696e 6720 6120 706f 6c79 676f 6e61 rding a polygona │ │ │ │ │ +00015240: 6c0a 6170 7072 6f78 696d 6174 696f 6e20 l.approximation │ │ │ │ │ +00015250: 6f66 2061 2074 7275 6e63 6174 6564 2063 of a truncated c │ │ │ │ │ +00015260: 6f6e 652e 2020 4865 7265 2061 7265 2074 one. Here are t │ │ │ │ │ +00015270: 6865 2070 6963 7475 7265 7320 7765 2077 he pictures we w │ │ │ │ │ +00015280: 696c 6c0a 7072 6f64 7563 652e 0a0a 0008 ill.produce..... │ │ │ │ │ +00015290: 5b69 6d61 6765 2073 7263 3d22 6578 3235 [image src="ex25 │ │ │ │ │ +000152a0: 302e 706e 6722 2074 6578 743d 2249 6d61 0.png" text="Ima │ │ │ │ │ +000152b0: 6765 2065 7832 3530 206f 6d69 7474 6564 ge ex250 omitted │ │ │ │ │ +000152c0: 2069 6e20 7465 7874 2076 6572 7369 6f6e in text version │ │ │ │ │ +000152d0: 206f 6620 7468 6973 2064 6f63 756d 656e of this documen │ │ │ │ │ +000152e0: 742e 2200 085d 2020 2020 2000 085b 696d t."..] ..[im │ │ │ │ │ +000152f0: 6167 6520 7372 633d 2265 7832 3630 2e70 age src="ex260.p │ │ │ │ │ +00015300: 6e67 2220 7465 7874 3d22 496d 6167 6520 ng" text="Image │ │ │ │ │ +00015310: 6578 3236 3020 6f6d 6974 7465 6420 696e ex260 omitted in │ │ │ │ │ +00015320: 2074 6578 7420 7665 7273 696f 6e20 6f66 text version of │ │ │ │ │ +00015330: 2074 6869 7320 646f 6375 6d65 6e74 2e22 this document." │ │ │ │ │ +00015340: 0008 5d0a 0a20 2020 5468 6520 636f 6e65 ..].. The cone │ │ │ │ │ +00015350: 2073 6861 7065 2069 7320 6a75 7374 2061 shape is just a │ │ │ │ │ +00015360: 2073 7765 7074 206c 696e 6520 7769 7468 swept line with │ │ │ │ │ +00015370: 206e 6f20 636c 6f73 7572 6520 7461 6720 no closure tag │ │ │ │ │ +00015380: 616e 6420 6375 6c6c 696e 670a 7475 726e and culling.turn │ │ │ │ │ +00015390: 6564 206f 6666 2e20 2042 6567 696e 2062 ed off. Begin b │ │ │ │ │ +000153a0: 7920 7365 7474 696e 6720 7570 2073 6f6d y setting up som │ │ │ │ │ +000153b0: 6520 7573 6566 756c 2063 6f6e 7374 616e e useful constan │ │ │ │ │ +000153c0: 7473 2e0a 2020 6465 6620 4f20 2830 2c30 ts.. def O (0,0 │ │ │ │ │ +000153d0: 2c30 2920 6465 6620 4920 5b31 2c30 2c30 ,0) def I [1,0,0 │ │ │ │ │ +000153e0: 5d20 6465 6620 4a20 5b30 2c31 2c30 5d20 ] def J [0,1,0] │ │ │ │ │ +000153f0: 6465 6620 4b20 5b30 2c30 2c31 5d0a 2020 def K [0,0,1]. │ │ │ │ │ +00015400: 6465 6620 7030 2028 312c 3229 2064 6566 def p0 (1,2) def │ │ │ │ │ +00015410: 2070 3120 2831 2e35 2c30 2920 6465 6620 p1 (1.5,0) def │ │ │ │ │ +00015420: 4e20 380a 2020 6465 6620 7365 675f 726f N 8. def seg_ro │ │ │ │ │ +00015430: 7420 726f 7461 7465 2833 3630 202f 204e t rotate(360 / N │ │ │ │ │ +00015440: 2c20 5b4a 5d29 0a54 6865 2070 6f69 6e74 , [J]).The point │ │ │ │ │ +00015450: 7320 e280 9870 30e2 8099 2061 6e64 20e2 s ...p0... and . │ │ │ │ │ +00015460: 8098 7031 e280 9920 6172 6520 7468 6520 ..p1... are the │ │ │ │ │ +00015470: 656e 6420 706f 696e 7473 206f 6620 7468 end points of th │ │ │ │ │ +00015480: 6520 6c69 6e65 2074 6f20 6265 2073 7765 e line to be swe │ │ │ │ │ +00015490: 7074 2e0a 5468 6520 6465 6669 6e69 7469 pt..The definiti │ │ │ │ │ +000154a0: 6f6e 20e2 8098 7365 675f 726f 74e2 8099 on ...seg_rot... │ │ │ │ │ +000154b0: 2069 7320 7468 6520 7377 6565 7020 7472 is the sweep tr │ │ │ │ │ +000154c0: 616e 7366 6f72 6d61 7469 6f6e 2e20 2057 ansformation. W │ │ │ │ │ +000154d0: 6974 6820 7468 6573 652c 2074 6865 0a63 ith these, the.c │ │ │ │ │ +000154e0: 6f6e 6520 6974 7365 6c66 2069 7320 7369 one itself is si │ │ │ │ │ +000154f0: 6d70 6c65 2e0a 2020 7377 6565 705b 6375 mple.. sweep[cu │ │ │ │ │ +00015500: 6c6c 3d66 616c 7365 5d20 7b20 4e2c 205b ll=false] { N, [ │ │ │ │ │ +00015510: 5b73 6567 5f72 6f74 5d5d 207d 206c 696e [seg_rot]] } lin │ │ │ │ │ +00015520: 6528 7030 2928 7031 290a 0a20 2020 5468 e(p0)(p1).. Th │ │ │ │ │ +00015530: 6520 6178 6573 2061 7265 206e 6578 7420 e axes are next │ │ │ │ │ +00015540: 616e 6420 696e 636c 7564 6520 616e 2069 and include an i │ │ │ │ │ +00015550: 6e74 6572 6573 696e 6720 7472 6963 6b20 nteresing trick │ │ │ │ │ +00015560: 7468 6174 2073 686f 7773 2074 6865 0a68 that shows the.h │ │ │ │ │ +00015570: 6964 6465 6e20 7061 7274 7320 6173 2064 idden parts as d │ │ │ │ │ +00015580: 6f74 7465 6420 6c69 6e65 732e 2020 5468 otted lines. Th │ │ │ │ │ +00015590: 6520 7365 6372 6574 2069 7320 6472 6177 e secret is draw │ │ │ │ │ +000155a0: 2074 6865 2061 7865 7320 7477 6963 652d the axes twice- │ │ │ │ │ +000155b0: 2d73 6f6c 6964 0a6c 696e 6573 2077 6974 -solid.lines wit │ │ │ │ │ +000155c0: 6820 7468 6520 6e6f 726d 616c 2068 6964 h the normal hid │ │ │ │ │ +000155d0: 6465 6e20 7375 7266 6163 6520 616c 676f den surface algo │ │ │ │ │ +000155e0: 7269 7468 6d20 696e 2065 6666 6563 742c rithm in effect, │ │ │ │ │ +000155f0: 2061 6e64 2074 6865 6e0a 646f 7474 6564 and then.dotted │ │ │ │ │ +00015600: 2077 6974 6820 7468 6520 6f70 7469 6f6e with the option │ │ │ │ │ +00015610: 20e2 8098 6c61 793d 6f76 6572 e280 9920 ...lay=over... │ │ │ │ │ +00015620: 736f 2074 6861 7420 6e6f 2070 6f6c 7967 so that no polyg │ │ │ │ │ +00015630: 6f6e 7320 6361 6e20 6869 6465 2074 6865 ons can hide the │ │ │ │ │ +00015640: 6d2e 0a20 2064 6566 2061 7820 2864 782c m.. def ax (dx, │ │ │ │ │ +00015650: 302c 3029 2025 2074 6970 7320 6f66 2074 0,0) % tips of t │ │ │ │ │ +00015660: 6865 2061 7865 730a 2020 6465 6620 6179 he axes. def ay │ │ │ │ │ +00015670: 2028 302c 6479 2c30 290a 2020 6465 6620 (0,dy,0). def │ │ │ │ │ +00015680: 617a 2028 302c 302c 647a 290a 2020 6c69 az (0,0,dz). li │ │ │ │ │ +00015690: 6e65 5b61 7272 6f77 733d 3c2d 3e2c 6c69 ne[arrows=<->,li │ │ │ │ │ +000156a0: 6e65 7769 6474 683d 2e34 7074 5d28 6178 newidth=.4pt](ax │ │ │ │ │ +000156b0: 2928 4f29 2861 7929 0a20 206c 696e 655b )(O)(ay). line[ │ │ │ │ │ +000156c0: 6172 726f 7773 3d2d 3e2c 6c69 6e65 7769 arrows=->,linewi │ │ │ │ │ +000156d0: 6474 683d 2e34 7074 5d28 4f29 2861 7a29 dth=.4pt](O)(az) │ │ │ │ │ +000156e0: 0a20 2025 2072 6570 6561 7420 646f 7474 . % repeat dott │ │ │ │ │ +000156f0: 6564 2061 7320 616e 206f 7665 726c 6179 ed as an overlay │ │ │ │ │ +00015700: 2074 6f20 6869 6e74 2061 7420 7468 6520 to hint at the │ │ │ │ │ +00015710: 6869 6464 656e 206c 696e 6573 0a20 206c hidden lines. l │ │ │ │ │ +00015720: 696e 655b 6c61 793d 6f76 6572 2c6c 696e ine[lay=over,lin │ │ │ │ │ +00015730: 6573 7479 6c65 3d64 6f74 7465 642c 6c69 estyle=dotted,li │ │ │ │ │ +00015740: 6e65 7769 6474 683d 2e34 7074 5d28 6178 newidth=.4pt](ax │ │ │ │ │ +00015750: 2928 4f29 2861 7929 0a20 206c 696e 655b )(O)(ay). line[ │ │ │ │ │ +00015760: 6c61 793d 6f76 6572 2c6c 696e 6573 7479 lay=over,linesty │ │ │ │ │ +00015770: 6c65 3d64 6f74 7465 642c 6c69 6e65 7769 le=dotted,linewi │ │ │ │ │ +00015780: 6474 683d 2e34 7074 5d28 4f29 2861 7a29 dth=.4pt](O)(az) │ │ │ │ │ +00015790: 0a20 2073 7065 6369 616c 7c5c 666f 6f74 . special|\foot │ │ │ │ │ +000157a0: 6e6f 7465 7369 7a65 0a20 2020 2020 2020 notesize. │ │ │ │ │ +000157b0: 2020 205c 7570 7574 5b64 5d23 317b 2478 \uput[d]#1{$x │ │ │ │ │ +000157c0: 247d 5c75 7075 745b 755d 2332 7b24 7924 $}\uput[u]#2{$y$ │ │ │ │ │ +000157d0: 7d5c 7570 7574 5b6c 5d23 337b 247a 247d }\uput[l]#3{$z$} │ │ │ │ │ +000157e0: 7c0a 2020 2020 2861 7829 2861 7929 2861 |. (ax)(ay)(a │ │ │ │ │ +000157f0: 7a29 0a54 6865 206c 6162 656c 7320 6172 z).The labels ar │ │ │ │ │ +00015800: 6520 6170 706c 6965 6420 7769 7468 20e2 e applied with . │ │ │ │ │ +00015810: 8098 5053 5472 6963 6b73 e280 9920 7370 ..PSTricks... sp │ │ │ │ │ +00015820: 6563 6961 6c20 6f62 6a65 6374 7320 6173 ecial objects as │ │ │ │ │ +00015830: 2075 7375 616c 2e0a 0a20 2020 466f 7220 usual... For │ │ │ │ │ +00015840: 7468 6520 6865 6967 6874 2064 696d 656e the height dimen │ │ │ │ │ +00015850: 7369 6f6e 206d 6172 6b2c 2074 6865 2070 sion mark, the p │ │ │ │ │ +00015860: 6f77 6572 206f 6620 6166 6669 6e65 2061 ower of affine a │ │ │ │ │ +00015870: 7269 7468 6574 6963 2069 7320 7665 7279 rithetic is very │ │ │ │ │ +00015880: 0a68 656c 7066 756c 2e0a 2020 6465 6620 .helpful.. def │ │ │ │ │ +00015890: 6864 696d 5f72 6566 2075 6e69 7428 2870 hdim_ref unit((p │ │ │ │ │ +000158a0: 3129 202d 2028 4f29 2920 7468 656e 205b 1) - (O)) then [ │ │ │ │ │ +000158b0: 5b73 6567 5f72 6f74 5d5d 5e32 0a20 2064 [seg_rot]]^2. d │ │ │ │ │ +000158c0: 6566 2063 3020 2870 3029 2074 6865 6e20 ef c0 (p0) then │ │ │ │ │ +000158d0: 7363 616c 6528 5b4a 5d29 0a20 2064 6566 scale([J]). def │ │ │ │ │ +000158e0: 2068 3030 2028 6330 2920 2b20 312e 3120 h00 (c0) + 1.1 │ │ │ │ │ +000158f0: 2a20 5b68 6469 6d5f 7265 665d 0a20 2064 * [hdim_ref]. d │ │ │ │ │ +00015900: 6566 2068 3031 2028 6330 2920 2b20 312e ef h01 (c0) + 1. │ │ │ │ │ +00015910: 3920 2a20 5b68 6469 6d5f 7265 665d 0a20 9 * [hdim_ref]. │ │ │ │ │ +00015920: 2064 6566 2068 3032 2028 6330 2920 2b20 def h02 (c0) + │ │ │ │ │ +00015930: 312e 3820 2a20 5b68 6469 6d5f 7265 665d 1.8 * [hdim_ref] │ │ │ │ │ +00015940: 0a20 206c 696e 6528 6830 3029 2868 3031 . line(h00)(h01 │ │ │ │ │ +00015950: 290a 2020 6465 6620 6831 3020 284f 2920 ). def h10 (O) │ │ │ │ │ +00015960: 2b20 312e 3620 2a20 5b68 6469 6d5f 7265 + 1.6 * [hdim_re │ │ │ │ │ +00015970: 665d 0a20 2064 6566 2068 3131 2028 4f29 f]. def h11 (O) │ │ │ │ │ +00015980: 202b 2031 2e39 202a 205b 6864 696d 5f72 + 1.9 * [hdim_r │ │ │ │ │ +00015990: 6566 5d0a 2020 6465 6620 6831 3220 284f ef]. def h12 (O │ │ │ │ │ +000159a0: 2920 2b20 312e 3820 2a20 5b68 6469 6d5f ) + 1.8 * [hdim_ │ │ │ │ │ +000159b0: 7265 665d 0a20 206c 696e 6528 6831 3029 ref]. line(h10) │ │ │ │ │ +000159c0: 2868 3131 290a 2020 6c69 6e65 5b61 7272 (h11). line[arr │ │ │ │ │ +000159d0: 6f77 733d 3c2d 3e5d 2868 3032 2928 6831 ows=<->](h02)(h1 │ │ │ │ │ +000159e0: 3229 0a20 2064 6566 2068 6d32 2028 2868 2). def hm2 ((h │ │ │ │ │ +000159f0: 3032 2920 2d20 284f 2920 2b20 2868 3132 02) - (O) + (h12 │ │ │ │ │ +00015a00: 2920 2d20 284f 2929 202f 2032 202b 2028 ) - (O)) / 2 + ( │ │ │ │ │ +00015a10: 4f29 0a20 2073 7065 6369 616c 7c5c 666f O). special|\fo │ │ │ │ │ +00015a20: 6f74 6e6f 7465 7369 7a65 5c72 7075 742a otnotesize\rput* │ │ │ │ │ +00015a30: 2331 7b24 6824 7d7c 2868 6d32 290a 2020 #1{$h$}|(hm2). │ │ │ │ │ +00015a40: 2054 6865 2067 656e 6572 616c 2069 6465 The general ide │ │ │ │ │ +00015a50: 6120 656d 706c 6f79 6564 2068 6572 6520 a employed here │ │ │ │ │ +00015a60: 6973 2074 6f20 636f 6d70 7574 6520 6120 is to compute a │ │ │ │ │ +00015a70: 756e 6974 2022 7265 6665 7265 6e63 650a unit "reference. │ │ │ │ │ +00015a80: 7665 6374 6f72 2220 7061 7261 6c6c 656c vector" parallel │ │ │ │ │ +00015a90: 2074 6f20 7468 6520 787a 2d70 6c61 6e65 to the xz-plane │ │ │ │ │ +00015aa0: 2069 6e20 7468 6520 6465 7369 7265 6420 in the desired │ │ │ │ │ +00015ab0: 6469 7265 6374 696f 6e20 6f66 2074 6865 direction of the │ │ │ │ │ +00015ac0: 0a64 696d 656e 7369 6f6e 2066 726f 6d20 .dimension from │ │ │ │ │ +00015ad0: 7468 6520 6f72 6967 696e 2e20 2054 6865 the origin. The │ │ │ │ │ +00015ae0: 2074 7261 6e73 666f 726d 6174 696f 6e20 transformation │ │ │ │ │ +00015af0: e280 985b 5b73 6567 5f72 6f74 5d5d 5e32 ...[[seg_rot]]^2 │ │ │ │ │ +00015b00: e280 9920 726f 7461 7465 730a 7477 6f20 ... rotates.two │ │ │ │ │ +00015b10: 7365 676d 656e 7473 2061 626f 7574 2074 segments about t │ │ │ │ │ +00015b20: 6865 2079 2d61 7869 732e 2020 5768 656e he y-axis. When │ │ │ │ │ +00015b30: 2061 7070 6c69 6564 2074 6f20 e280 9828 applied to ...( │ │ │ │ │ +00015b40: 7031 2920 2d20 284f 29e2 8099 2c20 7468 p1) - (O)..., th │ │ │ │ │ +00015b50: 650a 7265 7375 6c74 696e 6720 7665 6374 e.resulting vect │ │ │ │ │ +00015b60: 6f72 2070 6f69 6e74 7320 746f 2074 6865 or points to the │ │ │ │ │ +00015b70: 2072 6967 6874 2061 7320 7368 6f77 6e2e right as shown. │ │ │ │ │ +00015b80: 2020 496e 2074 6869 7320 6d61 6e6e 6572 In this manner │ │ │ │ │ +00015b90: 2c20 7765 2063 616e 0a70 6963 6b20 616e , we can.pick an │ │ │ │ │ +00015ba0: 7920 7665 7274 6578 2061 7320 7468 6520 y vertex as the │ │ │ │ │ +00015bb0: 6c6f 6361 7469 6f6e 206f 6620 7468 6520 location of the │ │ │ │ │ +00015bc0: 6865 6967 6874 2064 696d 656e 7369 6f6e height dimension │ │ │ │ │ +00015bd0: 206c 696e 6573 2062 7920 7661 7279 696e lines by varyin │ │ │ │ │ +00015be0: 670a 7468 6520 6578 706f 6e65 6e74 206f g.the exponent o │ │ │ │ │ +00015bf0: 6620 e280 985b 5b73 6567 5f72 6f74 5d5d f ...[[seg_rot]] │ │ │ │ │ +00015c00: e280 992e 2020 5468 6973 2069 7320 6f6e .... This is on │ │ │ │ │ +00015c10: 6c79 206f 6e65 206f 6620 6d61 6e79 2070 ly one of many p │ │ │ │ │ +00015c20: 6f73 7369 626c 650a 7374 7261 7465 6769 ossible.strategi │ │ │ │ │ +00015c30: 6573 2e0a 0a20 2020 5468 6520 636f 6d70 es... The comp │ │ │ │ │ +00015c40: 7574 6174 696f 6e20 6f66 20e2 8098 686d utation of ...hm │ │ │ │ │ +00015c50: 32e2 8099 2069 7320 6120 7573 6566 756c 2... is a useful │ │ │ │ │ +00015c60: 2069 6469 6f6d 2066 6f72 2066 696e 6469 idiom for findi │ │ │ │ │ +00015c70: 6e67 2074 6865 2063 656e 7472 6f69 640a ng the centroid. │ │ │ │ │ +00015c80: 6f66 2061 2073 6574 206f 6620 706f 696e of a set of poin │ │ │ │ │ +00015c90: 7473 2e0a 0a20 2020 5468 6520 7477 6f20 ts... The two │ │ │ │ │ +00015ca0: 7261 6469 7573 206d 6172 6b73 2061 7265 radius marks are │ │ │ │ │ +00015cb0: 2064 6f6e 6520 7369 6d69 6c61 726c 792c done similarly, │ │ │ │ │ +00015cc0: 2073 6f20 7765 2070 7265 7365 6e74 2074 so we present t │ │ │ │ │ +00015cd0: 6865 2063 6f64 650a 7769 7468 6f75 7420 he code.without │ │ │ │ │ +00015ce0: 636f 6d6d 656e 742e 0a20 2025 2072 6164 comment.. % rad │ │ │ │ │ +00015cf0: 6975 7320 6d65 6173 7572 656d 656e 7420 ius measurement │ │ │ │ │ +00015d00: 6d61 726b 730a 2020 6465 6620 6761 7020 marks. def gap │ │ │ │ │ +00015d10: 5b30 2c2e 322c 305d 2020 2520 7573 6564 [0,.2,0] % used │ │ │ │ │ +00015d20: 2074 6f20 6372 6561 7465 2073 6d61 6c6c to create small │ │ │ │ │ +00015d30: 2076 6572 7469 6361 6c20 6761 7073 0a0a vertical gaps.. │ │ │ │ │ +00015d40: 2020 2520 6669 7273 7420 7231 0a20 2064 % first r1. d │ │ │ │ │ +00015d50: 6566 2075 7031 205b 302c 332e 312c 305d ef up1 [0,3.1,0] │ │ │ │ │ +00015d60: 2025 2074 6963 6b20 7269 7365 7320 6162 % tick rises ab │ │ │ │ │ +00015d70: 6f76 6520 6469 6d65 6e73 696f 6e20 6120 ove dimension a │ │ │ │ │ +00015d80: 6c69 7474 6c65 0a20 2064 6566 2072 3120 little. def r1 │ │ │ │ │ +00015d90: 2828 7031 2920 7468 656e 205b 5b73 6567 ((p1) then [[seg │ │ │ │ │ +00015da0: 5f72 6f74 5d5d 5e2d 3229 202b 205b 7570 _rot]]^-2) + [up │ │ │ │ │ +00015db0: 315d 0a20 2064 6566 2072 3163 2028 7231 1]. def r1c (r1 │ │ │ │ │ +00015dc0: 2920 7468 656e 2073 6361 6c65 285b 4a5d ) then scale([J] │ │ │ │ │ +00015dd0: 290a 2020 6465 6620 7231 7420 2872 3129 ). def r1t (r1) │ │ │ │ │ +00015de0: 202b 205b 6761 705d 0a20 2064 6566 2072 + [gap]. def r │ │ │ │ │ +00015df0: 3162 2028 2872 3174 2920 7468 656e 2073 1b ((r1t) then s │ │ │ │ │ +00015e00: 6361 6c65 285b 312c 302c 315d 2929 202b cale([1,0,1])) + │ │ │ │ │ +00015e10: 205b 6761 705d 0a20 206c 696e 655b 6172 [gap]. line[ar │ │ │ │ │ +00015e20: 726f 7773 3d3c 2d3e 5d28 7231 6329 2872 rows=<->](r1c)(r │ │ │ │ │ +00015e30: 3129 2020 2520 6469 6d65 6e73 696f 6e20 1) % dimension │ │ │ │ │ +00015e40: 6c69 6e65 0a20 206c 696e 6528 7231 6229 line. line(r1b) │ │ │ │ │ +00015e50: 2872 3174 2920 2020 2020 2020 2020 2020 (r1t) │ │ │ │ │ +00015e60: 2020 2520 7469 636b 0a20 2064 6566 2072 % tick. def r │ │ │ │ │ +00015e70: 316d 2028 2872 3129 202d 2028 4f29 202b 1m ((r1) - (O) + │ │ │ │ │ +00015e80: 2028 7231 6329 202d 2028 4f29 2920 2f20 (r1c) - (O)) / │ │ │ │ │ +00015e90: 3220 2b20 284f 2920 2520 6c61 6265 6c20 2 + (O) % label │ │ │ │ │ +00015ea0: 706f 7369 7469 6f6e 0a20 2073 7065 6369 position. speci │ │ │ │ │ +00015eb0: 616c 207c 5c66 6f6f 746e 6f74 6573 697a al |\footnotesiz │ │ │ │ │ +00015ec0: 655c 7270 7574 2a23 317b 2472 5f31 247d e\rput*#1{$r_1$} │ │ │ │ │ +00015ed0: 7c28 7231 6d29 2020 2520 6c61 6265 6c0a |(r1m) % label. │ │ │ │ │ +00015ee0: 0a20 2025 2073 616d 6520 6472 696c 6c20 . % same drill │ │ │ │ │ +00015ef0: 666f 7220 7230 2c20 6275 7420 6d75 7374 for r0, but must │ │ │ │ │ +00015f00: 2070 726f 6a65 6374 2064 6f77 6e20 6669 project down fi │ │ │ │ │ +00015f10: 7273 740a 2020 6465 6620 7570 3020 5b30 rst. def up0 [0 │ │ │ │ │ +00015f20: 2c32 2e37 2c30 5d0a 2020 6465 6620 7230 ,2.7,0]. def r0 │ │ │ │ │ +00015f30: 2028 2870 3029 2074 6865 6e20 7363 616c ((p0) then scal │ │ │ │ │ +00015f40: 6528 5b31 2c30 2c31 5d29 2074 6865 6e20 e([1,0,1]) then │ │ │ │ │ +00015f50: 5b5b 7365 675f 726f 745d 5d5e 2d32 2920 [[seg_rot]]^-2) │ │ │ │ │ +00015f60: 2b20 5b75 7030 5d0a 2020 6465 6620 7230 + [up0]. def r0 │ │ │ │ │ +00015f70: 6320 2872 3029 2074 6865 6e20 7363 616c c (r0) then scal │ │ │ │ │ +00015f80: 6528 5b4a 5d29 0a20 2064 6566 2072 3074 e([J]). def r0t │ │ │ │ │ +00015f90: 2028 7230 2920 2b20 5b67 6170 5d0a 2020 (r0) + [gap]. │ │ │ │ │ +00015fa0: 6465 6620 7230 6220 2828 7030 2920 7468 def r0b ((p0) th │ │ │ │ │ +00015fb0: 656e 205b 5b73 6567 5f72 6f74 5d5d 5e2d en [[seg_rot]]^- │ │ │ │ │ +00015fc0: 3229 202b 205b 6761 705d 0a20 206c 696e 2) + [gap]. lin │ │ │ │ │ +00015fd0: 655b 6172 726f 7773 3d3c 2d3e 5d28 7230 e[arrows=<->](r0 │ │ │ │ │ +00015fe0: 6329 2872 3029 0a20 206c 696e 6528 7230 c)(r0). line(r0 │ │ │ │ │ +00015ff0: 6229 2872 3074 290a 2020 6465 6620 7230 b)(r0t). def r0 │ │ │ │ │ +00016000: 6d20 2828 7230 2920 2d20 284f 2920 2b20 m ((r0) - (O) + │ │ │ │ │ +00016010: 2872 3063 2920 2d20 284f 2929 202f 2032 (r0c) - (O)) / 2 │ │ │ │ │ +00016020: 202b 2028 4f29 0a20 2073 7065 6369 616c + (O). special │ │ │ │ │ +00016030: 207c 5c66 6f6f 746e 6f74 6573 697a 655c |\footnotesize\ │ │ │ │ │ +00016040: 7270 7574 2a23 317b 2472 5f30 247d 7c28 rput*#1{$r_0$}|( │ │ │ │ │ +00016050: 7230 6d29 0a0a 2020 2054 6865 2073 6563 r0m).. The sec │ │ │ │ │ +00016060: 6f6e 6420 6472 6177 696e 6720 7573 6573 ond drawing uses │ │ │ │ │ +00016070: 2074 6865 2073 616d 6520 7465 6368 6e69 the same techni │ │ │ │ │ +00016080: 7175 6573 2e20 204f 6e6c 7920 7468 6520 ques. Only the │ │ │ │ │ +00016090: 6d65 7468 6f64 2066 6f72 0a64 7261 7769 method for.drawi │ │ │ │ │ +000160a0: 6e67 2074 6865 2065 6c6c 6970 7469 6361 ng the elliptica │ │ │ │ │ +000160b0: 6c20 6172 6320 6973 206e 6577 2e20 2048 l arc is new. H │ │ │ │ │ +000160c0: 6572 6520 6973 2074 6865 2063 6f64 652e ere is the code. │ │ │ │ │ +000160d0: 0a20 2064 6566 206d 6964 2028 2870 3030 . def mid ((p00 │ │ │ │ │ +000160e0: 292d 284f 292b 2870 3130 292d 284f 292b )-(O)+(p10)-(O)+ │ │ │ │ │ +000160f0: 2870 3131 292d 284f 292b 2870 3031 292d (p11)-(O)+(p01)- │ │ │ │ │ +00016100: 284f 2929 2f34 2b28 4f29 0a20 2073 7065 (O))/4+(O). spe │ │ │ │ │ +00016110: 6369 616c 7c5c 7270 7574 2331 7b5c 7073 cial|\rput#1{\ps │ │ │ │ │ +00016120: 6375 7374 6f6d 7b0a 2020 2020 5c73 6361 custom{. \sca │ │ │ │ │ +00016130: 6c65 7b31 2031 2e33 7d0a 2020 2020 5c70 le{1 1.3}. \p │ │ │ │ │ +00016140: 7361 7263 5b61 7272 6f77 6c65 6e67 7468 sarc[arrowlength │ │ │ │ │ +00016150: 3d2e 355d 7b2d 3e7d 7b2e 3235 7d7b 2d36 =.5]{->}{.25}{-6 │ │ │ │ │ +00016160: 307d 7b32 3430 7d7d 7d7c 0a20 2020 205b 0}{240}}}|. [ │ │ │ │ │ +00016170: 6c61 793d 6f76 6572 5d28 6d69 6429 0a57 lay=over](mid).W │ │ │ │ │ +00016180: 6520 636f 756c 6420 6861 7665 2073 7765 e could have swe │ │ │ │ │ +00016190: 7074 2061 2070 6f69 6e74 2074 6f20 6d61 pt a point to ma │ │ │ │ │ +000161a0: 6b65 2074 6865 2061 7263 2077 6974 6820 ke the arc with │ │ │ │ │ +000161b0: e280 9873 6b65 7463 68e2 8099 2c20 6275 ...sketch..., bu │ │ │ │ │ +000161c0: 7420 7573 696e 6720 610a e280 9850 5354 t using a....PST │ │ │ │ │ +000161d0: 7269 636b 73e2 8099 2063 7573 746f 6d20 ricks... custom │ │ │ │ │ +000161e0: 6772 6170 6869 6320 7761 7320 7369 6d70 graphic was simp │ │ │ │ │ +000161f0: 6c65 722e 2020 4167 6169 6e20 7765 2063 ler. Again we c │ │ │ │ │ +00016200: 6f6d 7075 7465 6420 7468 6520 6365 6e74 omputed the cent │ │ │ │ │ +00016210: 726f 6964 0a6f 6620 7468 6520 7175 6164 roid.of the quad │ │ │ │ │ +00016220: 7269 6c61 7465 7261 6c20 6279 2061 7665 rilateral by ave │ │ │ │ │ +00016230: 7261 6769 6e67 2070 6f69 6e74 732e 2020 raging points. │ │ │ │ │ +00016240: 4e6f 7465 2074 6861 7420 7363 616c 696e Note that scalin │ │ │ │ │ +00016250: 6720 696e 0a50 6f73 7473 6372 6970 7420 g in.Postscript │ │ │ │ │ +00016260: 6469 7374 6f72 7473 2074 6865 2061 7272 distorts the arr │ │ │ │ │ +00016270: 6f77 6865 6164 2c20 6275 7420 696e 2074 owhead, but in t │ │ │ │ │ +00016280: 6869 7320 6361 7365 2074 6865 2064 6973 his case the dis │ │ │ │ │ +00016290: 746f 7274 696f 6e0a 6163 7475 616c 6c79 tortion.actually │ │ │ │ │ +000162a0: 206c 6f6f 6b73 2062 6574 7465 7220 696e looks better in │ │ │ │ │ +000162b0: 2074 6865 2070 726f 6a65 6374 696f 6e20 the projection │ │ │ │ │ +000162c0: 6f66 2074 6865 2073 6c61 6e74 6564 2066 of the slanted f │ │ │ │ │ +000162d0: 6163 652e 2020 4120 e280 9873 6b65 7463 ace. A ...sketc │ │ │ │ │ +000162e0: 68e2 8099 0a61 7272 6f77 6865 6164 2077 h....arrowhead w │ │ │ │ │ +000162f0: 6f75 6c64 206e 6f74 2068 6176 6520 6265 ould not have be │ │ │ │ │ +00016300: 656e 2064 6973 746f 7274 6564 2e0a 0a20 en distorted... │ │ │ │ │ +00016310: 2020 5468 6520 636f 6d70 6c65 7465 2063 The complete c │ │ │ │ │ +00016320: 6f64 6520 666f 7220 7468 6973 2065 7861 ode for this exa │ │ │ │ │ +00016330: 6d70 6c65 2c20 7768 6963 6820 6472 6177 mple, which draw │ │ │ │ │ +00016340: 7320 6569 7468 6572 2066 6967 7572 650a s either figure. │ │ │ │ │ +00016350: 6465 7065 6e64 696e 6720 6f6e 2074 6865 depending on the │ │ │ │ │ +00016360: 2064 6566 696e 6974 696f 6e20 6f66 2074 definition of t │ │ │ │ │ +00016370: 6865 2074 6167 20e2 8098 3c6c 6162 656c he tag ...