-
Notifications
You must be signed in to change notification settings - Fork 21
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
69bb306
commit d1cd28c
Showing
286 changed files
with
98,657 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
READ ME FOR THE VECTOR SYNTHESIS PARSER | ||
|
||
This Python script assembles the lines and vertices of a 3D OBJ file into three tables which can be used by the Pure Data Vector Synthesis library to render 3D shapes as audio signals sent to an XY oscilloscope or other vector display. | ||
|
||
PREPROCESSING: | ||
|
||
1) You will need to import your OBJ file into Hansi Raber’s Oscilloscope application: | ||
https://github.com/kritzikratzi/Oscilloscope | ||
|
||
2) Save the file you have imported the OBJ file into and open it in a text editor. | ||
|
||
3) Locate the sections of the file labelled “lines” and “vertices” as shown below, and copy those blocks of text into the “lines_vertices.py” file as shown below. | ||
|
||
4) Run the script as shown below. It will generate three text files as well as tell you the total number of vertices in the shape. | ||
|
||
5) Load the contents of “xvert.txt”, “yvert.txt” and “zvert.txt” into the appropriate tables in the Pd patch you wish to use. Remember to adjust the table size to accomodate the total number of vertices, as well as the multiplier for the [phasor~] which reads them. See “V-cube-help.pd” for example, to see a patch which uses these kind of tables. | ||
|
||
FORMAT OF LINES_VERTICES | ||
|
||
Lines and Vertices are processed from a single file in the same directory as the script. | ||
|
||
The script assumes a file named "lines_vertices.py" | ||
|
||
formating of "lines_vertices.py" is as follows: | ||
|
||
"lines":[{0 1}{1 2}{2 6}{6 2}{2 7}{7 1}{1 6}{6 5}{5 3}{3 5}{5 6}{6 10}{10 3}{3 8}{8 3}{3 9}{9 2}{2 9}{9 3}{3 10}{10 5}{5 10}{10 6}{6 11}{11 1}{1 7}{7 2}{2 10}{10 9}{9 8}{8 4}{4 3}{3 4}{4 5}{5 11}{11 4}{4 8}{8 7}{7 8}{8 9}{9 10}{10 2}{2 1}{1 11}{11 5}{5 4}{4 11}{11 6}{6 1}{1 0}{0 4}{4 0}{0 7}{7 9}{9 7}{7 0}{0 8}{8 0}{0 11}{11 0}] | ||
|
||
"vertices":[{0,-0.525731,0.850651}{0.850651,0,0.525731}{0.850651,0,-0.525731}{-0.850651,0,-0.525731}{-0.850651,0,0.525731}{-0.525731,0.850651,0}{0.525731,0.850651,0}{0.525731,-0.850651,0}{-0.525731,-0.850651,0}{0,-0.525731,-0.850651}{0,0.525731,-0.850651}{0,0.525731,0.850651}] | ||
|
||
|
||
n.b. no extraneous spaces or characters. | ||
|
||
the script deletes unnecessary characters and changes others to format this data into list variables that python can work with. | ||
|
||
RUNNING THE SCRIPT | ||
|
||
to run the script: | ||
|
||
1 Navigate to the script directory. | ||
2 type "python vs_line_parse.py" | ||
3 this script was written in python 2.7 not sure if it will work under python 3.0 | ||
|
||
SCRIPT by LEE MONTGOMERY |
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
|
||
import sys | ||
import fileinput | ||
import re | ||
import csv | ||
from itertools import izip | ||
|
||
|
||
|
||
# format into list of tuples | ||
for i, line in enumerate(fileinput.input('lines_vertices.py', inplace=1)): | ||
sys.stdout.write(line.replace(' ', ',')) # replace ' ' and write ',' | ||
for i, line in enumerate(fileinput.input('lines_vertices.py', inplace=1)): | ||
sys.stdout.write(line.replace('"', '')) # replace '"' and write None | ||
for i, line in enumerate(fileinput.input('lines_vertices.py', inplace=1)): | ||
sys.stdout.write(line.replace(':', '=')) # replace ':' and write '=' | ||
for i, line in enumerate(fileinput.input('lines_vertices.py', inplace=1)): | ||
sys.stdout.write(line.replace('{', '(')) # replace '{' and write'(' | ||
for i, line in enumerate(fileinput.input('lines_vertices.py', inplace=1)): | ||
sys.stdout.write(line.replace('}', '),')) # replace '}' and write ')' | ||
for i, line in enumerate(fileinput.input('lines_vertices.py', inplace=1)): | ||
sys.stdout.write(line.replace(',]', ']')) # replace ',]' and write ']' - error correct | ||
for i, line in enumerate(fileinput.input('lines_vertices.py', inplace=1)): | ||
sys.stdout.write(line.replace(',[', '[')) # replace ',[' and write '[' - error correct | ||
|
||
|
||
from lines_vertices import * | ||
|
||
linenos=[x[0] for x in lines] | ||
xpoints=[x[0] for x in vertices] | ||
ypoints=[x[1] for x in vertices] | ||
zpoints=[x[2] for x in vertices] | ||
|
||
xpoints_ord=[] | ||
ypoints_ord=[] | ||
zpoints_ord=[] | ||
|
||
|
||
for i in range(len(linenos)): | ||
xpoints_ord.append(xpoints[int(linenos[i])]) | ||
ypoints_ord.append(ypoints[int(linenos[i])]) | ||
zpoints_ord.append(zpoints[int(linenos[i])]) | ||
|
||
print len(linenos) | ||
|
||
|
||
with open('xvert.txt', 'wb') as f: | ||
for item in xpoints_ord: | ||
print>>f,item | ||
|
||
|
||
|
||
with open('yvert.txt', 'wb') as f: | ||
for item in ypoints_ord: | ||
print>>f,item | ||
|
||
with open('zvert.txt', 'wb') as f: | ||
for item in zpoints_ord: | ||
print>>f,item | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
#N canvas 12 62 1214 696 10; | ||
#X obj 496 363 expr~ $v1 && $v2; | ||
#X obj 24 423 vs-seeme; | ||
#X obj 39 194 vs-operator-gui \$0 \$0-operator-one; | ||
#A saved 200 0 2 5 0 50 -2 5 1 0 0; | ||
#X obj 353 192 vs-operator-gui \$0 \$0-operator-two; | ||
#A saved 200 0 2 5 0 50 90 5 1 0 0; | ||
#X text 623 591 Derek Holzer; | ||
#X text 623 640 [email protected]; | ||
#X text 623 615 Helsinki May 2019; | ||
#X text 24 677 CAUTION: make sure to rename "\$0-<objectname>-one" | ||
to "\$0-<objectname>-two" when making multiple copies!; | ||
#X obj 39 104 vs-phasor-gui \$0 \$0-phasor-two; | ||
#A saved 25 0 1 0; | ||
#X obj 349 104 vs-phasor-gui \$0 \$0-phasor-three; | ||
#A saved 0 0 0 0; | ||
#X text 438 386 (Blank brightness only when both inputs are "0"); | ||
#X obj 271 512 cnv 15 320 150 empty empty Connect_here_to_test 20 12 | ||
0 14 -191407 -66577 0; | ||
#X obj 619 513 cnv 15 100 60 empty empty empty 20 12 0 14 -233017 -66577 | ||
0; | ||
#X obj 655 535 bng 15 250 50 0 empty empty ? 17 7 0 10 -4032 -1 -1 | ||
; | ||
#X text 633 517 CLICK THE; | ||
#X text 637 553 FOR HELP; | ||
#X obj 24 12 vs-phasor-gui \$0 \$0-phasor-one; | ||
#A saved 25 0 0 0; | ||
#X obj 279 549 vs-ilda-throw-gui \$0 \$0-laserone; | ||
#A saved 8 50 1 0 1 0 1; | ||
#X obj 489 455 *~; | ||
#X obj 587 434 nbx 5 14 -1e+37 1e+37 0 1 empty empty empty 0 -8 0 10 | ||
-262144 -1 -1 13 256; | ||
#X obj 587 462 / 100; | ||
#X obj 686 24 vs-ext-input \$0 \$0-input; | ||
#A saved 100 0 0 0 0 0 0 0 0 0 0 0 0 1 1 100 0 0 0 1 1 0; | ||
#X connect 0 0 18 0; | ||
#X connect 2 0 1 1; | ||
#X connect 2 0 17 0; | ||
#X connect 2 1 0 0; | ||
#X connect 3 0 1 2; | ||
#X connect 3 0 17 1; | ||
#X connect 3 1 0 1; | ||
#X connect 8 0 2 0; | ||
#X connect 8 0 3 0; | ||
#X connect 9 0 3 2; | ||
#X connect 9 0 2 2; | ||
#X connect 16 0 1 0; | ||
#X connect 18 0 17 2; | ||
#X connect 19 0 20 0; | ||
#X connect 20 0 18 1; | ||
#X connect 21 0 3 2; | ||
#X connect 21 0 2 2; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
#N canvas 427 23 820 734 10; | ||
#X obj 555 362 expr~ $v1 && $v2; | ||
#X obj 24 423 vs-seeme; | ||
#X obj 39 194 vs-operator-gui \$0 \$0-operator-one; | ||
#A saved 100 0 0 1 0 100 0 1 1 0 0; | ||
#X obj 353 192 vs-operator-gui \$0 \$0-operator-two; | ||
#A saved 500 0 0 1 0 0 90 1 1 0 0; | ||
#X text 623 591 Derek Holzer; | ||
#X text 623 640 [email protected]; | ||
#X text 623 615 Helsinki May 2019; | ||
#X text 24 677 CAUTION: make sure to rename "\$0-<objectname>-one" | ||
to "\$0-<objectname>-two" when making multiple copies!; | ||
#X obj 39 104 vs-phasor-gui \$0 \$0-phasor-two; | ||
#A saved 220 0 0 0; | ||
#X obj 349 104 vs-phasor-gui \$0 \$0-phasor-three; | ||
#A saved 0 50 0 0; | ||
#X text 438 386 (Blank brightness only when both inputs are "0"); | ||
#X obj 271 512 cnv 15 320 150 empty empty Connect_here_to_test 20 12 | ||
0 14 -191407 -66577 0; | ||
#X obj 619 513 cnv 15 100 60 empty empty empty 20 12 0 14 -233017 -66577 | ||
0; | ||
#X obj 655 535 bng 15 250 50 0 empty empty ? 17 7 0 10 -4032 -1 -1 | ||
; | ||
#X text 633 517 CLICK THE; | ||
#X text 637 553 FOR HELP; | ||
#X obj 24 12 vs-phasor-gui \$0 \$0-phasor-one; | ||
#A saved 50 0 1 0; | ||
#X obj 280 532 vs-audiodac-gui \$0 \$0-dac-vectorgen; | ||
#A saved 75 0 1 2 0 1 25 0 0; | ||
#X connect 0 0 17 2; | ||
#X connect 2 0 1 1; | ||
#X connect 2 0 17 0; | ||
#X connect 2 1 0 0; | ||
#X connect 3 0 1 2; | ||
#X connect 3 0 17 1; | ||
#X connect 3 1 0 1; | ||
#X connect 8 0 2 0; | ||
#X connect 8 0 3 0; | ||
#X connect 9 0 3 2; | ||
#X connect 16 0 1 0; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
#N canvas 68 42 1056 639 10; | ||
#X obj 349 271 vs-lissajous-gui \$0 \$0-lissajous-one; | ||
#A saved 50 0 0 0 1 100 100 2 0; | ||
#X obj 349 7 vs-circle-gui \$0 \$0-circle-one; | ||
#A saved 50 0 0 0 1 100 100 0; | ||
#X obj 349 93 vs-triangle-gui \$0 \$0-triangle-one; | ||
#A saved 50 0 0 0 1 100 100 0; | ||
#X obj 349 183 vs-diamond-gui \$0 \$0-diamond-one; | ||
#A saved 50 0 0 0 1 100 100 0; | ||
#X text 534 536 Derek Holzer; | ||
#X text 534 585 [email protected]; | ||
#X text 534 560 Helsinki May 2019; | ||
#X obj 19 6 vs-poly-gui \$0 \$0-poly-one; | ||
#A saved 50 0 0 0 1 100 100 5 100 0; | ||
#X obj 19 268 vs-2D-data-gui \$0 \$0-2d-data-one; | ||
#A saved 50 0 0 0 1 100 100 0 0; | ||
#X obj 19 398 vs-2D-wav-gui \$0 \$0-2d-data-wav; | ||
#A saved 50 0 0 0 1 100 100 0 0; | ||
#X obj 19 115 vs-raster-gui \$0 \$0-raster-one; | ||
#A saved 25 25 100 0 0 0 0 0 2 100; | ||
#X obj 340 368 cnv 15 320 150 empty empty Connect_here_to_test 20 12 | ||
0 14 -191407 -66577 0; | ||
#X obj 349 398 vs-audiodac-gui \$0 \$0-dac-2dvectors; | ||
#A saved 75 0 1 2 1 1 25 0 0; | ||
#X obj 684 45 vs-operator-gui \$0 \$0-operator-one; | ||
#A saved 1 0 0 8 0 100 0 5 1 0 0; | ||
#X text 687 193 Try connecting the left outlet of [vs-operator-gui] | ||
to the different inlets of the 2D vector shapes.; | ||
#X text 112 562 CAUTION: make sure to rename "\$0-<objectname>-one" | ||
to "\$0-<objectname>-two" when making multiple copies!; | ||
#X obj 688 234 cnv 15 340 350 empty empty empty 20 12 0 14 -4034 -66577 | ||
0; | ||
#X obj 898 517 cnv 15 100 60 empty empty empty 20 12 0 14 -233017 -66577 | ||
0; | ||
#X obj 934 539 bng 15 250 50 0 empty empty ? 17 7 0 10 -4032 -1 -1 | ||
; | ||
#X text 912 521 CLICK THE; | ||
#X text 916 557 FOR HELP; | ||
#X text 714 530 When in doubt about the; | ||
#X text 713 550 inlets and outlets --->; | ||
#X text 697 268 for their inlets and outlets:; | ||
#X text 702 293 INLETS:; | ||
#X text 702 383 OUTLETS:; | ||
#X text 728 406 1) X signal; | ||
#X text 728 426 2) Y signal; | ||
#X text 728 446 3) Brightness signal (0-1); | ||
#X text 728 316 1) Ramp signal (i.e. from [phasor~]) (0-1); | ||
#X text 728 336 2) Scale signal (0-1); | ||
#X text 728 356 3) Brightness signal (0-1); | ||
#X text 697 248 Most 2D vector generators follow a pattern; | ||
#X text 700 474 Please see help for [vs-poly-gui] and [vs-raster-gui] | ||
; | ||
#X text 702 494 for details on their inlets.; | ||
#X connect 0 0 12 0; | ||
#X connect 0 1 12 1; | ||
#X connect 0 2 12 2; | ||
#X connect 13 0 0 1; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
#N canvas 59 24 1057 750 10; | ||
#X obj 57 7 vs-3D-data-gui \$0 \$0-3d-data-one; | ||
#A saved 25 0 0 0 1 50 180 0; | ||
#X obj 56 137 vs-3D-wav-gui \$0 \$0-3d-wav-one; | ||
#A saved 50 0 0 0 1 25 100 0; | ||
#X text 59 635 Derek Holzer; | ||
#X text 59 684 [email protected]; | ||
#X text 59 659 Helsinki May 2019; | ||
#X obj 701 369 cnv 15 320 360 empty empty Connect_here_to_test 20 12 | ||
0 14 -191407 -66577 0; | ||
#X obj 710 396 vs-rotate-gui \$0 \$0-rotate-one; | ||
#A saved 120 45 180 0 0 0 1 10 0 0; | ||
#X obj 373 7 vs-cube-gui \$0 \$0-cube-one; | ||
#A saved 50 0 0 0 1 25 100 1 0; | ||
#X obj 373 127 vs-pyramid-gui \$0 \$0-pyramid-one; | ||
#A saved 50 0 0 0 1 25 100 1 0; | ||
#X obj 373 247 vs-tetrahedron-gui \$0 \$0-tet-one; | ||
#A saved 50 0 0 0 1 25 100 1 0; | ||
#X obj 373 367 vs-octahedron-gui \$0 \$0-oct-one; | ||
#A saved 50 0 0 0 1 25 100 1 0; | ||
#X obj 373 487 vs-sphere-gui \$0 \$0-sphere-one; | ||
#A saved 50 0 0 0 1 25 100 1 0; | ||
#X obj 710 7 vs-dodecahedron-gui \$0 \$0-dod-one; | ||
#A saved 50 0 0 0 1 25 100 1 0; | ||
#X obj 710 127 vs-icosahedron-gui \$0 \$0-ico-one; | ||
#A saved 50 0 0 0 1 25 100 1 0; | ||
#X obj 373 607 vs-hand-gui \$0 \$0-hand-one; | ||
#A saved 50 0 0 0 1 25 100 0 0; | ||
#X obj 710 526 vs-projector-gui \$0 \$0-project-one; | ||
#A saved 100 0 0 85; | ||
#X obj 21 268 cnv 15 340 350 empty empty empty 20 12 0 14 -4034 -66577 | ||
0; | ||
#X obj 231 521 cnv 15 100 60 empty empty empty 20 12 0 14 -233017 -66577 | ||
0; | ||
#X obj 267 543 bng 15 250 50 0 empty empty ? 17 7 0 10 -4032 -1 -1 | ||
; | ||
#X text 245 525 CLICK THE; | ||
#X text 249 561 FOR HELP; | ||
#X text 47 534 When in doubt about the; | ||
#X text 46 554 inlets and outlets --->; | ||
#X text 61 322 INLETS:; | ||
#X text 61 412 OUTLETS:; | ||
#X text 87 435 1) X signal; | ||
#X text 87 455 2) Y signal; | ||
#X text 87 495 3) Brightness signal (0-1); | ||
#X text 87 345 1) Ramp signal (i.e. from [phasor~]) (0-1); | ||
#X text 87 475 3) Z signal; | ||
#X text 87 365 2) Scale signal (0-1); | ||
#X text 87 385 3) Brightness signal (0-1); | ||
#X text 30 302 for their inlets and outlets:; | ||
#X text 27 590 CAUTION: make sure to rename "\$0-<objectname>-one" | ||
to "\$0-<objectname>-two" when making multiple copies!; | ||
#X text 30 282 All 3D vector generators follow a pattern; | ||
#X obj 709 602 vs-ilda-throw-gui \$0 \$0-laserone; | ||
#A saved 1 0 1 0 1 0 0; | ||
#X connect 6 0 15 0; | ||
#X connect 6 1 15 1; | ||
#X connect 6 2 15 2; | ||
#X connect 6 3 15 3; | ||
#X connect 13 0 6 0; | ||
#X connect 13 1 6 1; | ||
#X connect 13 2 6 2; | ||
#X connect 13 3 6 3; | ||
#X connect 15 0 35 0; | ||
#X connect 15 1 35 1; | ||
#X connect 15 2 35 2; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
#N canvas 59 24 1057 750 10; | ||
#X obj 57 7 vs-3D-data-gui \$0 \$0-3d-data-one; | ||
#A saved 25 0 0 0 1 50 180 0; | ||
#X obj 56 137 vs-3D-wav-gui \$0 \$0-3d-wav-one; | ||
#A saved 50 0 0 0 1 25 100 0; | ||
#X text 59 635 Derek Holzer; | ||
#X text 59 684 [email protected]; | ||
#X text 59 659 Helsinki May 2019; | ||
#X obj 701 369 cnv 15 320 360 empty empty Connect_here_to_test 20 12 | ||
0 14 -191407 -66577 0; | ||
#X obj 710 396 vs-rotate-gui \$0 \$0-rotate-one; | ||
#A saved 120 45 180 0 0 0 1 10 0 0; | ||
#X obj 373 7 vs-cube-gui \$0 \$0-cube-one; | ||
#A saved 50 0 0 0 1 25 100 1 0; | ||
#X obj 373 127 vs-pyramid-gui \$0 \$0-pyramid-one; | ||
#A saved 50 0 0 0 1 25 100 1 0; | ||
#X obj 373 247 vs-tetrahedron-gui \$0 \$0-tet-one; | ||
#A saved 50 0 0 0 1 25 100 1 0; | ||
#X obj 373 367 vs-octahedron-gui \$0 \$0-oct-one; | ||
#A saved 50 0 0 0 1 25 100 1 0; | ||
#X obj 373 487 vs-sphere-gui \$0 \$0-sphere-one; | ||
#A saved 50 0 0 0 1 25 100 1 0; | ||
#X obj 710 7 vs-dodecahedron-gui \$0 \$0-dod-one; | ||
#A saved 50 0 0 0 1 25 100 1 0; | ||
#X obj 710 127 vs-icosahedron-gui \$0 \$0-ico-one; | ||
#A saved 50 0 0 0 1 25 100 1 0; | ||
#X obj 373 607 vs-hand-gui \$0 \$0-hand-one; | ||
#A saved 50 0 0 0 1 25 100 0 0; | ||
#X obj 710 597 vs-audiodac-gui \$0 \$0-dac-3dvectors; | ||
#A saved 75 1 1 2 1 1 100 0 0; | ||
#X obj 710 526 vs-projector-gui \$0 \$0-project-one; | ||
#A saved 100 0 0 85; | ||
#X obj 21 268 cnv 15 340 350 empty empty empty 20 12 0 14 -4034 -66577 | ||
0; | ||
#X obj 231 521 cnv 15 100 60 empty empty empty 20 12 0 14 -233017 -66577 | ||
0; | ||
#X obj 267 543 bng 15 250 50 0 empty empty ? 17 7 0 10 -4032 -1 -1 | ||
; | ||
#X text 245 525 CLICK THE; | ||
#X text 249 561 FOR HELP; | ||
#X text 47 534 When in doubt about the; | ||
#X text 46 554 inlets and outlets --->; | ||
#X text 61 322 INLETS:; | ||
#X text 61 412 OUTLETS:; | ||
#X text 87 435 1) X signal; | ||
#X text 87 455 2) Y signal; | ||
#X text 87 495 3) Brightness signal (0-1); | ||
#X text 87 345 1) Ramp signal (i.e. from [phasor~]) (0-1); | ||
#X text 87 475 3) Z signal; | ||
#X text 87 365 2) Scale signal (0-1); | ||
#X text 87 385 3) Brightness signal (0-1); | ||
#X text 30 302 for their inlets and outlets:; | ||
#X text 27 590 CAUTION: make sure to rename "\$0-<objectname>-one" | ||
to "\$0-<objectname>-two" when making multiple copies!; | ||
#X text 30 282 All 3D vector generators follow a pattern; | ||
#X connect 6 0 16 0; | ||
#X connect 6 1 16 1; | ||
#X connect 6 2 16 2; | ||
#X connect 6 3 16 3; | ||
#X connect 13 0 6 0; | ||
#X connect 13 1 6 1; | ||
#X connect 13 2 6 2; | ||
#X connect 13 3 6 3; | ||
#X connect 16 0 15 0; | ||
#X connect 16 1 15 1; | ||
#X connect 16 2 15 2; |
Oops, something went wrong.