diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..fa2f915 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,21 @@ +{ + // Use IntelliSense to learn about possible Node.js debug attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "Launch Program", + "program": "${workspaceRoot}/--inline", + "cwd": "${workspaceRoot}" + }, + { + "type": "node", + "request": "attach", + "name": "Attach to Process", + "port": 5858 + } + ] +} \ No newline at end of file diff --git a/README.md b/README.md old mode 100644 new mode 100755 index 5ca56be..742c448 --- a/README.md +++ b/README.md @@ -1,36 +1,26 @@ - -The objective of this assignment is to create an L System parser and generate interesting looking plants. Start by forking and then cloning this repository: [https://github.com/CIS700-Procedural-Graphics/Project3-LSystems](https://github.com/CIS700-Procedural-Graphics/Project3-LSystems) - # L-System Parser -lsystem.js contains classes for L-system, Rule, and LinkedList. Here’s our suggested structure: +lsystem.js contains classes for L-system, Rule, and LinkedList. **The Symbol Nodes/Linked List:** -Rather than representing our symbols as a string like in many L-system implementations, we prefer to use a linked list. This allows us to store additional information about each symbol at time of parsing (e.g. what iteration was this symbol added in?) Since we’re adding and replacing symbols at each iteration, we also save on the overhead of creating and destroying strings, since linked lists of course make it easy to add and remove nodes. You should write a Linked List class with Nodes that contain at least the following information: - -- The next node in the linked list -- The previous node in the linked list -- The grammar symbol at theis point in the overal string - -We also recommend that you write the following functions to interact with your linked list: - -- A function to symmetrically link two nodes together (e.g. Node A’s next is Node B, and Node B’s prev is Node A) -- A function to expand one of the symbol nodes of the linked list by replacing it with several new nodes. This function should look at the list of rules associated with the symbol in the linked list’s grammar dictionary, then generate a uniform random number between 0 and 1 in order to determine which of the Rules should be used to expand the symbol node. You will refer to a Rule’s probability and compare it to your random number in order to determine which Rule should be chosen. +The L-System Axiom, Grammar strings are represented as linked lists nodes. This helps when iterating through the linked list to replace with the appropriate replacement rule string. The Linked List structure is opted as Javascript re-creates a new string each time a copy or an append is to be made to the string. **Rules:** -These are containers for the preconditions, postconditions and probability of a single replacement operation. They should operate on a symbol node in your linked list. +These are containers for the preconditions, postconditions and probability of a single replacement operation. They operate on a symbol node in your linked list. + +The rules are selected on a probablity bases which is changable in the UI. Each symbol is changed during the parsing state based on the probablity of choosing the Rule to replace it with. The probablity is stored along with each rule and during execution a random number is generated to either apply or reject the symbol-rule swapping. **L-system:** -This is the parser, which will loop through your linked list of symbol nodes and apply rules at each iteration. +This is the parser, which loops through the linked list of symbol nodes and apply rules at each iteration. -Implement the following functions in L-System so that you can apply grammar rules to your axiom given some number of iterations. More details and implementation suggestions about functions can be found in the TODO comments +tThe following functions are implemented in the L-System so that you one can apply grammar rules to the axiom given some number of iterations. - `stringToLinkedList(input_string)` - `linkedListToString(linkedList)` -- `replaceNode(linkedList, node, replacementString)` +- `replaceNode(linkedList, node, grammar, iterations)` - `doIterations(num)` ## Turtle @@ -43,6 +33,12 @@ Implement the following functions in L-System so that you can apply grammar rule - In addition to operations for `[` and `]`, you must invent operations for any three symbols of your choosing. +## Symbols + +F- moves forward creating a cylinder +X- rotate turtle along Y-axis 90 degrees +A- include a fruit object in the scene + ## Interactivity diff --git a/geo/feather.obj b/geo/feather.obj new file mode 100755 index 0000000..c504681 --- /dev/null +++ b/geo/feather.obj @@ -0,0 +1,317 @@ +# This file uses centimeters as units for non-parametric coordinates. + +v 0.021840 0.007498 0.031870 +v 1.627541 -0.000403 0.014030 +v 0.020817 0.028495 -0.004365 +v 1.627544 0.024164 0.003509 +v 0.008561 0.008395 -0.025352 +v 1.627555 0.005486 -0.017680 +v 0.005514 -0.013343 -0.002028 +v 1.627554 -0.022364 -0.002045 +v 0.620937 -0.010772 -0.005879 +v 0.622123 0.005747 0.020990 +v 0.622031 0.021952 -0.006975 +v 0.621140 0.006113 -0.023702 +v 2.215028 -0.012329 -0.001152 +v 2.215755 -0.001528 0.005663 +v 2.214896 0.000799 -0.007448 +v 2.216814 0.009689 0.001213 +vt 0.375000 0.000000 +vt 0.625000 0.000000 +vt 0.375000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.375000 1.000000 +vt 0.625000 1.000000 +vt 0.875000 0.000000 +vt 0.875000 0.250000 +vt 0.125000 0.000000 +vt 0.125000 0.250000 +vt 0.440704 0.750000 +vt 0.440704 0.000000 +vt 0.440704 1.000000 +vt 0.440704 0.250000 +vt 0.440704 0.500000 +vt 0.625000 0.000000 +vt 0.875000 0.000000 +vt 0.875000 0.250000 +vt 0.625000 0.250000 +vn 0.011600 0.865261 0.501187 +vn 0.005248 0.773886 0.633303 +vn 0.005231 0.773619 0.633629 +vn 0.011600 0.865261 0.501187 +vn 0.004711 0.723113 -0.690714 +vn 0.004856 0.733407 -0.679773 +vn 0.004852 0.733106 -0.680097 +vn 0.004711 0.723113 -0.690714 +vn -0.001055 -0.729071 -0.684437 +vn -0.000225 -0.650684 -0.759349 +vn -0.000230 -0.651224 -0.758886 +vn -0.001055 -0.729071 -0.684437 +vn 0.006904 -0.852738 0.522293 +vn -0.000101 -0.795068 0.606521 +vn -0.000269 -0.793583 0.608461 +vn 0.006904 -0.852738 0.522293 +vn 0.994333 -0.072295 -0.077940 +vn 0.994333 -0.072295 -0.077940 +vn 0.994333 -0.072295 -0.077940 +vn 0.994333 -0.072295 -0.077940 +vn -0.912742 0.345987 0.217246 +vn -0.912741 0.345987 0.217246 +vn -0.912742 0.345987 0.217246 +vn -0.912741 0.345987 0.217246 +vn -0.001167 -0.698697 0.715417 +vn -0.001263 -0.699741 0.714396 +vn 0.003991 0.607615 0.794221 +vn 0.003936 0.608773 0.793334 +vn 0.008567 0.737733 -0.675038 +vn 0.008626 0.737706 -0.675067 +vn 0.003601 -0.559158 -0.829053 +vn 0.003633 -0.558773 -0.829312 +vn 0.009551 -0.572855 0.819601 +vn 0.009551 -0.572855 0.819601 +vn 0.010497 -0.471800 -0.881643 +vn 0.010497 -0.471800 -0.881643 +vn 0.016532 0.733988 -0.678962 +vn 0.016532 0.733988 -0.678961 +vn 0.013462 0.385565 0.922583 +vn 0.013462 0.385565 0.922583 +f 1/1/1 10/16/2 11/18/3 3/3/4 +f 3/3/5 11/18/6 12/19/7 5/5/8 +f 5/5/9 12/19/10 9/15/11 7/7/12 +f 7/7/13 9/15/14 10/17/15 1/9/16 +f 14/20/17 13/21/18 15/22/19 16/23/20 +f 7/13/21 1/1/22 3/3/23 5/14/24 +f 9/15/14 8/8/25 2/10/26 10/17/15 +f 11/18/3 10/16/2 2/2/27 4/4/28 +f 12/19/7 11/18/6 4/4/29 6/6/30 +f 9/15/11 12/19/10 6/6/31 8/8/32 +f 2/2/26 8/11/25 13/21/33 14/20/34 +f 8/11/32 6/12/31 15/22/35 13/21/36 +f 6/12/30 4/4/29 16/23/37 15/22/38 +f 4/4/28 2/2/27 14/20/39 16/23/40 +v 0.388143 -0.000000 0.081000 +v 0.667221 -0.000000 0.197440 +v 0.946608 -0.000000 0.192079 +v 1.818651 -0.000000 0.164215 +v 1.987145 -0.000000 0.113365 +v 2.339494 -0.000000 0.052713 +v 0.374465 -0.014336 0.006780 +v 0.681996 -0.014336 0.006780 +v 0.945831 -0.014336 0.006961 +v 1.856006 -0.014336 0.006221 +v 2.026244 -0.014336 0.006071 +v 2.419290 -0.004730 0.006529 +v 0.375323 0.000000 -0.047900 +v 0.675429 0.000000 -0.141401 +v 0.946002 0.000000 -0.163412 +v 1.883190 0.000000 -0.133212 +v 2.053084 0.000000 -0.132158 +v 2.407803 0.000000 -0.041616 +v 1.109235 -0.000000 0.157419 +v 1.127423 -0.014336 0.006531 +v 1.148529 0.000000 -0.153582 +v 0.388143 0.003354 0.081000 +v 0.667221 0.003354 0.197440 +v 0.681996 0.017690 0.006780 +v 0.374465 0.017690 0.006780 +v 0.946608 0.003354 0.192079 +v 0.945831 0.017690 0.006961 +v 1.109235 0.003354 0.157419 +v 1.127423 0.017690 0.006531 +v 1.818651 0.003354 0.164215 +v 1.987145 0.003354 0.113365 +v 2.026244 0.017690 0.006071 +v 1.856006 0.017690 0.006221 +v 2.339494 0.003354 0.052713 +v 2.419290 0.008084 0.006529 +v 0.675429 0.003354 -0.141401 +v 0.375323 0.003354 -0.047900 +v 0.946002 0.003354 -0.163412 +v 1.148529 0.003354 -0.153582 +v 2.053084 0.003354 -0.132158 +v 1.883190 0.003354 -0.133212 +v 2.407803 0.003354 -0.041616 +vt 0.000000 0.000000 +vt 0.200000 0.000000 +vt 0.400000 0.000000 +vt 0.600000 0.000000 +vt 0.800000 0.000000 +vt 1.000000 0.000000 +vt 0.000000 0.250000 +vt 0.200000 0.250000 +vt 0.400000 0.250000 +vt 0.600000 0.250000 +vt 0.800000 0.250000 +vt 1.000000 0.250000 +vt 0.000000 0.500000 +vt 0.200000 0.500000 +vt 0.400000 0.500000 +vt 0.600000 0.500000 +vt 0.800000 0.500000 +vt 1.000000 0.500000 +vt 0.433224 0.000000 +vt 0.433224 0.250000 +vt 0.433224 0.500000 +vt 0.000000 0.000000 +vt 0.200000 0.000000 +vt 0.200000 0.250000 +vt 0.000000 0.250000 +vt 0.400000 0.000000 +vt 0.400000 0.250000 +vt 0.433224 0.000000 +vt 0.433224 0.250000 +vt 0.600000 0.000000 +vt 0.800000 0.000000 +vt 0.800000 0.250000 +vt 0.600000 0.250000 +vt 1.000000 0.000000 +vt 1.000000 0.250000 +vt 0.200000 0.500000 +vt 0.000000 0.500000 +vt 0.400000 0.500000 +vt 0.433224 0.500000 +vt 0.800000 0.500000 +vt 0.600000 0.500000 +vt 1.000000 0.500000 +vt 0.000000 0.000000 +vt 0.200000 0.000000 +vt 0.000000 0.250000 +vt 0.400000 0.000000 +vt 0.433224 0.000000 +vt 0.600000 0.000000 +vt 0.800000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 0.250000 +vt 0.200000 0.500000 +vt 0.000000 0.500000 +vt 0.400000 0.500000 +vt 0.433224 0.500000 +vt 0.800000 0.500000 +vt 0.600000 0.500000 +vt 1.000000 0.500000 +vn -0.021340 0.993975 0.107507 +vn -0.007968 0.996045 0.088493 +vn -0.009534 0.999954 -0.000556 +vn -0.021551 0.999727 -0.009028 +vn 0.003338 0.996855 0.079171 +vn 0.001292 0.999998 -0.001352 +vn 0.001881 0.995883 0.090624 +vn 0.001375 0.999995 0.002737 +vn 0.001346 0.995535 0.094383 +vn 0.019635 0.992177 0.123289 +vn 0.017452 0.999824 0.006871 +vn 0.002077 0.999959 -0.008868 +vn 0.024195 0.989616 0.141683 +vn 0.024875 0.998735 -0.043697 +vn -0.010314 0.994073 -0.108221 +vn -0.021439 0.990014 -0.139326 +vn -0.001161 0.996106 -0.088156 +vn 0.001469 0.995639 -0.093282 +vn 0.015531 0.994781 -0.100842 +vn 0.001085 0.995315 -0.096685 +vn 0.024913 0.994705 -0.099708 +vn -0.021340 -0.993975 0.107507 +vn -0.021551 -0.999727 -0.009028 +vn -0.009534 -0.999954 -0.000556 +vn -0.007968 -0.996045 0.088493 +vn 0.001292 -0.999998 -0.001352 +vn 0.003338 -0.996855 0.079171 +vn 0.001375 -0.999995 0.002737 +vn 0.001881 -0.995883 0.090624 +vn 0.001346 -0.995535 0.094383 +vn 0.002077 -0.999959 -0.008868 +vn 0.017452 -0.999824 0.006871 +vn 0.019635 -0.992177 0.123289 +vn 0.024875 -0.998735 -0.043697 +vn 0.024195 -0.989616 0.141683 +vn -0.021439 -0.990014 -0.139326 +vn -0.010314 -0.994073 -0.108221 +vn -0.001161 -0.996106 -0.088156 +vn 0.001469 -0.995639 -0.093282 +vn 0.001085 -0.995315 -0.096685 +vn 0.015531 -0.994781 -0.100842 +vn 0.024913 -0.994705 -0.099708 +vn -0.385059 0.000000 0.922892 +vn -0.195078 0.000000 0.980788 +vn -0.195078 0.000000 0.980788 +vn -0.385059 0.000000 0.922892 +vn -0.994845 0.000000 0.101409 +vn -0.983440 0.000000 0.181234 +vn -0.983440 0.000000 0.181234 +vn -0.994845 0.000000 0.101409 +vn 0.090174 0.000000 0.995926 +vn 0.090174 0.000000 0.995926 +vn 0.031935 0.000000 0.999490 +vn 0.031935 0.000000 0.999490 +vn 0.050118 0.000000 0.998743 +vn 0.209337 0.000000 0.977844 +vn 0.209337 0.000000 0.977844 +vn 0.050118 0.000000 0.998743 +vn 0.303675 0.000000 0.952776 +vn 0.303675 0.000000 0.952776 +vn 0.500926 0.000000 0.865490 +vn 0.500926 0.000000 0.865490 +vn -0.198387 0.000000 -0.980124 +vn -0.297457 0.000000 -0.954735 +vn -0.297457 0.000000 -0.954735 +vn -0.198387 0.000000 -0.980124 +vn -0.999877 0.000000 -0.015681 +vn -0.999877 0.000000 -0.015681 +vn -0.025737 0.000000 -0.999669 +vn -0.025737 0.000000 -0.999669 +vn 0.032207 0.000000 -0.999481 +vn 0.032207 0.000000 -0.999481 +vn 0.171995 0.000000 -0.985098 +vn 0.023678 0.000000 -0.999720 +vn 0.023678 0.000000 -0.999720 +vn 0.171995 0.000000 -0.985098 +vn 0.972698 0.000000 -0.232074 +vn 0.972698 0.000000 -0.232074 +vn 0.972698 0.000000 -0.232074 +vn 0.972698 0.000000 -0.232074 +vn 0.247319 0.000000 -0.968934 +vn 0.247319 0.000000 -0.968934 +f 38/66/41 39/67/42 40/31/43 41/68/44 +f 39/67/42 42/69/45 43/32/46 40/31/43 +f 42/69/45 44/70/47 45/43/48 43/32/46 +f 46/71/49 47/72/50 48/34/51 49/33/52 +f 47/72/50 50/73/53 51/74/54 48/34/51 +f 41/68/44 40/31/43 52/75/55 53/76/56 +f 40/31/43 43/32/46 54/77/57 52/75/55 +f 43/32/46 45/43/48 55/78/58 54/77/57 +f 49/33/52 48/34/51 56/79/59 57/80/60 +f 51/74/54 58/81/61 56/79/59 48/34/51 +f 44/70/47 46/71/49 49/33/52 45/43/48 +f 55/78/58 45/43/48 49/33/52 57/80/60 +f 17/45/62 23/48/63 24/47/64 18/46/65 +f 18/46/65 24/47/64 25/50/66 19/49/67 +f 19/49/67 25/50/66 36/52/68 35/51/69 +f 20/53/70 26/56/71 27/55/72 21/54/73 +f 21/54/73 27/55/72 28/58/74 22/57/75 +f 23/48/63 29/60/76 30/59/77 24/47/64 +f 24/47/64 30/59/77 31/61/78 25/50/66 +f 25/50/66 31/61/78 37/62/79 36/52/68 +f 26/56/71 32/64/80 33/63/81 27/55/72 +f 28/58/74 27/55/72 33/63/81 34/65/82 +f 35/51/69 36/52/68 26/56/71 20/53/70 +f 37/62/79 32/64/80 26/56/71 36/52/68 +f 17/24/83 18/25/84 39/67/85 38/66/86 +f 23/30/87 17/24/88 38/66/89 41/68/90 +f 18/25/84 19/26/91 42/69/92 39/67/85 +f 19/26/91 35/42/93 44/70/94 42/69/92 +f 20/27/95 21/28/96 47/72/97 46/71/98 +f 21/28/96 22/29/99 50/73/100 47/72/97 +f 22/29/99 28/35/101 51/74/102 50/73/100 +f 30/37/103 29/36/104 53/76/105 52/75/106 +f 29/36/107 23/30/87 41/68/90 53/76/108 +f 31/38/109 30/37/103 52/75/106 54/77/110 +f 37/44/111 31/38/109 54/77/110 55/78/112 +f 33/40/113 32/39/114 57/80/115 56/79/116 +f 28/35/117 34/41/118 58/81/119 51/74/120 +f 34/41/121 33/40/113 56/79/116 58/81/122 +f 35/42/93 20/27/95 46/71/98 44/70/94 +f 32/39/114 37/44/111 55/78/112 57/80/115 diff --git a/geo/fruit.obj b/geo/fruit.obj new file mode 100644 index 0000000..0fec742 --- /dev/null +++ b/geo/fruit.obj @@ -0,0 +1,1775 @@ +# This file uses centimeters as units for non-parametric coordinates. + +mtllib fruit.mtl +g default +v 0.025277 -0.167803 -0.008213 +v 0.021502 -0.167803 -0.015622 +v 0.015622 -0.167803 -0.021502 +v 0.008213 -0.167803 -0.025277 +v 0.000000 -0.167803 -0.026577 +v -0.008213 -0.167803 -0.025277 +v -0.015622 -0.167803 -0.021502 +v -0.021502 -0.167803 -0.015622 +v -0.025277 -0.167803 -0.008213 +v -0.026577 -0.167803 0.000000 +v -0.025277 -0.167803 0.008213 +v -0.021502 -0.167803 0.015622 +v -0.015622 -0.167803 0.021502 +v -0.008213 -0.167803 0.025277 +v -0.000000 -0.167803 0.026577 +v 0.008213 -0.167803 0.025277 +v 0.015622 -0.167803 0.021502 +v 0.021502 -0.167803 0.015622 +v 0.025277 -0.167803 0.008213 +v 0.026577 -0.167803 0.000000 +v 0.049931 -0.161580 -0.016224 +v 0.042474 -0.161580 -0.030859 +v 0.030859 -0.161580 -0.042474 +v 0.016224 -0.161580 -0.049931 +v 0.000000 -0.161580 -0.052500 +v -0.016224 -0.161580 -0.049931 +v -0.030859 -0.161580 -0.042474 +v -0.042474 -0.161580 -0.030859 +v -0.049931 -0.161580 -0.016224 +v -0.052500 -0.161580 0.000000 +v -0.049931 -0.161580 0.016224 +v -0.042474 -0.161580 0.030859 +v -0.030859 -0.161580 0.042474 +v -0.016224 -0.161580 0.049931 +v -0.000000 -0.161580 0.052500 +v 0.016224 -0.161580 0.049931 +v 0.030859 -0.161580 0.042474 +v 0.042474 -0.161580 0.030859 +v 0.049931 -0.161580 0.016224 +v 0.052500 -0.161580 0.000000 +v 0.073356 -0.151377 -0.023835 +v 0.062400 -0.151377 -0.045336 +v 0.045336 -0.151377 -0.062400 +v 0.023835 -0.151377 -0.073356 +v 0.000000 -0.151377 -0.077131 +v -0.023835 -0.151377 -0.073356 +v -0.045336 -0.151377 -0.062400 +v -0.062400 -0.151377 -0.045336 +v -0.073356 -0.151377 -0.023835 +v -0.077131 -0.151377 0.000000 +v -0.073356 -0.151377 0.023835 +v -0.062400 -0.151377 0.045336 +v -0.045336 -0.151377 0.062400 +v -0.023835 -0.151377 0.073356 +v -0.000000 -0.151377 0.077131 +v 0.023835 -0.151377 0.073356 +v 0.045336 -0.151377 0.062400 +v 0.062400 -0.151377 0.045336 +v 0.073356 -0.151377 0.023835 +v 0.077131 -0.151377 0.000000 +v 0.094974 -0.137448 -0.030859 +v 0.080790 -0.137448 -0.058697 +v 0.058697 -0.137448 -0.080790 +v 0.030859 -0.137448 -0.094974 +v 0.000000 -0.137448 -0.099862 +v -0.030859 -0.137448 -0.094974 +v -0.058697 -0.137448 -0.080790 +v -0.080790 -0.137448 -0.058697 +v -0.094974 -0.137448 -0.030859 +v -0.099862 -0.137448 0.000000 +v -0.094974 -0.137448 0.030859 +v -0.080790 -0.137448 0.058697 +v -0.058697 -0.137448 0.080790 +v -0.030859 -0.137448 0.094974 +v -0.000000 -0.137448 0.099862 +v 0.030859 -0.137448 0.094974 +v 0.058697 -0.137448 0.080790 +v 0.080790 -0.137448 0.058697 +v 0.094974 -0.137448 0.030859 +v 0.099862 -0.137448 0.000000 +v 0.114254 -0.120134 -0.037123 +v 0.097190 -0.120134 -0.070613 +v 0.070613 -0.120134 -0.097190 +v 0.037123 -0.120134 -0.114254 +v 0.000000 -0.120134 -0.120134 +v -0.037123 -0.120134 -0.114254 +v -0.070613 -0.120134 -0.097190 +v -0.097190 -0.120134 -0.070613 +v -0.114254 -0.120134 -0.037123 +v -0.120134 -0.120134 0.000000 +v -0.114254 -0.120134 0.037123 +v -0.097190 -0.120134 0.070613 +v -0.070613 -0.120134 0.097190 +v -0.037123 -0.120134 0.114254 +v -0.000000 -0.120134 0.120134 +v 0.037123 -0.120134 0.114254 +v 0.070613 -0.120134 0.097190 +v 0.097190 -0.120134 0.070613 +v 0.114254 -0.120134 0.037123 +v 0.120134 -0.120134 0.000000 +v 0.130721 -0.099862 -0.042474 +v 0.111198 -0.099862 -0.080790 +v 0.080790 -0.099862 -0.111198 +v 0.042474 -0.099862 -0.130721 +v 0.000000 -0.099862 -0.137448 +v -0.042474 -0.099862 -0.130721 +v -0.080790 -0.099862 -0.111198 +v -0.111198 -0.099862 -0.080790 +v -0.130721 -0.099862 -0.042474 +v -0.137448 -0.099862 0.000000 +v -0.130721 -0.099862 0.042474 +v -0.111198 -0.099862 0.080790 +v -0.080790 -0.099862 0.111198 +v -0.042474 -0.099862 0.130721 +v -0.000000 -0.099862 0.137448 +v 0.042474 -0.099862 0.130721 +v 0.080790 -0.099862 0.111198 +v 0.111198 -0.099862 0.080790 +v 0.130721 -0.099862 0.042474 +v 0.137448 -0.099862 0.000000 +v 0.143969 -0.077131 -0.046778 +v 0.122467 -0.077131 -0.088977 +v 0.088977 -0.077131 -0.122467 +v 0.046778 -0.077131 -0.143969 +v 0.000000 -0.077131 -0.151378 +v -0.046778 -0.077131 -0.143969 +v -0.088977 -0.077131 -0.122467 +v -0.122467 -0.077131 -0.088977 +v -0.143969 -0.077131 -0.046778 +v -0.151377 -0.077131 0.000000 +v -0.143969 -0.077131 0.046778 +v -0.122467 -0.077131 0.088977 +v -0.088977 -0.077131 0.122467 +v -0.046778 -0.077131 0.143969 +v -0.000000 -0.077131 0.151377 +v 0.046778 -0.077131 0.143969 +v 0.088977 -0.077131 0.122467 +v 0.122467 -0.077131 0.088977 +v 0.143969 -0.077131 0.046778 +v 0.151377 -0.077131 0.000000 +v 0.153671 -0.052500 -0.049931 +v 0.130721 -0.052500 -0.094974 +v 0.094974 -0.052500 -0.130721 +v 0.049931 -0.052500 -0.153671 +v 0.000000 -0.052500 -0.161580 +v -0.049931 -0.052500 -0.153671 +v -0.094974 -0.052500 -0.130721 +v -0.130721 -0.052500 -0.094974 +v -0.153671 -0.052500 -0.049931 +v -0.161580 -0.052500 0.000000 +v -0.153671 -0.052500 0.049931 +v -0.130721 -0.052500 0.094974 +v -0.094974 -0.052500 0.130721 +v -0.049931 -0.052500 0.153671 +v -0.000000 -0.052500 0.161580 +v 0.049931 -0.052500 0.153671 +v 0.094974 -0.052500 0.130721 +v 0.130721 -0.052500 0.094974 +v 0.153671 -0.052500 0.049931 +v 0.161580 -0.052500 0.000000 +v 0.159590 -0.026577 -0.051854 +v 0.135756 -0.026577 -0.098632 +v 0.098632 -0.026577 -0.135756 +v 0.051854 -0.026577 -0.159590 +v 0.000000 -0.026577 -0.167803 +v -0.051854 -0.026577 -0.159590 +v -0.098632 -0.026577 -0.135756 +v -0.135756 -0.026577 -0.098632 +v -0.159590 -0.026577 -0.051854 +v -0.167803 -0.026577 0.000000 +v -0.159590 -0.026577 0.051854 +v -0.135756 -0.026577 0.098632 +v -0.098632 -0.026577 0.135756 +v -0.051854 -0.026577 0.159590 +v -0.000000 -0.026577 0.167803 +v 0.051854 -0.026577 0.159590 +v 0.098632 -0.026577 0.135756 +v 0.135756 -0.026577 0.098632 +v 0.159590 -0.026577 0.051854 +v 0.167803 -0.026577 0.000000 +v 0.161580 0.000000 -0.052500 +v 0.137448 0.000000 -0.099862 +v 0.099862 0.000000 -0.137448 +v 0.052500 0.000000 -0.161580 +v 0.000000 0.000000 -0.169895 +v -0.052500 0.000000 -0.161580 +v -0.099862 0.000000 -0.137448 +v -0.137448 0.000000 -0.099862 +v -0.161580 0.000000 -0.052500 +v -0.169895 0.000000 0.000000 +v -0.161580 0.000000 0.052500 +v -0.137448 0.000000 0.099862 +v -0.099862 0.000000 0.137448 +v -0.052500 0.000000 0.161580 +v -0.000000 0.000000 0.169895 +v 0.052500 0.000000 0.161580 +v 0.099862 0.000000 0.137448 +v 0.137448 0.000000 0.099862 +v 0.161580 0.000000 0.052500 +v 0.169895 0.000000 0.000000 +v 0.159590 0.026577 -0.051854 +v 0.135756 0.026577 -0.098632 +v 0.098632 0.026577 -0.135756 +v 0.051854 0.026577 -0.159590 +v 0.000000 0.026577 -0.167803 +v -0.051854 0.026577 -0.159590 +v -0.098632 0.026577 -0.135756 +v -0.135756 0.026577 -0.098632 +v -0.159590 0.026577 -0.051854 +v -0.167803 0.026577 0.000000 +v -0.159590 0.026577 0.051854 +v -0.135756 0.026577 0.098632 +v -0.098632 0.026577 0.135756 +v -0.051854 0.026577 0.159590 +v -0.000000 0.026577 0.167803 +v 0.051854 0.026577 0.159590 +v 0.098632 0.026577 0.135756 +v 0.135756 0.026577 0.098632 +v 0.159590 0.026577 0.051854 +v 0.167803 0.026577 0.000000 +v 0.153671 0.052500 -0.049931 +v 0.130721 0.052500 -0.094974 +v 0.094974 0.052500 -0.130721 +v 0.049931 0.052500 -0.153671 +v 0.000000 0.052500 -0.161580 +v -0.049931 0.052500 -0.153671 +v -0.094974 0.052500 -0.130721 +v -0.130721 0.052500 -0.094974 +v -0.153671 0.052500 -0.049931 +v -0.161580 0.052500 0.000000 +v -0.153671 0.052500 0.049931 +v -0.130721 0.052500 0.094974 +v -0.094974 0.052500 0.130721 +v -0.049931 0.052500 0.153671 +v -0.000000 0.052500 0.161580 +v 0.049931 0.052500 0.153671 +v 0.094974 0.052500 0.130721 +v 0.130721 0.052500 0.094974 +v 0.153671 0.052500 0.049931 +v 0.161580 0.052500 0.000000 +v 0.143969 0.077131 -0.046778 +v 0.122467 0.077131 -0.088977 +v 0.088977 0.077131 -0.122467 +v 0.046778 0.077131 -0.143969 +v 0.000000 0.077131 -0.151378 +v -0.046778 0.077131 -0.143969 +v -0.088977 0.077131 -0.122467 +v -0.122467 0.077131 -0.088977 +v -0.143969 0.077131 -0.046778 +v -0.151377 0.077131 0.000000 +v -0.143969 0.077131 0.046778 +v -0.122467 0.077131 0.088977 +v -0.088977 0.077131 0.122467 +v -0.046778 0.077131 0.143969 +v -0.000000 0.077131 0.151377 +v 0.046778 0.077131 0.143969 +v 0.088977 0.077131 0.122467 +v 0.122467 0.077131 0.088977 +v 0.143969 0.077131 0.046778 +v 0.151377 0.077131 0.000000 +v 0.130721 0.099862 -0.042474 +v 0.111198 0.099862 -0.080790 +v 0.080790 0.099862 -0.111198 +v 0.042474 0.099862 -0.130721 +v 0.000000 0.099862 -0.137448 +v -0.042474 0.099862 -0.130721 +v -0.080790 0.099862 -0.111198 +v -0.111198 0.099862 -0.080790 +v -0.130721 0.099862 -0.042474 +v -0.137448 0.099862 0.000000 +v -0.130721 0.099862 0.042474 +v -0.111198 0.099862 0.080790 +v -0.080790 0.099862 0.111198 +v -0.042474 0.099862 0.130721 +v -0.000000 0.099862 0.137448 +v 0.042474 0.099862 0.130721 +v 0.080790 0.099862 0.111198 +v 0.111198 0.099862 0.080790 +v 0.130721 0.099862 0.042474 +v 0.137448 0.099862 0.000000 +v 0.114254 0.120134 -0.037123 +v 0.097190 0.120134 -0.070613 +v 0.070613 0.120134 -0.097190 +v 0.037123 0.120134 -0.114254 +v 0.000000 0.120134 -0.120134 +v -0.037123 0.120134 -0.114254 +v -0.070613 0.120134 -0.097190 +v -0.097190 0.120134 -0.070613 +v -0.114254 0.120134 -0.037123 +v -0.120134 0.120134 0.000000 +v -0.114254 0.120134 0.037123 +v -0.097190 0.120134 0.070613 +v -0.070613 0.120134 0.097190 +v -0.037123 0.120134 0.114254 +v -0.000000 0.120134 0.120134 +v 0.037123 0.120134 0.114254 +v 0.070613 0.120134 0.097190 +v 0.097190 0.120134 0.070613 +v 0.114254 0.120134 0.037123 +v 0.120134 0.120134 0.000000 +v 0.094974 0.137448 -0.030859 +v 0.080790 0.137448 -0.058697 +v 0.058697 0.137448 -0.080790 +v 0.030859 0.137448 -0.094974 +v 0.000000 0.137448 -0.099862 +v -0.030859 0.137448 -0.094974 +v -0.058697 0.137448 -0.080790 +v -0.080790 0.137448 -0.058697 +v -0.094974 0.137448 -0.030859 +v -0.099862 0.137448 0.000000 +v -0.094974 0.137448 0.030859 +v -0.080790 0.137448 0.058697 +v -0.058697 0.137448 0.080790 +v -0.030859 0.137448 0.094974 +v -0.000000 0.137448 0.099862 +v 0.030859 0.137448 0.094974 +v 0.058697 0.137448 0.080790 +v 0.080790 0.137448 0.058697 +v 0.094974 0.137448 0.030859 +v 0.099862 0.137448 0.000000 +v 0.073356 0.151377 -0.023835 +v 0.062400 0.151377 -0.045336 +v 0.045336 0.151377 -0.062400 +v 0.023835 0.151377 -0.073356 +v 0.000000 0.151377 -0.077131 +v -0.023835 0.151377 -0.073356 +v -0.045336 0.151377 -0.062400 +v -0.062400 0.151377 -0.045336 +v -0.073356 0.151377 -0.023835 +v -0.077131 0.151377 0.000000 +v -0.073356 0.151377 0.023835 +v -0.062400 0.151377 0.045336 +v -0.045336 0.151377 0.062400 +v -0.023835 0.151377 0.073356 +v -0.000000 0.151377 0.077131 +v 0.023835 0.151377 0.073356 +v 0.045336 0.151377 0.062400 +v 0.062400 0.151377 0.045336 +v 0.073356 0.151377 0.023835 +v 0.077131 0.151377 0.000000 +v 0.049931 0.161580 -0.016224 +v 0.042474 0.161580 -0.030859 +v 0.030859 0.161580 -0.042474 +v 0.016224 0.161580 -0.049931 +v 0.000000 0.161580 -0.052500 +v -0.016224 0.161580 -0.049931 +v -0.030859 0.161580 -0.042474 +v -0.042474 0.161580 -0.030859 +v -0.049931 0.161580 -0.016224 +v -0.052500 0.161580 0.000000 +v -0.049931 0.161580 0.016224 +v -0.042474 0.161580 0.030859 +v -0.030859 0.161580 0.042474 +v -0.016224 0.161580 0.049931 +v -0.000000 0.161580 0.052500 +v 0.016224 0.161580 0.049931 +v 0.030859 0.161580 0.042474 +v 0.042474 0.161580 0.030859 +v 0.049931 0.161580 0.016224 +v 0.052500 0.161580 0.000000 +v 0.000000 -0.169895 0.000000 +v 0.049931 0.333221 -0.016224 +v 0.042474 0.333221 -0.030859 +v 0.021502 0.339444 -0.015622 +v 0.025277 0.339444 -0.008213 +v 0.030859 0.333221 -0.042474 +v 0.015622 0.339444 -0.021502 +v 0.016224 0.333221 -0.049931 +v 0.008213 0.339444 -0.025277 +v 0.000000 0.333221 -0.052500 +v 0.000000 0.339444 -0.026577 +v -0.016224 0.333221 -0.049931 +v -0.008213 0.339444 -0.025277 +v -0.030859 0.333221 -0.042474 +v -0.015622 0.339444 -0.021502 +v -0.042474 0.333221 -0.030859 +v -0.021502 0.339444 -0.015622 +v -0.049931 0.333221 -0.016224 +v -0.025277 0.339444 -0.008213 +v -0.052500 0.333221 0.000000 +v -0.026577 0.339444 0.000000 +v -0.049931 0.333221 0.016224 +v -0.025277 0.339444 0.008213 +v -0.042474 0.333221 0.030859 +v -0.021502 0.339444 0.015622 +v -0.030859 0.333221 0.042474 +v -0.015622 0.339444 0.021502 +v -0.016224 0.333221 0.049931 +v -0.008213 0.339444 0.025277 +v -0.000000 0.333221 0.052500 +v -0.000000 0.339444 0.026577 +v 0.016224 0.333221 0.049931 +v 0.008213 0.339444 0.025277 +v 0.030859 0.333221 0.042474 +v 0.015622 0.339444 0.021502 +v 0.042474 0.333221 0.030859 +v 0.021502 0.339444 0.015622 +v 0.049931 0.333221 0.016224 +v 0.025277 0.339444 0.008213 +v 0.052500 0.333221 0.000000 +v 0.026577 0.339444 0.000000 +v 0.000000 0.341536 0.000000 +vt 0.000000 0.050000 +vt 0.050000 0.050000 +vt 0.100000 0.050000 +vt 0.150000 0.050000 +vt 0.200000 0.050000 +vt 0.250000 0.050000 +vt 0.300000 0.050000 +vt 0.350000 0.050000 +vt 0.400000 0.050000 +vt 0.450000 0.050000 +vt 0.500000 0.050000 +vt 0.550000 0.050000 +vt 0.600000 0.050000 +vt 0.650000 0.050000 +vt 0.700000 0.050000 +vt 0.750000 0.050000 +vt 0.800000 0.050000 +vt 0.850000 0.050000 +vt 0.900000 0.050000 +vt 0.950000 0.050000 +vt 1.000000 0.050000 +vt 0.000000 0.100000 +vt 0.050000 0.100000 +vt 0.100000 0.100000 +vt 0.150000 0.100000 +vt 0.200000 0.100000 +vt 0.250000 0.100000 +vt 0.300000 0.100000 +vt 0.350000 0.100000 +vt 0.400000 0.100000 +vt 0.450000 0.100000 +vt 0.500000 0.100000 +vt 0.550000 0.100000 +vt 0.600000 0.100000 +vt 0.650000 0.100000 +vt 0.700000 0.100000 +vt 0.750000 0.100000 +vt 0.800000 0.100000 +vt 0.850000 0.100000 +vt 0.900000 0.100000 +vt 0.950000 0.100000 +vt 1.000000 0.100000 +vt 0.000000 0.150000 +vt 0.050000 0.150000 +vt 0.100000 0.150000 +vt 0.150000 0.150000 +vt 0.200000 0.150000 +vt 0.250000 0.150000 +vt 0.300000 0.150000 +vt 0.350000 0.150000 +vt 0.400000 0.150000 +vt 0.450000 0.150000 +vt 0.500000 0.150000 +vt 0.550000 0.150000 +vt 0.600000 0.150000 +vt 0.650000 0.150000 +vt 0.700000 0.150000 +vt 0.750000 0.150000 +vt 0.800000 0.150000 +vt 0.850000 0.150000 +vt 0.900000 0.150000 +vt 0.950000 0.150000 +vt 1.000000 0.150000 +vt 0.000000 0.200000 +vt 0.050000 0.200000 +vt 0.100000 0.200000 +vt 0.150000 0.200000 +vt 0.200000 0.200000 +vt 0.250000 0.200000 +vt 0.300000 0.200000 +vt 0.350000 0.200000 +vt 0.400000 0.200000 +vt 0.450000 0.200000 +vt 0.500000 0.200000 +vt 0.550000 0.200000 +vt 0.600000 0.200000 +vt 0.650000 0.200000 +vt 0.700000 0.200000 +vt 0.750000 0.200000 +vt 0.800000 0.200000 +vt 0.850000 0.200000 +vt 0.900000 0.200000 +vt 0.950000 0.200000 +vt 1.000000 0.200000 +vt 0.000000 0.250000 +vt 0.050000 0.250000 +vt 0.100000 0.250000 +vt 0.150000 0.250000 +vt 0.200000 0.250000 +vt 0.250000 0.250000 +vt 0.300000 0.250000 +vt 0.350000 0.250000 +vt 0.400000 0.250000 +vt 0.450000 0.250000 +vt 0.500000 0.250000 +vt 0.550000 0.250000 +vt 0.600000 0.250000 +vt 0.650000 0.250000 +vt 0.700000 0.250000 +vt 0.750000 0.250000 +vt 0.800000 0.250000 +vt 0.850000 0.250000 +vt 0.900000 0.250000 +vt 0.950000 0.250000 +vt 1.000000 0.250000 +vt 0.000000 0.300000 +vt 0.050000 0.300000 +vt 0.100000 0.300000 +vt 0.150000 0.300000 +vt 0.200000 0.300000 +vt 0.250000 0.300000 +vt 0.300000 0.300000 +vt 0.350000 0.300000 +vt 0.400000 0.300000 +vt 0.450000 0.300000 +vt 0.500000 0.300000 +vt 0.550000 0.300000 +vt 0.600000 0.300000 +vt 0.650000 0.300000 +vt 0.700000 0.300000 +vt 0.750000 0.300000 +vt 0.800000 0.300000 +vt 0.850000 0.300000 +vt 0.900000 0.300000 +vt 0.950000 0.300000 +vt 1.000000 0.300000 +vt 0.000000 0.350000 +vt 0.050000 0.350000 +vt 0.100000 0.350000 +vt 0.150000 0.350000 +vt 0.200000 0.350000 +vt 0.250000 0.350000 +vt 0.300000 0.350000 +vt 0.350000 0.350000 +vt 0.400000 0.350000 +vt 0.450000 0.350000 +vt 0.500000 0.350000 +vt 0.550000 0.350000 +vt 0.600000 0.350000 +vt 0.650000 0.350000 +vt 0.700000 0.350000 +vt 0.750000 0.350000 +vt 0.800000 0.350000 +vt 0.850000 0.350000 +vt 0.900000 0.350000 +vt 0.950000 0.350000 +vt 1.000000 0.350000 +vt 0.000000 0.400000 +vt 0.050000 0.400000 +vt 0.100000 0.400000 +vt 0.150000 0.400000 +vt 0.200000 0.400000 +vt 0.250000 0.400000 +vt 0.300000 0.400000 +vt 0.350000 0.400000 +vt 0.400000 0.400000 +vt 0.450000 0.400000 +vt 0.500000 0.400000 +vt 0.550000 0.400000 +vt 0.600000 0.400000 +vt 0.650000 0.400000 +vt 0.700000 0.400000 +vt 0.750000 0.400000 +vt 0.800000 0.400000 +vt 0.850000 0.400000 +vt 0.900000 0.400000 +vt 0.950000 0.400000 +vt 1.000000 0.400000 +vt 0.000000 0.450000 +vt 0.050000 0.450000 +vt 0.100000 0.450000 +vt 0.150000 0.450000 +vt 0.200000 0.450000 +vt 0.250000 0.450000 +vt 0.300000 0.450000 +vt 0.350000 0.450000 +vt 0.400000 0.450000 +vt 0.450000 0.450000 +vt 0.500000 0.450000 +vt 0.550000 0.450000 +vt 0.600000 0.450000 +vt 0.650000 0.450000 +vt 0.700000 0.450000 +vt 0.750000 0.450000 +vt 0.800000 0.450000 +vt 0.850000 0.450000 +vt 0.900000 0.450000 +vt 0.950000 0.450000 +vt 1.000000 0.450000 +vt 0.000000 0.500000 +vt 0.050000 0.500000 +vt 0.100000 0.500000 +vt 0.150000 0.500000 +vt 0.200000 0.500000 +vt 0.250000 0.500000 +vt 0.300000 0.500000 +vt 0.350000 0.500000 +vt 0.400000 0.500000 +vt 0.450000 0.500000 +vt 0.500000 0.500000 +vt 0.550000 0.500000 +vt 0.600000 0.500000 +vt 0.650000 0.500000 +vt 0.700000 0.500000 +vt 0.750000 0.500000 +vt 0.800000 0.500000 +vt 0.850000 0.500000 +vt 0.900000 0.500000 +vt 0.950000 0.500000 +vt 1.000000 0.500000 +vt 0.000000 0.550000 +vt 0.050000 0.550000 +vt 0.100000 0.550000 +vt 0.150000 0.550000 +vt 0.200000 0.550000 +vt 0.250000 0.550000 +vt 0.300000 0.550000 +vt 0.350000 0.550000 +vt 0.400000 0.550000 +vt 0.450000 0.550000 +vt 0.500000 0.550000 +vt 0.550000 0.550000 +vt 0.600000 0.550000 +vt 0.650000 0.550000 +vt 0.700000 0.550000 +vt 0.750000 0.550000 +vt 0.800000 0.550000 +vt 0.850000 0.550000 +vt 0.900000 0.550000 +vt 0.950000 0.550000 +vt 1.000000 0.550000 +vt 0.000000 0.600000 +vt 0.050000 0.600000 +vt 0.100000 0.600000 +vt 0.150000 0.600000 +vt 0.200000 0.600000 +vt 0.250000 0.600000 +vt 0.300000 0.600000 +vt 0.350000 0.600000 +vt 0.400000 0.600000 +vt 0.450000 0.600000 +vt 0.500000 0.600000 +vt 0.550000 0.600000 +vt 0.600000 0.600000 +vt 0.650000 0.600000 +vt 0.700000 0.600000 +vt 0.750000 0.600000 +vt 0.800000 0.600000 +vt 0.850000 0.600000 +vt 0.900000 0.600000 +vt 0.950000 0.600000 +vt 1.000000 0.600000 +vt 0.000000 0.650000 +vt 0.050000 0.650000 +vt 0.100000 0.650000 +vt 0.150000 0.650000 +vt 0.200000 0.650000 +vt 0.250000 0.650000 +vt 0.300000 0.650000 +vt 0.350000 0.650000 +vt 0.400000 0.650000 +vt 0.450000 0.650000 +vt 0.500000 0.650000 +vt 0.550000 0.650000 +vt 0.600000 0.650000 +vt 0.650000 0.650000 +vt 0.700000 0.650000 +vt 0.750000 0.650000 +vt 0.800000 0.650000 +vt 0.850000 0.650000 +vt 0.900000 0.650000 +vt 0.950000 0.650000 +vt 1.000000 0.650000 +vt 0.000000 0.700000 +vt 0.050000 0.700000 +vt 0.100000 0.700000 +vt 0.150000 0.700000 +vt 0.200000 0.700000 +vt 0.250000 0.700000 +vt 0.300000 0.700000 +vt 0.350000 0.700000 +vt 0.400000 0.700000 +vt 0.450000 0.700000 +vt 0.500000 0.700000 +vt 0.550000 0.700000 +vt 0.600000 0.700000 +vt 0.650000 0.700000 +vt 0.700000 0.700000 +vt 0.750000 0.700000 +vt 0.800000 0.700000 +vt 0.850000 0.700000 +vt 0.900000 0.700000 +vt 0.950000 0.700000 +vt 1.000000 0.700000 +vt 0.000000 0.750000 +vt 0.050000 0.750000 +vt 0.100000 0.750000 +vt 0.150000 0.750000 +vt 0.200000 0.750000 +vt 0.250000 0.750000 +vt 0.300000 0.750000 +vt 0.350000 0.750000 +vt 0.400000 0.750000 +vt 0.450000 0.750000 +vt 0.500000 0.750000 +vt 0.550000 0.750000 +vt 0.600000 0.750000 +vt 0.650000 0.750000 +vt 0.700000 0.750000 +vt 0.750000 0.750000 +vt 0.800000 0.750000 +vt 0.850000 0.750000 +vt 0.900000 0.750000 +vt 0.950000 0.750000 +vt 1.000000 0.750000 +vt 0.000000 0.800000 +vt 0.050000 0.800000 +vt 0.100000 0.800000 +vt 0.150000 0.800000 +vt 0.200000 0.800000 +vt 0.250000 0.800000 +vt 0.300000 0.800000 +vt 0.350000 0.800000 +vt 0.400000 0.800000 +vt 0.450000 0.800000 +vt 0.500000 0.800000 +vt 0.550000 0.800000 +vt 0.600000 0.800000 +vt 0.650000 0.800000 +vt 0.700000 0.800000 +vt 0.750000 0.800000 +vt 0.800000 0.800000 +vt 0.850000 0.800000 +vt 0.900000 0.800000 +vt 0.950000 0.800000 +vt 1.000000 0.800000 +vt 0.000000 0.850000 +vt 0.050000 0.850000 +vt 0.100000 0.850000 +vt 0.150000 0.850000 +vt 0.200000 0.850000 +vt 0.250000 0.850000 +vt 0.300000 0.850000 +vt 0.350000 0.850000 +vt 0.400000 0.850000 +vt 0.450000 0.850000 +vt 0.500000 0.850000 +vt 0.550000 0.850000 +vt 0.600000 0.850000 +vt 0.650000 0.850000 +vt 0.700000 0.850000 +vt 0.750000 0.850000 +vt 0.800000 0.850000 +vt 0.850000 0.850000 +vt 0.900000 0.850000 +vt 0.950000 0.850000 +vt 1.000000 0.850000 +vt 0.000000 0.900000 +vt 0.050000 0.900000 +vt 0.100000 0.900000 +vt 0.150000 0.900000 +vt 0.200000 0.900000 +vt 0.250000 0.900000 +vt 0.300000 0.900000 +vt 0.350000 0.900000 +vt 0.400000 0.900000 +vt 0.450000 0.900000 +vt 0.500000 0.900000 +vt 0.550000 0.900000 +vt 0.600000 0.900000 +vt 0.650000 0.900000 +vt 0.700000 0.900000 +vt 0.750000 0.900000 +vt 0.800000 0.900000 +vt 0.850000 0.900000 +vt 0.900000 0.900000 +vt 0.950000 0.900000 +vt 1.000000 0.900000 +vt 0.000000 0.950000 +vt 0.050000 0.950000 +vt 0.100000 0.950000 +vt 0.150000 0.950000 +vt 0.200000 0.950000 +vt 0.250000 0.950000 +vt 0.300000 0.950000 +vt 0.350000 0.950000 +vt 0.400000 0.950000 +vt 0.450000 0.950000 +vt 0.500000 0.950000 +vt 0.550000 0.950000 +vt 0.600000 0.950000 +vt 0.650000 0.950000 +vt 0.700000 0.950000 +vt 0.750000 0.950000 +vt 0.800000 0.950000 +vt 0.850000 0.950000 +vt 0.900000 0.950000 +vt 0.950000 0.950000 +vt 1.000000 0.950000 +vt 0.025000 0.000000 +vt 0.075000 0.000000 +vt 0.125000 0.000000 +vt 0.175000 0.000000 +vt 0.225000 0.000000 +vt 0.275000 0.000000 +vt 0.325000 0.000000 +vt 0.375000 0.000000 +vt 0.425000 0.000000 +vt 0.475000 0.000000 +vt 0.525000 0.000000 +vt 0.575000 0.000000 +vt 0.625000 0.000000 +vt 0.675000 0.000000 +vt 0.725000 0.000000 +vt 0.775000 0.000000 +vt 0.825000 0.000000 +vt 0.875000 0.000000 +vt 0.925000 0.000000 +vt 0.975000 0.000000 +vt 0.025000 1.000000 +vt 0.075000 1.000000 +vt 0.125000 1.000000 +vt 0.175000 1.000000 +vt 0.225000 1.000000 +vt 0.275000 1.000000 +vt 0.325000 1.000000 +vt 0.375000 1.000000 +vt 0.425000 1.000000 +vt 0.475000 1.000000 +vt 0.525000 1.000000 +vt 0.575000 1.000000 +vt 0.625000 1.000000 +vt 0.675000 1.000000 +vt 0.725000 1.000000 +vt 0.775000 1.000000 +vt 0.825000 1.000000 +vt 0.875000 1.000000 +vt 0.925000 1.000000 +vt 0.975000 1.000000 +vt 0.000000 0.900000 +vt 0.050000 0.900000 +vt 0.100000 0.900000 +vt 0.150000 0.900000 +vt 0.200000 0.900000 +vt 0.250000 0.900000 +vt 0.300000 0.900000 +vt 0.350000 0.900000 +vt 0.400000 0.900000 +vt 0.450000 0.900000 +vt 0.500000 0.900000 +vt 0.550000 0.900000 +vt 0.600000 0.900000 +vt 0.650000 0.900000 +vt 0.700000 0.900000 +vt 0.750000 0.900000 +vt 0.800000 0.900000 +vt 0.850000 0.900000 +vt 0.900000 0.900000 +vt 0.950000 0.900000 +vt 1.000000 0.900000 +vn 0.190555 -0.979722 -0.061914 +vn 0.162096 -0.979722 -0.117769 +vn 0.269870 -0.942723 -0.196072 +vn 0.317252 -0.942723 -0.103081 +vn 0.117769 -0.979722 -0.162096 +vn 0.196072 -0.942723 -0.269870 +vn 0.061915 -0.979722 -0.190555 +vn 0.103081 -0.942723 -0.317251 +vn -0.000000 -0.979722 -0.200361 +vn -0.000000 -0.942723 -0.333578 +vn -0.061915 -0.979722 -0.190555 +vn -0.103081 -0.942723 -0.317251 +vn -0.117769 -0.979722 -0.162095 +vn -0.196072 -0.942723 -0.269870 +vn -0.162096 -0.979722 -0.117769 +vn -0.269870 -0.942723 -0.196072 +vn -0.190555 -0.979722 -0.061914 +vn -0.317252 -0.942723 -0.103081 +vn -0.200361 -0.979722 0.000000 +vn -0.333578 -0.942723 0.000000 +vn -0.190555 -0.979722 0.061915 +vn -0.317252 -0.942723 0.103081 +vn -0.162096 -0.979722 0.117770 +vn -0.269870 -0.942722 0.196072 +vn -0.117769 -0.979722 0.162096 +vn -0.196072 -0.942723 0.269870 +vn -0.061915 -0.979722 0.190555 +vn -0.103081 -0.942723 0.317251 +vn 0.000000 -0.979722 0.200361 +vn 0.000000 -0.942723 0.333578 +vn 0.061915 -0.979722 0.190555 +vn 0.103081 -0.942722 0.317252 +vn 0.117769 -0.979722 0.162096 +vn 0.196072 -0.942722 0.269870 +vn 0.162096 -0.979722 0.117769 +vn 0.269870 -0.942723 0.196072 +vn 0.190555 -0.979722 0.061914 +vn 0.317252 -0.942723 0.103081 +vn 0.200361 -0.979722 0.000000 +vn 0.333578 -0.942722 0.000000 +vn 0.380846 -0.882266 -0.276701 +vn 0.447711 -0.882266 -0.145470 +vn 0.276701 -0.882266 -0.380846 +vn 0.145470 -0.882266 -0.447711 +vn -0.000000 -0.882266 -0.470751 +vn -0.145470 -0.882266 -0.447711 +vn -0.276701 -0.882266 -0.380846 +vn -0.380846 -0.882266 -0.276701 +vn -0.447711 -0.882266 -0.145470 +vn -0.470752 -0.882266 -0.000000 +vn -0.447711 -0.882266 0.145470 +vn -0.380846 -0.882266 0.276701 +vn -0.276701 -0.882266 0.380846 +vn -0.145470 -0.882266 0.447711 +vn -0.000000 -0.882266 0.470752 +vn 0.145470 -0.882266 0.447711 +vn 0.276701 -0.882266 0.380846 +vn 0.380846 -0.882266 0.276701 +vn 0.447711 -0.882266 0.145470 +vn 0.470752 -0.882266 0.000000 +vn 0.485138 -0.800252 -0.352474 +vn 0.570314 -0.800252 -0.185306 +vn 0.352474 -0.800252 -0.485138 +vn 0.185306 -0.800252 -0.570314 +vn -0.000000 -0.800252 -0.599664 +vn -0.185306 -0.800252 -0.570314 +vn -0.352474 -0.800252 -0.485138 +vn -0.485139 -0.800252 -0.352474 +vn -0.570314 -0.800252 -0.185306 +vn -0.599664 -0.800252 -0.000000 +vn -0.570314 -0.800252 0.185306 +vn -0.485138 -0.800252 0.352474 +vn -0.352474 -0.800252 0.485139 +vn -0.185306 -0.800252 0.570314 +vn -0.000000 -0.800252 0.599664 +vn 0.185306 -0.800252 0.570314 +vn 0.352474 -0.800252 0.485138 +vn 0.485138 -0.800252 0.352474 +vn 0.570314 -0.800252 0.185306 +vn 0.599664 -0.800252 0.000001 +vn 0.578713 -0.698789 -0.420459 +vn 0.680318 -0.698789 -0.221048 +vn 0.420459 -0.698789 -0.578713 +vn 0.221048 -0.698789 -0.680318 +vn -0.000000 -0.698789 -0.715328 +vn -0.221049 -0.698789 -0.680318 +vn -0.420460 -0.698788 -0.578713 +vn -0.578713 -0.698788 -0.420459 +vn -0.680318 -0.698788 -0.221049 +vn -0.715329 -0.698788 0.000000 +vn -0.680318 -0.698788 0.221049 +vn -0.578713 -0.698788 0.420460 +vn -0.420459 -0.698788 0.578713 +vn -0.221049 -0.698788 0.680318 +vn -0.000000 -0.698788 0.715329 +vn 0.221049 -0.698788 0.680318 +vn 0.420460 -0.698788 0.578713 +vn 0.578713 -0.698788 0.420460 +vn 0.680318 -0.698788 0.221049 +vn 0.715328 -0.698788 0.000001 +vn 0.658808 -0.580401 -0.478652 +vn 0.774475 -0.580401 -0.251641 +vn 0.478652 -0.580401 -0.658808 +vn 0.251642 -0.580401 -0.774475 +vn -0.000000 -0.580401 -0.814331 +vn -0.251642 -0.580401 -0.774475 +vn -0.478652 -0.580401 -0.658808 +vn -0.658808 -0.580401 -0.478652 +vn -0.774475 -0.580401 -0.251642 +vn -0.814331 -0.580401 -0.000000 +vn -0.774475 -0.580401 0.251642 +vn -0.658808 -0.580401 0.478652 +vn -0.478652 -0.580401 0.658808 +vn -0.251642 -0.580401 0.774475 +vn -0.000000 -0.580401 0.814331 +vn 0.251642 -0.580401 0.774475 +vn 0.478652 -0.580400 0.658808 +vn 0.658808 -0.580401 0.478652 +vn 0.774475 -0.580401 0.251642 +vn 0.814331 -0.580401 0.000001 +vn 0.723291 -0.447994 -0.525502 +vn 0.850280 -0.447994 -0.276272 +vn 0.525501 -0.447994 -0.723291 +vn 0.276273 -0.447994 -0.850280 +vn -0.000000 -0.447994 -0.894037 +vn -0.276273 -0.447994 -0.850279 +vn -0.525502 -0.447994 -0.723291 +vn -0.723291 -0.447994 -0.525501 +vn -0.850280 -0.447994 -0.276272 +vn -0.894037 -0.447994 -0.000000 +vn -0.850280 -0.447994 0.276273 +vn -0.723291 -0.447994 0.525502 +vn -0.525502 -0.447994 0.723291 +vn -0.276272 -0.447994 0.850279 +vn 0.000000 -0.447994 0.894037 +vn 0.276273 -0.447994 0.850280 +vn 0.525502 -0.447994 0.723291 +vn 0.723291 -0.447994 0.525502 +vn 0.850280 -0.447994 0.276272 +vn 0.894037 -0.447994 0.000001 +vn 0.770524 -0.304789 -0.559819 +vn 0.905806 -0.304789 -0.294313 +vn 0.559818 -0.304789 -0.770524 +vn 0.294314 -0.304789 -0.905805 +vn -0.000000 -0.304789 -0.952420 +vn -0.294314 -0.304789 -0.905805 +vn -0.559819 -0.304789 -0.770524 +vn -0.770524 -0.304789 -0.559818 +vn -0.905805 -0.304789 -0.294314 +vn -0.952420 -0.304789 0.000000 +vn -0.905805 -0.304789 0.294314 +vn -0.770524 -0.304788 0.559819 +vn -0.559818 -0.304788 0.770524 +vn -0.294314 -0.304789 0.905805 +vn 0.000000 -0.304789 0.952420 +vn 0.294314 -0.304789 0.905805 +vn 0.559818 -0.304789 0.770524 +vn 0.770524 -0.304789 0.559818 +vn 0.905805 -0.304788 0.294314 +vn 0.952420 -0.304788 0.000001 +vn 0.799335 -0.154249 -0.580751 +vn 0.939675 -0.154249 -0.305318 +vn 0.580751 -0.154249 -0.799335 +vn 0.305319 -0.154249 -0.939674 +vn -0.000000 -0.154249 -0.988032 +vn -0.305319 -0.154249 -0.939674 +vn -0.580751 -0.154249 -0.799335 +vn -0.799335 -0.154249 -0.580751 +vn -0.939674 -0.154249 -0.305319 +vn -0.988032 -0.154249 0.000000 +vn -0.939674 -0.154249 0.305319 +vn -0.799335 -0.154249 0.580751 +vn -0.580751 -0.154249 0.799335 +vn -0.305319 -0.154249 0.939674 +vn -0.000000 -0.154249 0.988032 +vn 0.305319 -0.154249 0.939674 +vn 0.580751 -0.154249 0.799335 +vn 0.799335 -0.154249 0.580751 +vn 0.939674 -0.154248 0.305319 +vn 0.988032 -0.154249 0.000001 +vn 0.809017 0.000000 -0.587785 +vn 0.951057 -0.000000 -0.309016 +vn 0.587785 -0.000000 -0.809017 +vn 0.309017 -0.000000 -0.951057 +vn -0.000000 -0.000000 -1.000000 +vn -0.309017 -0.000000 -0.951057 +vn -0.587786 -0.000000 -0.809017 +vn -0.809017 -0.000000 -0.587785 +vn -0.951057 0.000000 -0.309017 +vn -1.000000 0.000000 -0.000000 +vn -0.951057 0.000000 0.309017 +vn -0.809017 0.000000 0.587785 +vn -0.587785 -0.000000 0.809017 +vn -0.309017 -0.000000 0.951057 +vn -0.000000 0.000000 1.000000 +vn 0.309017 -0.000000 0.951056 +vn 0.587785 -0.000000 0.809017 +vn 0.809017 0.000000 0.587785 +vn 0.951057 0.000000 0.309017 +vn 1.000000 -0.000000 0.000001 +vn 0.799335 0.154249 -0.580751 +vn 0.939675 0.154249 -0.305318 +vn 0.580750 0.154249 -0.799335 +vn 0.305319 0.154249 -0.939674 +vn -0.000000 0.154249 -0.988032 +vn -0.305319 0.154249 -0.939674 +vn -0.580751 0.154249 -0.799335 +vn -0.799335 0.154249 -0.580751 +vn -0.939674 0.154249 -0.305319 +vn -0.988032 0.154249 -0.000000 +vn -0.939674 0.154249 0.305319 +vn -0.799335 0.154249 0.580751 +vn -0.580751 0.154249 0.799335 +vn -0.305319 0.154249 0.939674 +vn -0.000000 0.154249 0.988032 +vn 0.305319 0.154249 0.939674 +vn 0.580751 0.154249 0.799335 +vn 0.799335 0.154249 0.580751 +vn 0.939674 0.154248 0.305319 +vn 0.988032 0.154249 0.000001 +vn 0.770524 0.304789 -0.559819 +vn 0.905806 0.304789 -0.294313 +vn 0.559818 0.304789 -0.770524 +vn 0.294314 0.304789 -0.905805 +vn -0.000000 0.304789 -0.952420 +vn -0.294314 0.304789 -0.905805 +vn -0.559819 0.304789 -0.770524 +vn -0.770524 0.304789 -0.559818 +vn -0.905805 0.304789 -0.294314 +vn -0.952420 0.304789 0.000000 +vn -0.905805 0.304789 0.294314 +vn -0.770524 0.304788 0.559819 +vn -0.559818 0.304789 0.770524 +vn -0.294314 0.304789 0.905805 +vn 0.000000 0.304789 0.952420 +vn 0.294314 0.304789 0.905805 +vn 0.559818 0.304789 0.770524 +vn 0.770524 0.304789 0.559818 +vn 0.905805 0.304788 0.294314 +vn 0.952420 0.304788 0.000001 +vn 0.723291 0.447994 -0.525502 +vn 0.850280 0.447994 -0.276272 +vn 0.525501 0.447994 -0.723291 +vn 0.276273 0.447994 -0.850279 +vn -0.000000 0.447994 -0.894037 +vn -0.276273 0.447994 -0.850280 +vn -0.525502 0.447994 -0.723291 +vn -0.723291 0.447994 -0.525501 +vn -0.850280 0.447994 -0.276273 +vn -0.894037 0.447994 -0.000000 +vn -0.850279 0.447994 0.276273 +vn -0.723291 0.447994 0.525502 +vn -0.525501 0.447994 0.723291 +vn -0.276273 0.447994 0.850279 +vn 0.000000 0.447994 0.894037 +vn 0.276273 0.447994 0.850279 +vn 0.525502 0.447994 0.723291 +vn 0.723291 0.447994 0.525502 +vn 0.850280 0.447994 0.276273 +vn 0.894037 0.447994 0.000001 +vn 0.658808 0.580401 -0.478652 +vn 0.774475 0.580401 -0.251641 +vn 0.478652 0.580401 -0.658808 +vn 0.251642 0.580401 -0.774475 +vn -0.000000 0.580401 -0.814331 +vn -0.251642 0.580401 -0.774475 +vn -0.478652 0.580401 -0.658808 +vn -0.658808 0.580401 -0.478652 +vn -0.774475 0.580401 -0.251642 +vn -0.814331 0.580401 -0.000000 +vn -0.774475 0.580401 0.251642 +vn -0.658808 0.580401 0.478652 +vn -0.478652 0.580401 0.658808 +vn -0.251642 0.580401 0.774475 +vn -0.000000 0.580401 0.814331 +vn 0.251642 0.580401 0.774475 +vn 0.478652 0.580400 0.658808 +vn 0.658808 0.580401 0.478652 +vn 0.774475 0.580401 0.251642 +vn 0.814331 0.580400 0.000001 +vn 0.578713 0.698789 -0.420460 +vn 0.680318 0.698789 -0.221048 +vn 0.420459 0.698789 -0.578713 +vn 0.221048 0.698789 -0.680318 +vn -0.000000 0.698789 -0.715328 +vn -0.221049 0.698789 -0.680318 +vn -0.420460 0.698788 -0.578713 +vn -0.578713 0.698788 -0.420459 +vn -0.680318 0.698788 -0.221049 +vn -0.715329 0.698788 0.000000 +vn -0.680318 0.698788 0.221049 +vn -0.578713 0.698788 0.420460 +vn -0.420459 0.698788 0.578713 +vn -0.221048 0.698788 0.680318 +vn -0.000000 0.698788 0.715329 +vn 0.221049 0.698788 0.680318 +vn 0.420460 0.698788 0.578713 +vn 0.578713 0.698788 0.420460 +vn 0.680318 0.698788 0.221049 +vn 0.715329 0.698788 0.000001 +vn 0.485138 0.800252 -0.352474 +vn 0.570314 0.800252 -0.185306 +vn 0.352474 0.800252 -0.485138 +vn 0.185306 0.800252 -0.570314 +vn -0.000000 0.800252 -0.599664 +vn -0.185306 0.800252 -0.570314 +vn -0.352474 0.800252 -0.485138 +vn -0.485139 0.800252 -0.352474 +vn -0.570314 0.800252 -0.185306 +vn -0.599664 0.800252 0.000000 +vn -0.570314 0.800252 0.185306 +vn -0.485138 0.800252 0.352474 +vn -0.352474 0.800252 0.485138 +vn -0.185306 0.800252 0.570314 +vn 0.000000 0.800252 0.599664 +vn 0.185306 0.800252 0.570314 +vn 0.352474 0.800252 0.485138 +vn 0.485138 0.800252 0.352474 +vn 0.570314 0.800252 0.185306 +vn 0.599664 0.800252 0.000001 +vn 0.380846 0.882266 -0.276701 +vn 0.447711 0.882266 -0.145470 +vn 0.276701 0.882266 -0.380846 +vn 0.145470 0.882266 -0.447711 +vn -0.000000 0.882266 -0.470751 +vn -0.145470 0.882266 -0.447711 +vn -0.276701 0.882266 -0.380846 +vn -0.380846 0.882266 -0.276701 +vn -0.447711 0.882266 -0.145470 +vn -0.470752 0.882266 0.000000 +vn -0.447711 0.882266 0.145470 +vn -0.380846 0.882266 0.276701 +vn -0.276701 0.882266 0.380846 +vn -0.145470 0.882266 0.447711 +vn 0.000000 0.882266 0.470752 +vn 0.145470 0.882266 0.447711 +vn 0.276701 0.882266 0.380846 +vn 0.380846 0.882266 0.276701 +vn 0.447711 0.882266 0.145470 +vn 0.470752 0.882266 0.000000 +vn 0.309597 0.923880 -0.224935 +vn 0.363954 0.923880 -0.118255 +vn 0.224935 0.923880 -0.309597 +vn 0.118256 0.923880 -0.363953 +vn -0.000000 0.923880 -0.382683 +vn -0.118256 0.923880 -0.363953 +vn -0.224936 0.923880 -0.309597 +vn -0.309597 0.923880 -0.224936 +vn -0.363953 0.923880 -0.118256 +vn -0.382683 0.923880 0.000000 +vn -0.363953 0.923880 0.118256 +vn -0.309597 0.923880 0.224936 +vn -0.224936 0.923880 0.309597 +vn -0.118256 0.923880 0.363953 +vn 0.000000 0.923880 0.382683 +vn 0.118256 0.923880 0.363954 +vn 0.224936 0.923880 0.309597 +vn 0.309597 0.923880 0.224936 +vn 0.363953 0.923880 0.118256 +vn 0.382683 0.923880 0.000000 +vn 0.222020 0.972370 -0.072138 +vn 0.188861 0.972370 -0.137216 +vn 0.162096 0.979722 -0.117770 +vn 0.190555 0.979722 -0.061916 +vn 0.137216 0.972370 -0.188860 +vn 0.117769 0.979722 -0.162094 +vn 0.072138 0.972370 -0.222019 +vn 0.061915 0.979722 -0.190555 +vn -0.000000 0.972370 -0.233446 +vn -0.000000 0.979722 -0.200362 +vn -0.072139 0.972370 -0.222020 +vn -0.061915 0.979722 -0.190555 +vn -0.137216 0.972370 -0.188861 +vn -0.117769 0.979722 -0.162096 +vn -0.188861 0.972370 -0.137216 +vn -0.162096 0.979722 -0.117770 +vn -0.222020 0.972370 -0.072137 +vn -0.190555 0.979722 -0.061915 +vn -0.233445 0.972370 0.000000 +vn -0.200361 0.979722 0.000000 +vn -0.222020 0.972370 0.072138 +vn -0.190555 0.979722 0.061916 +vn -0.188861 0.972370 0.137217 +vn -0.162096 0.979722 0.117770 +vn -0.137216 0.972370 0.188861 +vn -0.117769 0.979722 0.162096 +vn -0.072139 0.972370 0.222020 +vn -0.061915 0.979722 0.190555 +vn 0.000000 0.972370 0.233446 +vn 0.000000 0.979722 0.200362 +vn 0.072139 0.972370 0.222020 +vn 0.061915 0.979722 0.190555 +vn 0.137216 0.972370 0.188862 +vn 0.117769 0.979722 0.162096 +vn 0.188861 0.972370 0.137216 +vn 0.162096 0.979722 0.117769 +vn 0.222020 0.972370 0.072140 +vn 0.190555 0.979722 0.061916 +vn 0.233445 0.972370 0.000001 +vn 0.200361 0.979722 0.000001 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.891007 0.000000 -0.453991 +vn 0.891007 0.000000 -0.453991 +vn 0.891007 0.000000 -0.453991 +vn 0.891007 0.000000 -0.453991 +vn 0.707107 0.000000 -0.707107 +vn 0.707107 0.000000 -0.707107 +vn 0.707107 0.000000 -0.707107 +vn 0.707107 0.000000 -0.707107 +vn 0.453990 0.000000 -0.891007 +vn 0.453990 0.000000 -0.891007 +vn 0.453990 0.000000 -0.891007 +vn 0.453990 0.000000 -0.891007 +vn 0.156434 0.000000 -0.987688 +vn 0.156434 0.000000 -0.987688 +vn 0.156434 0.000000 -0.987688 +vn 0.156434 0.000000 -0.987688 +vn -0.156435 0.000000 -0.987688 +vn -0.156435 0.000000 -0.987688 +vn -0.156435 0.000000 -0.987688 +vn -0.156435 0.000000 -0.987688 +vn -0.453991 0.000000 -0.891006 +vn -0.453991 0.000000 -0.891006 +vn -0.453991 0.000000 -0.891006 +vn -0.453991 0.000000 -0.891006 +vn -0.707107 0.000000 -0.707107 +vn -0.707107 0.000000 -0.707107 +vn -0.707107 0.000000 -0.707107 +vn -0.707107 0.000000 -0.707107 +vn -0.891007 0.000000 -0.453990 +vn -0.891007 0.000000 -0.453990 +vn -0.891007 0.000000 -0.453990 +vn -0.891007 0.000000 -0.453990 +vn -0.987688 0.000000 -0.156434 +vn -0.987688 0.000000 -0.156434 +vn -0.987688 0.000000 -0.156434 +vn -0.987688 0.000000 -0.156434 +vn -0.987688 0.000000 0.156434 +vn -0.987688 0.000000 0.156434 +vn -0.987688 0.000000 0.156434 +vn -0.987688 0.000000 0.156434 +vn -0.891006 0.000000 0.453991 +vn -0.891006 0.000000 0.453991 +vn -0.891006 0.000000 0.453991 +vn -0.891006 0.000000 0.453991 +vn -0.707107 0.000000 0.707107 +vn -0.707107 0.000000 0.707107 +vn -0.707107 0.000000 0.707107 +vn -0.707107 0.000000 0.707107 +vn -0.453990 0.000000 0.891007 +vn -0.453990 0.000000 0.891007 +vn -0.453990 0.000000 0.891007 +vn -0.453990 0.000000 0.891007 +vn -0.156434 0.000000 0.987688 +vn -0.156434 0.000000 0.987688 +vn -0.156434 0.000000 0.987688 +vn -0.156434 0.000000 0.987688 +vn 0.156435 0.000000 0.987688 +vn 0.156435 0.000000 0.987688 +vn 0.156435 0.000000 0.987688 +vn 0.156435 0.000000 0.987688 +vn 0.453990 0.000000 0.891007 +vn 0.453990 0.000000 0.891007 +vn 0.453990 0.000000 0.891007 +vn 0.453990 0.000000 0.891007 +vn 0.707107 0.000000 0.707107 +vn 0.707107 0.000000 0.707107 +vn 0.707107 0.000000 0.707107 +vn 0.707107 0.000000 0.707107 +vn 0.891006 0.000000 0.453991 +vn 0.891006 0.000000 0.453991 +vn 0.891006 0.000000 0.453991 +vn 0.891006 0.000000 0.453991 +vn 0.987688 0.000000 0.156434 +vn 0.987688 0.000000 0.156434 +vn 0.987688 0.000000 0.156434 +vn 0.987688 0.000000 0.156434 +vn 0.987689 0.000000 -0.156432 +vn 0.987689 0.000000 -0.156432 +vn 0.987689 0.000000 -0.156432 +vn 0.987689 0.000000 -0.156432 +s 1 +g pSphere1 +usemtl initialShadingGroup +f 1/1/1 2/2/2 22/23/3 21/22/4 +f 2/2/2 3/3/5 23/24/6 22/23/3 +f 3/3/5 4/4/7 24/25/8 23/24/6 +f 4/4/7 5/5/9 25/26/10 24/25/8 +f 5/5/9 6/6/11 26/27/12 25/26/10 +f 6/6/11 7/7/13 27/28/14 26/27/12 +f 7/7/13 8/8/15 28/29/16 27/28/14 +f 8/8/15 9/9/17 29/30/18 28/29/16 +f 9/9/17 10/10/19 30/31/20 29/30/18 +f 10/10/19 11/11/21 31/32/22 30/31/20 +f 11/11/21 12/12/23 32/33/24 31/32/22 +f 12/12/23 13/13/25 33/34/26 32/33/24 +f 13/13/25 14/14/27 34/35/28 33/34/26 +f 14/14/27 15/15/29 35/36/30 34/35/28 +f 15/15/29 16/16/31 36/37/32 35/36/30 +f 16/16/31 17/17/33 37/38/34 36/37/32 +f 17/17/33 18/18/35 38/39/36 37/38/34 +f 18/18/35 19/19/37 39/40/38 38/39/36 +f 19/19/37 20/20/39 40/41/40 39/40/38 +f 20/20/39 1/21/1 21/42/4 40/41/40 +f 21/22/4 22/23/3 42/44/41 41/43/42 +f 22/23/3 23/24/6 43/45/43 42/44/41 +f 23/24/6 24/25/8 44/46/44 43/45/43 +f 24/25/8 25/26/10 45/47/45 44/46/44 +f 25/26/10 26/27/12 46/48/46 45/47/45 +f 26/27/12 27/28/14 47/49/47 46/48/46 +f 27/28/14 28/29/16 48/50/48 47/49/47 +f 28/29/16 29/30/18 49/51/49 48/50/48 +f 29/30/18 30/31/20 50/52/50 49/51/49 +f 30/31/20 31/32/22 51/53/51 50/52/50 +f 31/32/22 32/33/24 52/54/52 51/53/51 +f 32/33/24 33/34/26 53/55/53 52/54/52 +f 33/34/26 34/35/28 54/56/54 53/55/53 +f 34/35/28 35/36/30 55/57/55 54/56/54 +f 35/36/30 36/37/32 56/58/56 55/57/55 +f 36/37/32 37/38/34 57/59/57 56/58/56 +f 37/38/34 38/39/36 58/60/58 57/59/57 +f 38/39/36 39/40/38 59/61/59 58/60/58 +f 39/40/38 40/41/40 60/62/60 59/61/59 +f 40/41/40 21/42/4 41/63/42 60/62/60 +f 41/43/42 42/44/41 62/65/61 61/64/62 +f 42/44/41 43/45/43 63/66/63 62/65/61 +f 43/45/43 44/46/44 64/67/64 63/66/63 +f 44/46/44 45/47/45 65/68/65 64/67/64 +f 45/47/45 46/48/46 66/69/66 65/68/65 +f 46/48/46 47/49/47 67/70/67 66/69/66 +f 47/49/47 48/50/48 68/71/68 67/70/67 +f 48/50/48 49/51/49 69/72/69 68/71/68 +f 49/51/49 50/52/50 70/73/70 69/72/69 +f 50/52/50 51/53/51 71/74/71 70/73/70 +f 51/53/51 52/54/52 72/75/72 71/74/71 +f 52/54/52 53/55/53 73/76/73 72/75/72 +f 53/55/53 54/56/54 74/77/74 73/76/73 +f 54/56/54 55/57/55 75/78/75 74/77/74 +f 55/57/55 56/58/56 76/79/76 75/78/75 +f 56/58/56 57/59/57 77/80/77 76/79/76 +f 57/59/57 58/60/58 78/81/78 77/80/77 +f 58/60/58 59/61/59 79/82/79 78/81/78 +f 59/61/59 60/62/60 80/83/80 79/82/79 +f 60/62/60 41/63/42 61/84/62 80/83/80 +f 61/64/62 62/65/61 82/86/81 81/85/82 +f 62/65/61 63/66/63 83/87/83 82/86/81 +f 63/66/63 64/67/64 84/88/84 83/87/83 +f 64/67/64 65/68/65 85/89/85 84/88/84 +f 65/68/65 66/69/66 86/90/86 85/89/85 +f 66/69/66 67/70/67 87/91/87 86/90/86 +f 67/70/67 68/71/68 88/92/88 87/91/87 +f 68/71/68 69/72/69 89/93/89 88/92/88 +f 69/72/69 70/73/70 90/94/90 89/93/89 +f 70/73/70 71/74/71 91/95/91 90/94/90 +f 71/74/71 72/75/72 92/96/92 91/95/91 +f 72/75/72 73/76/73 93/97/93 92/96/92 +f 73/76/73 74/77/74 94/98/94 93/97/93 +f 74/77/74 75/78/75 95/99/95 94/98/94 +f 75/78/75 76/79/76 96/100/96 95/99/95 +f 76/79/76 77/80/77 97/101/97 96/100/96 +f 77/80/77 78/81/78 98/102/98 97/101/97 +f 78/81/78 79/82/79 99/103/99 98/102/98 +f 79/82/79 80/83/80 100/104/100 99/103/99 +f 80/83/80 61/84/62 81/105/82 100/104/100 +f 81/85/82 82/86/81 102/107/101 101/106/102 +f 82/86/81 83/87/83 103/108/103 102/107/101 +f 83/87/83 84/88/84 104/109/104 103/108/103 +f 84/88/84 85/89/85 105/110/105 104/109/104 +f 85/89/85 86/90/86 106/111/106 105/110/105 +f 86/90/86 87/91/87 107/112/107 106/111/106 +f 87/91/87 88/92/88 108/113/108 107/112/107 +f 88/92/88 89/93/89 109/114/109 108/113/108 +f 89/93/89 90/94/90 110/115/110 109/114/109 +f 90/94/90 91/95/91 111/116/111 110/115/110 +f 91/95/91 92/96/92 112/117/112 111/116/111 +f 92/96/92 93/97/93 113/118/113 112/117/112 +f 93/97/93 94/98/94 114/119/114 113/118/113 +f 94/98/94 95/99/95 115/120/115 114/119/114 +f 95/99/95 96/100/96 116/121/116 115/120/115 +f 96/100/96 97/101/97 117/122/117 116/121/116 +f 97/101/97 98/102/98 118/123/118 117/122/117 +f 98/102/98 99/103/99 119/124/119 118/123/118 +f 99/103/99 100/104/100 120/125/120 119/124/119 +f 100/104/100 81/105/82 101/126/102 120/125/120 +f 101/106/102 102/107/101 122/128/121 121/127/122 +f 102/107/101 103/108/103 123/129/123 122/128/121 +f 103/108/103 104/109/104 124/130/124 123/129/123 +f 104/109/104 105/110/105 125/131/125 124/130/124 +f 105/110/105 106/111/106 126/132/126 125/131/125 +f 106/111/106 107/112/107 127/133/127 126/132/126 +f 107/112/107 108/113/108 128/134/128 127/133/127 +f 108/113/108 109/114/109 129/135/129 128/134/128 +f 109/114/109 110/115/110 130/136/130 129/135/129 +f 110/115/110 111/116/111 131/137/131 130/136/130 +f 111/116/111 112/117/112 132/138/132 131/137/131 +f 112/117/112 113/118/113 133/139/133 132/138/132 +f 113/118/113 114/119/114 134/140/134 133/139/133 +f 114/119/114 115/120/115 135/141/135 134/140/134 +f 115/120/115 116/121/116 136/142/136 135/141/135 +f 116/121/116 117/122/117 137/143/137 136/142/136 +f 117/122/117 118/123/118 138/144/138 137/143/137 +f 118/123/118 119/124/119 139/145/139 138/144/138 +f 119/124/119 120/125/120 140/146/140 139/145/139 +f 120/125/120 101/126/102 121/147/122 140/146/140 +f 121/127/122 122/128/121 142/149/141 141/148/142 +f 122/128/121 123/129/123 143/150/143 142/149/141 +f 123/129/123 124/130/124 144/151/144 143/150/143 +f 124/130/124 125/131/125 145/152/145 144/151/144 +f 125/131/125 126/132/126 146/153/146 145/152/145 +f 126/132/126 127/133/127 147/154/147 146/153/146 +f 127/133/127 128/134/128 148/155/148 147/154/147 +f 128/134/128 129/135/129 149/156/149 148/155/148 +f 129/135/129 130/136/130 150/157/150 149/156/149 +f 130/136/130 131/137/131 151/158/151 150/157/150 +f 131/137/131 132/138/132 152/159/152 151/158/151 +f 132/138/132 133/139/133 153/160/153 152/159/152 +f 133/139/133 134/140/134 154/161/154 153/160/153 +f 134/140/134 135/141/135 155/162/155 154/161/154 +f 135/141/135 136/142/136 156/163/156 155/162/155 +f 136/142/136 137/143/137 157/164/157 156/163/156 +f 137/143/137 138/144/138 158/165/158 157/164/157 +f 138/144/138 139/145/139 159/166/159 158/165/158 +f 139/145/139 140/146/140 160/167/160 159/166/159 +f 140/146/140 121/147/122 141/168/142 160/167/160 +f 141/148/142 142/149/141 162/170/161 161/169/162 +f 142/149/141 143/150/143 163/171/163 162/170/161 +f 143/150/143 144/151/144 164/172/164 163/171/163 +f 144/151/144 145/152/145 165/173/165 164/172/164 +f 145/152/145 146/153/146 166/174/166 165/173/165 +f 146/153/146 147/154/147 167/175/167 166/174/166 +f 147/154/147 148/155/148 168/176/168 167/175/167 +f 148/155/148 149/156/149 169/177/169 168/176/168 +f 149/156/149 150/157/150 170/178/170 169/177/169 +f 150/157/150 151/158/151 171/179/171 170/178/170 +f 151/158/151 152/159/152 172/180/172 171/179/171 +f 152/159/152 153/160/153 173/181/173 172/180/172 +f 153/160/153 154/161/154 174/182/174 173/181/173 +f 154/161/154 155/162/155 175/183/175 174/182/174 +f 155/162/155 156/163/156 176/184/176 175/183/175 +f 156/163/156 157/164/157 177/185/177 176/184/176 +f 157/164/157 158/165/158 178/186/178 177/185/177 +f 158/165/158 159/166/159 179/187/179 178/186/178 +f 159/166/159 160/167/160 180/188/180 179/187/179 +f 160/167/160 141/168/142 161/189/162 180/188/180 +f 161/169/162 162/170/161 182/191/181 181/190/182 +f 162/170/161 163/171/163 183/192/183 182/191/181 +f 163/171/163 164/172/164 184/193/184 183/192/183 +f 164/172/164 165/173/165 185/194/185 184/193/184 +f 165/173/165 166/174/166 186/195/186 185/194/185 +f 166/174/166 167/175/167 187/196/187 186/195/186 +f 167/175/167 168/176/168 188/197/188 187/196/187 +f 168/176/168 169/177/169 189/198/189 188/197/188 +f 169/177/169 170/178/170 190/199/190 189/198/189 +f 170/178/170 171/179/171 191/200/191 190/199/190 +f 171/179/171 172/180/172 192/201/192 191/200/191 +f 172/180/172 173/181/173 193/202/193 192/201/192 +f 173/181/173 174/182/174 194/203/194 193/202/193 +f 174/182/174 175/183/175 195/204/195 194/203/194 +f 175/183/175 176/184/176 196/205/196 195/204/195 +f 176/184/176 177/185/177 197/206/197 196/205/196 +f 177/185/177 178/186/178 198/207/198 197/206/197 +f 178/186/178 179/187/179 199/208/199 198/207/198 +f 179/187/179 180/188/180 200/209/200 199/208/199 +f 180/188/180 161/189/162 181/210/182 200/209/200 +f 181/190/182 182/191/181 202/212/201 201/211/202 +f 182/191/181 183/192/183 203/213/203 202/212/201 +f 183/192/183 184/193/184 204/214/204 203/213/203 +f 184/193/184 185/194/185 205/215/205 204/214/204 +f 185/194/185 186/195/186 206/216/206 205/215/205 +f 186/195/186 187/196/187 207/217/207 206/216/206 +f 187/196/187 188/197/188 208/218/208 207/217/207 +f 188/197/188 189/198/189 209/219/209 208/218/208 +f 189/198/189 190/199/190 210/220/210 209/219/209 +f 190/199/190 191/200/191 211/221/211 210/220/210 +f 191/200/191 192/201/192 212/222/212 211/221/211 +f 192/201/192 193/202/193 213/223/213 212/222/212 +f 193/202/193 194/203/194 214/224/214 213/223/213 +f 194/203/194 195/204/195 215/225/215 214/224/214 +f 195/204/195 196/205/196 216/226/216 215/225/215 +f 196/205/196 197/206/197 217/227/217 216/226/216 +f 197/206/197 198/207/198 218/228/218 217/227/217 +f 198/207/198 199/208/199 219/229/219 218/228/218 +f 199/208/199 200/209/200 220/230/220 219/229/219 +f 200/209/200 181/210/182 201/231/202 220/230/220 +f 201/211/202 202/212/201 222/233/221 221/232/222 +f 202/212/201 203/213/203 223/234/223 222/233/221 +f 203/213/203 204/214/204 224/235/224 223/234/223 +f 204/214/204 205/215/205 225/236/225 224/235/224 +f 205/215/205 206/216/206 226/237/226 225/236/225 +f 206/216/206 207/217/207 227/238/227 226/237/226 +f 207/217/207 208/218/208 228/239/228 227/238/227 +f 208/218/208 209/219/209 229/240/229 228/239/228 +f 209/219/209 210/220/210 230/241/230 229/240/229 +f 210/220/210 211/221/211 231/242/231 230/241/230 +f 211/221/211 212/222/212 232/243/232 231/242/231 +f 212/222/212 213/223/213 233/244/233 232/243/232 +f 213/223/213 214/224/214 234/245/234 233/244/233 +f 214/224/214 215/225/215 235/246/235 234/245/234 +f 215/225/215 216/226/216 236/247/236 235/246/235 +f 216/226/216 217/227/217 237/248/237 236/247/236 +f 217/227/217 218/228/218 238/249/238 237/248/237 +f 218/228/218 219/229/219 239/250/239 238/249/238 +f 219/229/219 220/230/220 240/251/240 239/250/239 +f 220/230/220 201/231/202 221/252/222 240/251/240 +f 221/232/222 222/233/221 242/254/241 241/253/242 +f 222/233/221 223/234/223 243/255/243 242/254/241 +f 223/234/223 224/235/224 244/256/244 243/255/243 +f 224/235/224 225/236/225 245/257/245 244/256/244 +f 225/236/225 226/237/226 246/258/246 245/257/245 +f 226/237/226 227/238/227 247/259/247 246/258/246 +f 227/238/227 228/239/228 248/260/248 247/259/247 +f 228/239/228 229/240/229 249/261/249 248/260/248 +f 229/240/229 230/241/230 250/262/250 249/261/249 +f 230/241/230 231/242/231 251/263/251 250/262/250 +f 231/242/231 232/243/232 252/264/252 251/263/251 +f 232/243/232 233/244/233 253/265/253 252/264/252 +f 233/244/233 234/245/234 254/266/254 253/265/253 +f 234/245/234 235/246/235 255/267/255 254/266/254 +f 235/246/235 236/247/236 256/268/256 255/267/255 +f 236/247/236 237/248/237 257/269/257 256/268/256 +f 237/248/237 238/249/238 258/270/258 257/269/257 +f 238/249/238 239/250/239 259/271/259 258/270/258 +f 239/250/239 240/251/240 260/272/260 259/271/259 +f 240/251/240 221/252/222 241/273/242 260/272/260 +f 241/253/242 242/254/241 262/275/261 261/274/262 +f 242/254/241 243/255/243 263/276/263 262/275/261 +f 243/255/243 244/256/244 264/277/264 263/276/263 +f 244/256/244 245/257/245 265/278/265 264/277/264 +f 245/257/245 246/258/246 266/279/266 265/278/265 +f 246/258/246 247/259/247 267/280/267 266/279/266 +f 247/259/247 248/260/248 268/281/268 267/280/267 +f 248/260/248 249/261/249 269/282/269 268/281/268 +f 249/261/249 250/262/250 270/283/270 269/282/269 +f 250/262/250 251/263/251 271/284/271 270/283/270 +f 251/263/251 252/264/252 272/285/272 271/284/271 +f 252/264/252 253/265/253 273/286/273 272/285/272 +f 253/265/253 254/266/254 274/287/274 273/286/273 +f 254/266/254 255/267/255 275/288/275 274/287/274 +f 255/267/255 256/268/256 276/289/276 275/288/275 +f 256/268/256 257/269/257 277/290/277 276/289/276 +f 257/269/257 258/270/258 278/291/278 277/290/277 +f 258/270/258 259/271/259 279/292/279 278/291/278 +f 259/271/259 260/272/260 280/293/280 279/292/279 +f 260/272/260 241/273/242 261/294/262 280/293/280 +f 261/274/262 262/275/261 282/296/281 281/295/282 +f 262/275/261 263/276/263 283/297/283 282/296/281 +f 263/276/263 264/277/264 284/298/284 283/297/283 +f 264/277/264 265/278/265 285/299/285 284/298/284 +f 265/278/265 266/279/266 286/300/286 285/299/285 +f 266/279/266 267/280/267 287/301/287 286/300/286 +f 267/280/267 268/281/268 288/302/288 287/301/287 +f 268/281/268 269/282/269 289/303/289 288/302/288 +f 269/282/269 270/283/270 290/304/290 289/303/289 +f 270/283/270 271/284/271 291/305/291 290/304/290 +f 271/284/271 272/285/272 292/306/292 291/305/291 +f 272/285/272 273/286/273 293/307/293 292/306/292 +f 273/286/273 274/287/274 294/308/294 293/307/293 +f 274/287/274 275/288/275 295/309/295 294/308/294 +f 275/288/275 276/289/276 296/310/296 295/309/295 +f 276/289/276 277/290/277 297/311/297 296/310/296 +f 277/290/277 278/291/278 298/312/298 297/311/297 +f 278/291/278 279/292/279 299/313/299 298/312/298 +f 279/292/279 280/293/280 300/314/300 299/313/299 +f 280/293/280 261/294/262 281/315/282 300/314/300 +f 281/295/282 282/296/281 302/317/301 301/316/302 +f 282/296/281 283/297/283 303/318/303 302/317/301 +f 283/297/283 284/298/284 304/319/304 303/318/303 +f 284/298/284 285/299/285 305/320/305 304/319/304 +f 285/299/285 286/300/286 306/321/306 305/320/305 +f 286/300/286 287/301/287 307/322/307 306/321/306 +f 287/301/287 288/302/288 308/323/308 307/322/307 +f 288/302/288 289/303/289 309/324/309 308/323/308 +f 289/303/289 290/304/290 310/325/310 309/324/309 +f 290/304/290 291/305/291 311/326/311 310/325/310 +f 291/305/291 292/306/292 312/327/312 311/326/311 +f 292/306/292 293/307/293 313/328/313 312/327/312 +f 293/307/293 294/308/294 314/329/314 313/328/313 +f 294/308/294 295/309/295 315/330/315 314/329/314 +f 295/309/295 296/310/296 316/331/316 315/330/315 +f 296/310/296 297/311/297 317/332/317 316/331/316 +f 297/311/297 298/312/298 318/333/318 317/332/317 +f 298/312/298 299/313/299 319/334/319 318/333/318 +f 299/313/299 300/314/300 320/335/320 319/334/319 +f 300/314/300 281/315/282 301/336/302 320/335/320 +f 301/316/302 302/317/301 322/338/321 321/337/322 +f 302/317/301 303/318/303 323/339/323 322/338/321 +f 303/318/303 304/319/304 324/340/324 323/339/323 +f 304/319/304 305/320/305 325/341/325 324/340/324 +f 305/320/305 306/321/306 326/342/326 325/341/325 +f 306/321/306 307/322/307 327/343/327 326/342/326 +f 307/322/307 308/323/308 328/344/328 327/343/327 +f 308/323/308 309/324/309 329/345/329 328/344/328 +f 309/324/309 310/325/310 330/346/330 329/345/329 +f 310/325/310 311/326/311 331/347/331 330/346/330 +f 311/326/311 312/327/312 332/348/332 331/347/331 +f 312/327/312 313/328/313 333/349/333 332/348/332 +f 313/328/313 314/329/314 334/350/334 333/349/333 +f 314/329/314 315/330/315 335/351/335 334/350/334 +f 315/330/315 316/331/316 336/352/336 335/351/335 +f 316/331/316 317/332/317 337/353/337 336/352/336 +f 317/332/317 318/333/318 338/354/338 337/353/337 +f 318/333/318 319/334/319 339/355/339 338/354/338 +f 319/334/319 320/335/320 340/356/340 339/355/339 +f 320/335/320 301/336/302 321/357/322 340/356/340 +f 321/337/322 322/338/321 342/359/341 341/358/342 +f 322/338/321 323/339/323 343/360/343 342/359/341 +f 323/339/323 324/340/324 344/361/344 343/360/343 +f 324/340/324 325/341/325 345/362/345 344/361/344 +f 325/341/325 326/342/326 346/363/346 345/362/345 +f 326/342/326 327/343/327 347/364/347 346/363/346 +f 327/343/327 328/344/328 348/365/348 347/364/347 +f 328/344/328 329/345/329 349/366/349 348/365/348 +f 329/345/329 330/346/330 350/367/350 349/366/349 +f 330/346/330 331/347/331 351/368/351 350/367/350 +f 331/347/331 332/348/332 352/369/352 351/368/351 +f 332/348/332 333/349/333 353/370/353 352/369/352 +f 333/349/333 334/350/334 354/371/354 353/370/353 +f 334/350/334 335/351/335 355/372/355 354/371/354 +f 335/351/335 336/352/336 356/373/356 355/372/355 +f 336/352/336 337/353/337 357/374/357 356/373/356 +f 337/353/337 338/354/338 358/375/358 357/374/357 +f 338/354/338 339/355/339 359/376/359 358/375/358 +f 339/355/339 340/356/340 360/377/360 359/376/359 +f 340/356/340 321/357/322 341/378/342 360/377/360 +s 2 +f 362/440/361 363/441/362 364/380/363 365/379/364 +f 363/441/362 366/442/365 367/381/366 364/380/363 +f 366/442/365 368/443/367 369/382/368 367/381/366 +f 368/443/367 370/444/369 371/383/370 369/382/368 +f 370/444/369 372/445/371 373/384/372 371/383/370 +f 372/445/371 374/446/373 375/385/374 373/384/372 +f 374/446/373 376/447/375 377/386/376 375/385/374 +f 376/447/375 378/448/377 379/387/378 377/386/376 +f 378/448/377 380/449/379 381/388/380 379/387/378 +f 380/449/379 382/450/381 383/389/382 381/388/380 +f 382/450/381 384/451/383 385/390/384 383/389/382 +f 384/451/383 386/452/385 387/391/386 385/390/384 +f 386/452/385 388/453/387 389/392/388 387/391/386 +f 388/453/387 390/454/389 391/393/390 389/392/388 +f 390/454/389 392/455/391 393/394/392 391/393/390 +f 392/455/391 394/456/393 395/395/394 393/394/392 +f 394/456/393 396/457/395 397/396/396 395/395/394 +f 396/457/395 398/458/397 399/397/398 397/396/396 +f 398/458/397 400/459/399 401/398/400 399/397/398 +f 400/459/399 362/460/361 365/399/364 401/398/400 +s 1 +f 2/2/2 1/1/1 361/400/401 +f 3/3/5 2/2/2 361/401/401 +f 4/4/7 3/3/5 361/402/401 +f 5/5/9 4/4/7 361/403/401 +f 6/6/11 5/5/9 361/404/401 +f 7/7/13 6/6/11 361/405/401 +f 8/8/15 7/7/13 361/406/401 +f 9/9/17 8/8/15 361/407/401 +f 10/10/19 9/9/17 361/408/401 +f 11/11/21 10/10/19 361/409/401 +f 12/12/23 11/11/21 361/410/401 +f 13/13/25 12/12/23 361/411/401 +f 14/14/27 13/13/25 361/412/401 +f 15/15/29 14/14/27 361/413/401 +f 16/16/31 15/15/29 361/414/401 +f 17/17/33 16/16/31 361/415/401 +f 18/18/35 17/17/33 361/416/401 +f 19/19/37 18/18/35 361/417/401 +f 20/20/39 19/19/37 361/418/401 +f 1/21/1 20/20/39 361/419/401 +s 2 +f 365/379/364 364/380/363 402/420/402 +f 364/380/363 367/381/366 402/421/402 +f 367/381/366 369/382/368 402/422/402 +f 369/382/368 371/383/370 402/423/402 +f 371/383/370 373/384/372 402/424/402 +f 373/384/372 375/385/374 402/425/402 +f 375/385/374 377/386/376 402/426/402 +f 377/386/376 379/387/378 402/427/402 +f 379/387/378 381/388/380 402/428/402 +f 381/388/380 383/389/382 402/429/402 +f 383/389/382 385/390/384 402/430/402 +f 385/390/384 387/391/386 402/431/402 +f 387/391/386 389/392/388 402/432/402 +f 389/392/388 391/393/390 402/433/402 +f 391/393/390 393/394/392 402/434/402 +f 393/394/392 395/395/394 402/435/402 +f 395/395/394 397/396/396 402/436/402 +f 397/396/396 399/397/398 402/437/402 +f 399/397/398 401/398/400 402/438/402 +f 401/398/400 365/399/364 402/439/402 +s off +f 341/358/403 342/359/404 363/441/405 362/440/406 +f 342/359/407 343/360/408 366/442/409 363/441/410 +f 343/360/411 344/361/412 368/443/413 366/442/414 +f 344/361/415 345/362/416 370/444/417 368/443/418 +f 345/362/419 346/363/420 372/445/421 370/444/422 +f 346/363/423 347/364/424 374/446/425 372/445/426 +f 347/364/427 348/365/428 376/447/429 374/446/430 +f 348/365/431 349/366/432 378/448/433 376/447/434 +f 349/366/435 350/367/436 380/449/437 378/448/438 +f 350/367/439 351/368/440 382/450/441 380/449/442 +f 351/368/443 352/369/444 384/451/445 382/450/446 +f 352/369/447 353/370/448 386/452/449 384/451/450 +f 353/370/451 354/371/452 388/453/453 386/452/454 +f 354/371/455 355/372/456 390/454/457 388/453/458 +f 355/372/459 356/373/460 392/455/461 390/454/462 +f 356/373/463 357/374/464 394/456/465 392/455/466 +f 357/374/467 358/375/468 396/457/469 394/456/470 +f 358/375/471 359/376/472 398/458/473 396/457/474 +f 359/376/475 360/377/476 400/459/477 398/458/478 +f 360/377/479 341/378/480 362/460/481 400/459/482 diff --git a/package.json b/package.json index be683fc..e99188d 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "gl-matrix": "^2.3.2", "stats-js": "^1.0.0-alpha1", "three": "^0.82.1", + "three-obj-loader": "^1.0.2", "three-orbit-controls": "^82.1.0" }, "devDependencies": { diff --git a/src/framework.js b/src/framework.js index 76f901a..6858841 100644 --- a/src/framework.js +++ b/src/framework.js @@ -1,4 +1,3 @@ - const THREE = require('three'); const OrbitControls = require('three-orbit-controls')(THREE) import Stats from 'stats-js' @@ -29,7 +28,7 @@ function init(callback, update) { var renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setPixelRatio(window.devicePixelRatio); renderer.setSize(window.innerWidth, window.innerHeight); - renderer.setClearColor(0x020202, 0); + renderer.setClearColor(0xe2dfc7, 1); var controls = new OrbitControls(camera, renderer.domElement); controls.enableDamping = true; diff --git a/src/lsystem.js b/src/lsystem.js index e643b6d..22d8ac8 100644 --- a/src/lsystem.js +++ b/src/lsystem.js @@ -5,37 +5,258 @@ function Rule(prob, str) { this.successorString = str; // The string that will replace the char that maps to this Rule } -// TODO: Implement a linked list class and its requisite functions -// as described in the homework writeup +//NODE +var Node = function(value, iteration){ + var node = {}; + + node.value = value; + node.next = null; + node.prev = null; + + node.it = iteration; + return node; +}; + +//LINKEDLIST +var LinkedList = function(){ + var list = {}; + + //this should always point to the first node in the list + list.head = null; + + //this should always point to the last node in the list + list.tail = null; + + + list.linkTwoNodes = function(A,B) + { + //combine A and B: A.next = B and B.prev = A + A.next = B; + B.prev = A; + }; + + list.addToTail = function(value, iteration) + { + var newNode = Node(value, iteration); + + if(!list.head) + { + this.head = newNode; + this.tail = newNode; + } + else + { + //connecting the two links + this.tail.next = newNode; + this.tail.next.prev = this.tail; + + //setting the tail to the end node + this.tail = newNode; + } + }; + + + list.createLL = function(input_string, iteration) + { + for (var i=0; i < input_string.length; i++) + { + list.addToTail(input_string.charAt(i), iteration); + } + }; + + list.iterateAndExpandLL = function(F, X, A, grammar, iteration) + { + var T_OLL_P = this.head; + while (!(!T_OLL_P)) + { + if(T_OLL_P.value == F || T_OLL_P.value == X || T_OLL_P.value == A) + { + //console.log(T_OLL_P.value); + var T_NLL_P = new LinkedList(); + if(T_OLL_P.value == F) + { + if(Math.floor(Math.random() * 10) <= (grammar.F[0].probability * 10)) + T_NLL_P.createLL(grammar.F[0].successorString, iteration); + } + else if(T_OLL_P.value == X) + { + if(Math.floor(Math.random() * 10) <= (grammar.X[0].probability * 10)) + T_NLL_P.createLL(grammar.X[0].successorString, iteration); + } + else if(T_OLL_P.value == A) + { + if(Math.floor(Math.random() * 10) <= (grammar.A[0].probability * 10)) + T_NLL_P.createLL(grammar.A[0].successorString, iteration); + } + + var T_P = T_OLL_P; + T_OLL_P = T_OLL_P.next; + + if(T_NLL_P.head == null) + { + //console.log(T_OLL_P.value); + continue; + } + + //checking if T_P.prev is null + if(T_P.prev == null) + { + this.head = T_NLL_P.head; + T_NLL_P.tail.next = T_P.next; + + //if X is the only node + if(T_P.next == null) + { + this.tail = T_NLL_P.tail; + break; + } + else //there are mode nodes ahead + { + T_P.next.prev = T_NLL_P.tail; + continue; + } + } + + //checking is T_P.next is null + if(T_P.next == null) + { + this.tail = T_NLL_P.tail; + T_NLL_P.head.prev = T_P.prev; + T_P.prev.next = T_NLL_P.head; + break; + } + + //if T_P is in the middle somewhere + //console.log(T_P.value); + + T_P.prev.next = T_NLL_P.head; + T_P.next.prev = T_NLL_P.tail; + T_NLL_P.head.prev = T_P.prev; + T_NLL_P.tail.next = T_P.next; + T_P = null; + + //console.log(this.makeString()); + + continue; + + } + + T_OLL_P = T_OLL_P.next; + } + + //console.log(this.tail.value); + }; + + list.makeString = function() + { + var T_P = this.head; + var str = ""; + while (!(!T_P)) + { + str += T_P.value; + T_P = T_P.next; + } + return str; + }; + + list.getSize = function() + { + var size = 0; + var T_P = this.head; + while (!(!T_P)) + { + size += 1; + T_P = T_P.next; + } + return size; + }; + + + //Test Functions + list.getValue = function() //returns head node value + { + return list.head.value; + }; + + list.getHead = function() //returns the head node + { + return list.head; + }; + + list.getTail = function() //returns the tail + { + return list.tail; + }; + + list.printLLVal = function() //prints all the nodes value in order first to last + { + var T_NP = list.head; + + while (!(!T_NP)) + { + console.log(T_NP.value); + T_NP = T_NP.next; + } + + }; + + return list; +}; + // TODO: Turn the string into linked list -export function stringToLinkedList(input_string) { +export function StringToLinkedList(input_string, grammar, n) { // ex. assuming input_string = "F+X" // you should return a linked list where the head is // at Node('F') and the tail is at Node('X') var ll = new LinkedList(); - return ll; + + for(var i = 0; i <= n ; i++) + { + + if(i == 0) + { + ll.createLL(input_string); // create the LL of the axiom + } + else // replace axiom with grammar + { + replaceNode(ll, "F" , "X", "A", grammar, i); + } + } + + console.log(ll.makeString()); + return ll; } // TODO: Return a string form of the LinkedList export function linkedListToString(linkedList) { // ex. Node1("F")->Node2("X") should be "FX" - var result = ""; + var result = linkedList.makeString; return result; } // TODO: Given the node to be replaced, // insert a sub-linked-list that represents replacementString -function replaceNode(linkedList, node, replacementString) { +function replaceNode(linkedList, node1, node2, node3, grammar, iteration) { + + linkedList.iterateAndExpandLL(node1, node2, node3, grammar, iteration); + } export default function Lsystem(axiom, grammar, iterations) { // default LSystem - this.axiom = "FX"; + this.axiom = "F"; this.grammar = {}; - this.grammar['X'] = [ - new Rule(1.0, '[-FX][+FX]') + this.grammar['F'] = [ + new Rule(0.5, 'F[-F[-FA]]F[+FA][F]') + ]; + this.grammar['X'] = [ + new Rule(0.5, 'X+AF+') + ]; + this.grammar['A'] = [ + new Rule(0.5, '−FX−A') ]; + this.iterations = 0; // Set up the axiom string @@ -57,20 +278,77 @@ export default function Lsystem(axiom, grammar, iterations) { // A function to alter the axiom string stored // in the L-system - this.updateAxiom = function(axiom) { + this.UpdateAxiom = function(axiom) { // Setup axiom if (typeof axiom !== "undefined") { this.axiom = axiom; } } + + this.UpdateGrammarF = function(ss_string) + { + if(typeof this.grammar.F[0] !== "undefined") + { + //console.log(ss_string); + this.grammar.F[0].successorString = ss_string; + } + } + + this.UpdateGrammarProbF = function(prob_F) + { + if(typeof this.grammar.F[0] !== "undefined") + { + //console.log(prob_F); + this.grammar.F[0].probability = prob_F; + } + } + + this.UpdateGrammarA = function(ss_string) + { + if(typeof this.grammar.A[0] !== "undefined") + { + //console.log(ss_string); + this.grammar.A[0].successorString = ss_string; + } + } + + this.UpdateGrammarProbA = function(prob_A) + { + if(typeof this.grammar.A[0] !== "undefined") + { + //console.log(prob_A); + this.grammar.A[0].probability = prob_A; + } + } + + + this.UpdateGrammarX = function(ss_string) + { + if(typeof this.grammar.X[0] !== "undefined") + { + //console.log(ss_string); + this.grammar.X[0].successorString = ss_string; + } + } + + this.UpdateGrammarProbX = function(prob_X) + { + if(typeof this.grammar.X[0] !== "undefined") + { + //console.log(prob_X); + this.grammar.X[0].probability = prob_X; + } + } + // TODO // This function returns a linked list that is the result // of expanding the L-system's axiom n times. // The implementation we have provided you just returns a linked // list of the axiom. - this.doIterations = function(n) { - var lSystemLL = StringToLinkedList(this.axiom); + this.DoIterations = function(n) { + + var lSystemLL = StringToLinkedList(this.axiom, this.grammar, n); return lSystemLL; } } \ No newline at end of file diff --git a/src/main.js b/src/main.js index f0c6600..37a88da 100644 --- a/src/main.js +++ b/src/main.js @@ -3,8 +3,21 @@ const THREE = require('three'); // older modules are imported like this. You sho import Framework from './framework' import Lsystem, {LinkedListToString} from './lsystem.js' import Turtle from './turtle.js' +const OBJLoader = require('three-obj-loader')(THREE) var turtle; +var turn = { + Angle: 90 +} + +var grammar = { + A: '−FX−A', + X: 'X+AF+', + F: 'F[-F[-FA]]F[+FA][F]', + Prob_F: 0.5, + Prob_X: 0.5, + Prob_A: 0.5 +} // called after the scene loads function onLoad(framework) { @@ -14,6 +27,19 @@ function onLoad(framework) { var gui = framework.gui; var stats = framework.stats; + //load obj +// var leafMaterial = new THREE.MeshLambertMaterial({ color: 0x00ff00, side: THREE.DoubleSide }); +// var objLoader = new THREE.OBJLoader(); +//// debugger; +// objLoader.load('/geo/fruit.obj', function(obj) { +// var featherGeo = obj.children[0].geometry; +// var new_fm = new THREE.Mesh(featherGeo, leafMaterial); +//// debugger; +// new_fm.name = "fruit"; +// scene.add(new_fm); +// }); + + // initialize a simple box and material var directionalLight = new THREE.DirectionalLight( 0xffffff, 1 ); directionalLight.color.setHSL(0.1, 1, 0.95); @@ -38,10 +64,57 @@ function onLoad(framework) { doLsystem(lsys, lsys.iterations, turtle); }); - gui.add(lsys, 'iterations', 0, 12).step(1).onChange(function(newVal) { + //changing grammar + gui.add(grammar, 'F').onChange(function(newVal) { + clearScene(turtle); + lsys.UpdateGrammarF(newVal); + doLsystem(lsys, lsys.iterations, turtle); + }); + + gui.add(grammar, 'Prob_F').onChange(function(newVal) { + clearScene(turtle); + lsys.UpdateGrammarProbF(newVal); + doLsystem(lsys, lsys.iterations, turtle); + }); + + gui.add(grammar, 'X').onChange(function(newVal) { + clearScene(turtle); + lsys.UpdateGrammarX(newVal); + doLsystem(lsys, lsys.iterations, turtle); + }); + + gui.add(grammar, 'Prob_X').onChange(function(newVal) { + clearScene(turtle); + lsys.UpdateGrammarProbX(newVal); + doLsystem(lsys, lsys.iterations, turtle); + }); + + gui.add(grammar, 'A').onChange(function(newVal) { + clearScene(turtle); + lsys.UpdateGrammarA(newVal); + doLsystem(lsys, lsys.iterations, turtle); + }); + + gui.add(grammar, 'Prob_A').onChange(function(newVal) { + clearScene(turtle); + lsys.UpdateGrammarProbA(newVal); + doLsystem(lsys, lsys.iterations, turtle); + }); + + + //changing iterations + gui.add(lsys, 'iterations', 0, 100).step(1).onChange(function(newVal) { clearScene(turtle); doLsystem(lsys, newVal, turtle); }); + +// gui.add(turtle, "angle", 0, 360).step(1).onChange(function(newVal) +// { +// //turtle.angle = newVal; +// //console.log(turtle.angle); +// turtle.setAngle(newVal); +// }); +// } // clears the scene by removing all geometries added by turtle.js diff --git a/src/turtle.js b/src/turtle.js index 1db2723..8ad98ef 100644 --- a/src/turtle.js +++ b/src/turtle.js @@ -16,20 +16,87 @@ export default class Turtle { constructor(scene, grammar) { this.state = new TurtleState(new THREE.Vector3(0,0,0), new THREE.Vector3(0,1,0)); this.scene = scene; - + this.stack = []; + this.angle = Math.floor(Math.random() * 10) * 5; + this.scale = 0.1; + // TODO: Start by adding rules for '[' and ']' then more! // Make sure to implement the functions for the new rules inside Turtle if (typeof grammar === "undefined") { this.renderGrammar = { - '+' : this.rotateTurtle.bind(this, 30, 0, 0), - '-' : this.rotateTurtle.bind(this, -30, 0, 0), - 'F' : this.makeCylinder.bind(this, 2, 0.1) + '+' : this.rotateTurtle.bind(this, this.angle, 0, 0), + '-' : this.rotateTurtle.bind(this, -this.angle, 0, 0), + 'F' : this.makeCylinder.bind(this, 2, this.scale), + '[' : this.storeTurtlePosition.bind(this), + ']' : this.restoreTurtlePosition.bind(this), + 'X' : this.XrotateTurtle.bind(this, 0, 90, 0), + 'A' : this.Adostuff.bind(this) }; } else { this.renderGrammar = grammar; } } + //turtle set angle + setAngle(angle_in) + { +// if (typeof this.angle !== "undefined") { +// this.angle = angle_in; +// } +// var a = angle_in; +// this.angle = angle_in; +// console.log(this.angle); + } + + Adostuff() + { +// var i = new TurtleState(this.state.pos, this.state.dir); +// console.log(i.pos); + // load a simple obj mesh + //console.log("Adostuff"); +// var fruit = this.scene.getObjectByName("fruit"); +// if(typeof fruit !== 'undefined') +// { +// //console.log() +// fruit.position.set(this.state.pos.x, this.state.pos.y-0.4, this.state.pos.z); +// //fruit.rotate(5,0,0); +// console.log(fruit.position) +// } + + var geometry = new THREE.SphereGeometry( 0.2, 10, 10 ); + var material = new THREE.MeshBasicMaterial( {color: 0xff0000} ); + var sphere = new THREE.Mesh( geometry, material ); + this.scene.add( sphere ); + + sphere.position.set(this.state.pos.x, this.state.pos.y, this.state.pos.z); + + } + + XrotateTurtle(x, y, z) { + + //console.log(this.angle); + + var e = new THREE.Euler( + x * 3.14/180, + y * 3.14/180, + z * 3.14/180); + this.state.dir.applyEuler(e); + } + + + + //stores the position of the turtle in a stack + storeTurtlePosition() + { + var i = new TurtleState(this.state.pos, this.state.dir); + this.stack.push(i); + } + + restoreTurtlePosition() + { + this.state = this.stack.pop(); + } + // Resets the turtle's position to the origin // and its orientation to the Y axis clear() { @@ -46,10 +113,13 @@ export default class Turtle { // Rotate the turtle's _dir_ vector by each of the // Euler angles indicated by the input. rotateTurtle(x, y, z) { + + //console.log("Rotating"); + var e = new THREE.Euler( x * 3.14/180, - y * 3.14/180, - z * 3.14/180); + (y + (Math.floor(Math.random() * 10) * (Math.floor(Math.random() * 10) - 5))) * 3.14/180, + (z + (Math.floor(Math.random() * 10) * (Math.floor(Math.random() * 10) - 5))) * 3.14/180); this.state.dir.applyEuler(e); } @@ -69,11 +139,15 @@ export default class Turtle { // Make a cylinder of given length and width starting at turtle pos // Moves turtle pos ahead to end of the new cylinder makeCylinder(len, width) { + //console.log("Moving forward"); + //console.log(width); + var geometry = new THREE.CylinderGeometry(width, width, len); - var material = new THREE.MeshBasicMaterial( {color: 0x00cccc} ); + var material = new THREE.MeshBasicMaterial( {color: 0x7D4900} ); var cylinder = new THREE.Mesh( geometry, material ); this.scene.add( cylinder ); - + + //Orient the cylinder to the turtle's current direction var quat = new THREE.Quaternion(); quat.setFromUnitVectors(new THREE.Vector3(0,1,0), this.state.dir); @@ -87,7 +161,8 @@ export default class Turtle { var trans = this.state.pos.add(this.state.dir.multiplyScalar(0.5 * len)); mat5.makeTranslation(trans.x, trans.y, trans.z); cylinder.applyMatrix(mat5); - + + //Scoot the turtle forward by len units this.moveForward(len/2); }; @@ -96,7 +171,9 @@ export default class Turtle { // Look in the Turtle's constructor for examples of how to bind // functions to grammar symbols. renderSymbol(symbolNode) { - var func = this.renderGrammar[symbolNode.character]; + //this.scale = symbolNode.it/10; + //console.log("scale " + this.scale); + var func = this.renderGrammar[symbolNode.value]; if (func) { func(); }