mirror of https://github.com/espruino/BangleApps
Fix author
parent
32415c7189
commit
e810285486
17
apps.json
17
apps.json
|
@ -2142,5 +2142,20 @@
|
|||
{"name": "counter.app.js", "url": "counter.js"},
|
||||
{"name": "counter.img", "url": "counter-icon.js", "evaluate": true}
|
||||
]
|
||||
}
|
||||
},
|
||||
{ "id": "viewstl",
|
||||
"name": "STL file viewer",
|
||||
"shortName":"ViewSTL",
|
||||
"icon": "icons8-octahedron-48.png",
|
||||
"version":"0.01",
|
||||
"description": "This app allows you to view STL 3D models on your watch",
|
||||
"tags": "tool",
|
||||
"storage": [
|
||||
{"name":"viewstl.min.js","url":"viewstl.min.js"},
|
||||
{"name":"viewstl.img","url":"viewstl-icon.js","evaluate":true},
|
||||
{"name":"tetra.stl","url":"tetra.stl"}
|
||||
{"name":"cube.stl","url":"cube.stl"},
|
||||
{"name":"icosa.stl","url":"icosa.stl"},
|
||||
]
|
||||
}
|
||||
]
|
||||
|
|
|
@ -0,0 +1,86 @@
|
|||
solid OpenSCAD_Model
|
||||
facet normal -0 0 1
|
||||
outer loop
|
||||
vertex -5 5 5
|
||||
vertex 5 -5 5
|
||||
vertex 5 5 5
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 0 1
|
||||
outer loop
|
||||
vertex 5 -5 5
|
||||
vertex -5 5 5
|
||||
vertex -5 -5 5
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 0 -1
|
||||
outer loop
|
||||
vertex -5 -5 -5
|
||||
vertex 5 5 -5
|
||||
vertex 5 -5 -5
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -0 0 -1
|
||||
outer loop
|
||||
vertex 5 5 -5
|
||||
vertex -5 -5 -5
|
||||
vertex -5 5 -5
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 -1 0
|
||||
outer loop
|
||||
vertex -5 -5 -5
|
||||
vertex 5 -5 5
|
||||
vertex -5 -5 5
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 -1 -0
|
||||
outer loop
|
||||
vertex 5 -5 5
|
||||
vertex -5 -5 -5
|
||||
vertex 5 -5 -5
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 1 -0 0
|
||||
outer loop
|
||||
vertex 5 -5 5
|
||||
vertex 5 5 -5
|
||||
vertex 5 5 5
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 1 0 0
|
||||
outer loop
|
||||
vertex 5 5 -5
|
||||
vertex 5 -5 5
|
||||
vertex 5 -5 -5
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 1 -0
|
||||
outer loop
|
||||
vertex 5 5 -5
|
||||
vertex -5 5 5
|
||||
vertex 5 5 5
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 1 0
|
||||
outer loop
|
||||
vertex -5 5 5
|
||||
vertex 5 5 -5
|
||||
vertex -5 5 -5
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1 0 0
|
||||
outer loop
|
||||
vertex -5 -5 -5
|
||||
vertex -5 5 5
|
||||
vertex -5 5 -5
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1 -0 0
|
||||
outer loop
|
||||
vertex -5 5 5
|
||||
vertex -5 -5 -5
|
||||
vertex -5 -5 5
|
||||
endloop
|
||||
endfacet
|
||||
endsolid OpenSCAD_Model
|
|
@ -0,0 +1,756 @@
|
|||
vertex 14.9126 -29.5887 -2.45
|
||||
vertex 14.9126 -30.3423 -2.45
|
||||
vertex 14.5569 -30.5817 -2.45
|
||||
vertex 6.72119 -16.5392 -2.45
|
||||
vertex -1.03592 -22.6875 -2.45
|
||||
vertex 6.04466 -15.0197 -2.45
|
||||
vertex 6.72119 -16.5392 -2.45
|
||||
vertex 7.95726 -17.6521 -2.45
|
||||
vertex 4.71675 -23.2921 -2.45
|
||||
vertex -6.32993 -13.4515 -2.45
|
||||
vertex 6.04466 -15.0197 -2.45
|
||||
vertex -6.39731 -15.1134 -2.45
|
||||
vertex -10.4974 -6.57382 -2.45
|
||||
vertex 11.945 -2.57918 -2.45
|
||||
vertex 8.9903 -9.35725 -2.45
|
||||
vertex 2.85788 12.68 -2.45
|
||||
vertex 12.0948 -2.03583 -2.45
|
||||
vertex 11.945 -2.57918 -2.45
|
||||
vertex 2.85788 22.58 -2.45
|
||||
vertex 8.548 23.2529 -2.45
|
||||
vertex 5.71576 17.63 -2.45
|
||||
vertex 11.945 15.8392 -2.45
|
||||
vertex 5.71576 17.63 -2.45
|
||||
vertex 8.9903 22.6172 -2.45
|
||||
vertex 8.54802 -9.99295 -2.45
|
||||
vertex 7.18376 -11.3057 -2.45
|
||||
vertex 8.9903 -9.35725 -2.45
|
||||
vertex 13.1679 6.37802 -2.45
|
||||
vertex 12.0948 -2.03583 -2.45
|
||||
vertex 2.85788 12.68 -2.45
|
||||
vertex 3.4908 27.6563 -2.45
|
||||
vertex 4.50931 27.1392 -2.45
|
||||
vertex 2.85788 22.58 -2.45
|
||||
vertex -0.965637 28.4369 -2.45
|
||||
vertex 3.4908 27.6563 -2.45
|
||||
vertex 2.85788 22.58 -2.45
|
||||
vertex -6.16991 25.9155 -2.45
|
||||
vertex -2.85788 22.58 -2.45
|
||||
vertex -6.87122 25.2755 -2.45
|
||||
vertex -6.16991 25.9155 -2.45
|
||||
vertex -1.60059 28.3899 -2.45
|
||||
vertex -2.85788 22.58 -2.45
|
||||
vertex -0.965637 28.4369 -2.45
|
||||
vertex -1.60059 28.3899 -2.45
|
||||
vertex -1.53212 28.4165 -2.45
|
||||
vertex -1.60059 28.3899 -2.45
|
||||
vertex -0.965637 28.4369 -2.45
|
||||
vertex -2.85788 22.58 -2.45
|
||||
vertex -5.71576 17.63 -2.45
|
||||
vertex -6.87122 25.2755 -2.45
|
||||
vertex -2.85788 22.58 -2.45
|
||||
vertex -10.7635 19.2449 -2.45
|
||||
vertex -10.4974 19.8338 -2.45
|
||||
vertex -5.71576 17.63 -2.45
|
||||
vertex -12.8441 11.4566 -2.45
|
||||
vertex -10.7635 19.2449 -2.45
|
||||
vertex -5.71576 17.63 -2.45
|
||||
vertex -12.9115 10.9427 -2.45
|
||||
vertex -12.8441 11.4566 -2.45
|
||||
vertex -2.85788 12.68 -2.45
|
||||
vertex 12.0948 15.2958 -2.45
|
||||
vertex 13.1679 6.88196 -2.45
|
||||
vertex 2.85788 12.68 -2.45
|
||||
vertex -12.8441 1.80342 -2.45
|
||||
vertex -12.9115 2.31732 -2.45
|
||||
vertex -2.85788 12.68 -2.45
|
||||
vertex -10.7635 -5.98489 -2.45
|
||||
vertex -12.8441 1.80342 -2.45
|
||||
vertex -2.85788 12.68 -2.45
|
||||
vertex 2.85788 12.68 -2.45
|
||||
vertex 13.1679 6.88196 -2.45
|
||||
vertex 13.1679 6.37802 -2.45
|
||||
vertex -2.85788 12.68 -2.45
|
||||
vertex 11.945 -2.57918 -2.45
|
||||
vertex -10.7635 -5.98489 -2.45
|
||||
vertex -2.85788 12.68 -2.45
|
||||
vertex 2.85788 12.68 -2.45
|
||||
vertex 11.945 -2.57918 -2.45
|
||||
vertex -10.4974 -6.57382 -2.45
|
||||
vertex -10.7635 -5.98489 -2.45
|
||||
vertex 11.945 -2.57918 -2.45
|
||||
vertex 7.18376 -11.3057 -2.45
|
||||
vertex -10.4974 -6.57382 -2.45
|
||||
vertex 8.9903 -9.35725 -2.45
|
||||
vertex 7.18376 -11.3057 -2.45
|
||||
vertex -6.94434 -11.9058 -2.45
|
||||
vertex -10.4974 -6.57382 -2.45
|
||||
vertex 7.18376 -11.3057 -2.45
|
||||
vertex 6.04466 -13.3564 -2.45
|
||||
vertex -6.94434 -11.9058 -2.45
|
||||
vertex -6.94434 -11.9058 -2.45
|
||||
vertex 6.04466 -13.3564 -2.45
|
||||
vertex -6.32993 -13.4515 -2.45
|
||||
vertex -6.32993 -13.4515 -2.45
|
||||
vertex 6.04466 -13.3564 -2.45
|
||||
vertex 6.04466 -15.0197 -2.45
|
||||
vertex -6.39731 -15.1134 -2.45
|
||||
vertex -1.03592 -22.6875 -2.45
|
||||
vertex -2.69011 -22.8613 -2.45
|
||||
vertex -7.59648 -17.0965 -2.45
|
||||
vertex -6.39731 -15.1134 -2.45
|
||||
vertex -2.69011 -22.8613 -2.45
|
||||
vertex -11.8228 -20.9019 -2.45
|
||||
vertex -7.59648 -17.0965 -2.45
|
||||
vertex -8.19138 -24.6488 -2.45
|
||||
vertex -12.3062 -21.5673 -2.45
|
||||
vertex -9.63184 -25.4805 -2.45
|
||||
vertex -14.5012 -26.4973 -2.45
|
||||
vertex -9.63184 -25.4805 -2.45
|
||||
vertex -14.3856 -29.7607 -2.45
|
||||
vertex -14.6722 -27.3018 -2.45
|
||||
vertex -14.6722 -27.3018 -2.45
|
||||
vertex -14.3856 -29.7607 -2.45
|
||||
vertex -14.6722 -29.7463 -2.45
|
||||
vertex -14.6722 -29.7463 -2.45
|
||||
vertex -14.3856 -29.7607 -2.45
|
||||
vertex -14.6312 -29.9392 -2.45
|
||||
vertex -14.5012 -26.4973 -2.45
|
||||
vertex -9.63184 -25.4805 -2.45
|
||||
vertex -14.6722 -27.3018 -2.45
|
||||
vertex 14.9126 -29.5887 -2.45
|
||||
vertex 14.5569 -30.5817 -2.45
|
||||
vertex 12.5441 -27.8112 -2.45
|
||||
vertex -12.3062 -21.5673 -2.45
|
||||
vertex -8.19138 -24.6488 -2.45
|
||||
vertex -9.63184 -25.4805 -2.45
|
||||
vertex -6.39731 -15.1134 -2.45
|
||||
vertex 6.04466 -15.0197 -2.45
|
||||
vertex -1.03592 -22.6875 -2.45
|
||||
vertex -12.3062 -21.5673 -2.45
|
||||
vertex -11.8228 -20.9019 -2.45
|
||||
vertex -8.19138 -24.6488 -2.45
|
||||
vertex -8.19138 -24.6488 -2.45
|
||||
vertex -7.59648 -17.0965 -2.45
|
||||
vertex -2.69011 -22.8613 -2.45
|
||||
vertex 6.72119 -16.5392 -2.45
|
||||
vertex 4.71675 -23.2921 -2.45
|
||||
vertex -1.03592 -22.6875 -2.45
|
||||
vertex 7.95726 -17.6521 -2.45
|
||||
vertex 9.67282 -18.6426 -2.45
|
||||
vertex 6.29861 -23.8061 -2.45
|
||||
vertex 7.95726 -17.6521 -2.45
|
||||
vertex 6.29861 -23.8061 -2.45
|
||||
vertex 4.71675 -23.2921 -2.45
|
||||
vertex 6.29861 -23.8061 -2.45
|
||||
vertex 10.2841 -19.193 -2.45
|
||||
vertex 13.456 -23.5588 -2.45
|
||||
vertex 9.67282 -18.6426 -2.45
|
||||
vertex 10.2841 -19.193 -2.45
|
||||
vertex 6.29861 -23.8061 -2.45
|
||||
vertex 6.29861 -23.8061 -2.45
|
||||
vertex 13.456 -23.5588 -2.45
|
||||
vertex 11.308 -26.6983 -2.45
|
||||
vertex 12.5441 -27.8112 -2.45
|
||||
vertex 11.308 -26.6983 -2.45
|
||||
vertex 13.7906 -24.3102 -2.45
|
||||
vertex 11.308 -26.6983 -2.45
|
||||
vertex 13.456 -23.5588 -2.45
|
||||
vertex 13.7906 -24.3102 -2.45
|
||||
vertex 14.9126 -29.5887 -2.45
|
||||
vertex 12.5441 -27.8112 -2.45
|
||||
vertex 13.7906 -24.3102 -2.45
|
||||
vertex 14.7 -30.7105 -2.45
|
||||
vertex 14.5569 -30.5817 -2.45
|
||||
vertex 14.9126 -30.3423 -2.45
|
||||
vertex 12.0948 15.2958 -2.45
|
||||
vertex 5.71576 17.63 -2.45
|
||||
vertex 11.945 15.8392 -2.45
|
||||
vertex -12.9115 2.31732 -2.45
|
||||
vertex -12.9115 10.9427 -2.45
|
||||
vertex -2.85788 12.68 -2.45
|
||||
vertex -2.85788 12.68 -2.45
|
||||
vertex -12.8441 11.4566 -2.45
|
||||
vertex -5.71576 17.63 -2.45
|
||||
vertex -5.71576 17.63 -2.45
|
||||
vertex -10.4974 19.8338 -2.45
|
||||
vertex -6.87122 25.2755 -2.45
|
||||
vertex -2.85788 22.58 -2.45
|
||||
vertex -0.965637 28.4369 -2.45
|
||||
vertex 2.85788 22.58 -2.45
|
||||
vertex 2.85788 22.58 -2.45
|
||||
vertex 4.50931 27.1392 -2.45
|
||||
vertex 8.548 23.2529 -2.45
|
||||
vertex 2.85788 12.68 -2.45
|
||||
vertex 5.71576 17.63 -2.45
|
||||
vertex 12.0948 15.2958 -2.45
|
||||
vertex 5.71576 17.63 -2.45
|
||||
vertex 8.548 23.2529 -2.45
|
||||
vertex 8.9903 22.6172 -2.45
|
||||
vertex 14.5569 -30.5817 2.45
|
||||
vertex 14.9126 -30.3423 2.45
|
||||
vertex 14.9126 -29.5887 2.45
|
||||
vertex 6.04466 -15.0197 2.45
|
||||
vertex -1.03592 -22.6875 2.45
|
||||
vertex 6.72119 -16.5392 2.45
|
||||
vertex 4.71675 -23.2921 2.45
|
||||
vertex 7.95726 -17.6521 2.45
|
||||
vertex 6.72119 -16.5392 2.45
|
||||
vertex -6.39731 -15.1134 2.45
|
||||
vertex 6.04466 -15.0197 2.45
|
||||
vertex -6.32993 -13.4515 2.45
|
||||
vertex 8.9903 -9.35725 2.45
|
||||
vertex 11.945 -2.57918 2.45
|
||||
vertex -10.4974 -6.57382 2.45
|
||||
vertex 11.945 -2.57918 2.45
|
||||
vertex 12.0948 -2.03583 2.45
|
||||
vertex 2.85788 12.68 2.45
|
||||
vertex 5.71576 17.63 2.45
|
||||
vertex 8.548 23.2529 2.45
|
||||
vertex 2.85788 22.58 2.45
|
||||
vertex 8.9903 22.6172 2.45
|
||||
vertex 5.71576 17.63 2.45
|
||||
vertex 11.945 15.8392 2.45
|
||||
vertex 8.9903 -9.35725 2.45
|
||||
vertex 7.18376 -11.3057 2.45
|
||||
vertex 8.54802 -9.99295 2.45
|
||||
vertex 2.85788 12.68 2.45
|
||||
vertex 12.0948 -2.03583 2.45
|
||||
vertex 13.1679 6.37802 2.45
|
||||
vertex 2.85788 22.58 2.45
|
||||
vertex 4.50931 27.1392 2.45
|
||||
vertex 3.4908 27.6563 2.45
|
||||
vertex 2.85788 22.58 2.45
|
||||
vertex 3.4908 27.6563 2.45
|
||||
vertex -0.965637 28.4369 2.45
|
||||
vertex -6.87122 25.2755 2.45
|
||||
vertex -2.85788 22.58 2.45
|
||||
vertex -6.16991 25.9155 2.45
|
||||
vertex -2.85788 22.58 2.45
|
||||
vertex -1.60059 28.3899 2.45
|
||||
vertex -6.16991 25.9155 2.45
|
||||
vertex -1.53212 28.4165 2.45
|
||||
vertex -1.60059 28.3899 2.45
|
||||
vertex -0.965637 28.4369 2.45
|
||||
vertex -2.85788 22.58 2.45
|
||||
vertex -0.965637 28.4369 2.45
|
||||
vertex -1.60059 28.3899 2.45
|
||||
vertex -2.85788 22.58 2.45
|
||||
vertex -6.87122 25.2755 2.45
|
||||
vertex -5.71576 17.63 2.45
|
||||
vertex -5.71576 17.63 2.45
|
||||
vertex -10.4974 19.8338 2.45
|
||||
vertex -10.7635 19.2449 2.45
|
||||
vertex -5.71576 17.63 2.45
|
||||
vertex -10.7635 19.2449 2.45
|
||||
vertex -12.8441 11.4566 2.45
|
||||
vertex -2.85788 12.68 2.45
|
||||
vertex -12.8441 11.4566 2.45
|
||||
vertex -12.9115 10.9427 2.45
|
||||
vertex 2.85788 12.68 2.45
|
||||
vertex 13.1679 6.88196 2.45
|
||||
vertex 12.0948 15.2958 2.45
|
||||
vertex -2.85788 12.68 2.45
|
||||
vertex -12.9115 2.31732 2.45
|
||||
vertex -12.8441 1.80342 2.45
|
||||
vertex -2.85788 12.68 2.45
|
||||
vertex -12.8441 1.80342 2.45
|
||||
vertex -10.7635 -5.98489 2.45
|
||||
vertex 13.1679 6.37802 2.45
|
||||
vertex 13.1679 6.88196 2.45
|
||||
vertex 2.85788 12.68 2.45
|
||||
vertex -10.7635 -5.98489 2.45
|
||||
vertex 11.945 -2.57918 2.45
|
||||
vertex -2.85788 12.68 2.45
|
||||
vertex 11.945 -2.57918 2.45
|
||||
vertex 2.85788 12.68 2.45
|
||||
vertex -2.85788 12.68 2.45
|
||||
vertex 11.945 -2.57918 2.45
|
||||
vertex -10.7635 -5.98489 2.45
|
||||
vertex -10.4974 -6.57382 2.45
|
||||
vertex 8.9903 -9.35725 2.45
|
||||
vertex -10.4974 -6.57382 2.45
|
||||
vertex 7.18376 -11.3057 2.45
|
||||
vertex -10.4974 -6.57382 2.45
|
||||
vertex -6.94434 -11.9058 2.45
|
||||
vertex 7.18376 -11.3057 2.45
|
||||
vertex -6.94434 -11.9058 2.45
|
||||
vertex 6.04466 -13.3564 2.45
|
||||
vertex 7.18376 -11.3057 2.45
|
||||
vertex -6.32993 -13.4515 2.45
|
||||
vertex 6.04466 -13.3564 2.45
|
||||
vertex -6.94434 -11.9058 2.45
|
||||
vertex 6.04466 -15.0197 2.45
|
||||
vertex 6.04466 -13.3564 2.45
|
||||
vertex -6.32993 -13.4515 2.45
|
||||
vertex -2.69011 -22.8613 2.45
|
||||
vertex -1.03592 -22.6875 2.45
|
||||
vertex -6.39731 -15.1134 2.45
|
||||
vertex -2.69011 -22.8613 2.45
|
||||
vertex -6.39731 -15.1134 2.45
|
||||
vertex -7.59648 -17.0965 2.45
|
||||
vertex -8.19138 -24.6488 2.45
|
||||
vertex -7.59648 -17.0965 2.45
|
||||
vertex -11.8228 -20.9019 2.45
|
||||
vertex -14.5012 -26.4973 2.45
|
||||
vertex -9.63184 -25.4805 2.45
|
||||
vertex -12.3062 -21.5673 2.45
|
||||
vertex -14.6722 -27.3018 2.45
|
||||
vertex -14.3856 -29.7607 2.45
|
||||
vertex -9.63184 -25.4805 2.45
|
||||
vertex -14.6722 -29.7463 2.45
|
||||
vertex -14.3856 -29.7607 2.45
|
||||
vertex -14.6722 -27.3018 2.45
|
||||
vertex -14.6312 -29.9392 2.45
|
||||
vertex -14.3856 -29.7607 2.45
|
||||
vertex -14.6722 -29.7463 2.45
|
||||
vertex -14.6722 -27.3018 2.45
|
||||
vertex -9.63184 -25.4805 2.45
|
||||
vertex -14.5012 -26.4973 2.45
|
||||
vertex 12.5441 -27.8112 2.45
|
||||
vertex 14.5569 -30.5817 2.45
|
||||
vertex 14.9126 -29.5887 2.45
|
||||
vertex -9.63184 -25.4805 2.45
|
||||
vertex -8.19138 -24.6488 2.45
|
||||
vertex -12.3062 -21.5673 2.45
|
||||
vertex -1.03592 -22.6875 2.45
|
||||
vertex 6.04466 -15.0197 2.45
|
||||
vertex -6.39731 -15.1134 2.45
|
||||
vertex -8.19138 -24.6488 2.45
|
||||
vertex -11.8228 -20.9019 2.45
|
||||
vertex -12.3062 -21.5673 2.45
|
||||
vertex -2.69011 -22.8613 2.45
|
||||
vertex -7.59648 -17.0965 2.45
|
||||
vertex -8.19138 -24.6488 2.45
|
||||
vertex -1.03592 -22.6875 2.45
|
||||
vertex 4.71675 -23.2921 2.45
|
||||
vertex 6.72119 -16.5392 2.45
|
||||
vertex 6.29861 -23.8061 2.45
|
||||
vertex 9.67282 -18.6426 2.45
|
||||
vertex 7.95726 -17.6521 2.45
|
||||
vertex 4.71675 -23.2921 2.45
|
||||
vertex 6.29861 -23.8061 2.45
|
||||
vertex 7.95726 -17.6521 2.45
|
||||
vertex 13.456 -23.5588 2.45
|
||||
vertex 10.2841 -19.193 2.45
|
||||
vertex 6.29861 -23.8061 2.45
|
||||
vertex 6.29861 -23.8061 2.45
|
||||
vertex 10.2841 -19.193 2.45
|
||||
vertex 9.67282 -18.6426 2.45
|
||||
vertex 11.308 -26.6983 2.45
|
||||
vertex 13.456 -23.5588 2.45
|
||||
vertex 6.29861 -23.8061 2.45
|
||||
vertex 13.7906 -24.3102 2.45
|
||||
vertex 11.308 -26.6983 2.45
|
||||
vertex 12.5441 -27.8112 2.45
|
||||
vertex 13.7906 -24.3102 2.45
|
||||
vertex 13.456 -23.5588 2.45
|
||||
vertex 11.308 -26.6983 2.45
|
||||
vertex 13.7906 -24.3102 2.45
|
||||
vertex 12.5441 -27.8112 2.45
|
||||
vertex 14.9126 -29.5887 2.45
|
||||
vertex 14.9126 -30.3423 2.45
|
||||
vertex 14.5569 -30.5817 2.45
|
||||
vertex 14.7 -30.7105 2.45
|
||||
vertex 11.945 15.8392 2.45
|
||||
vertex 5.71576 17.63 2.45
|
||||
vertex 12.0948 15.2958 2.45
|
||||
vertex -2.85788 12.68 2.45
|
||||
vertex -12.9115 10.9427 2.45
|
||||
vertex -12.9115 2.31732 2.45
|
||||
vertex -5.71576 17.63 2.45
|
||||
vertex -12.8441 11.4566 2.45
|
||||
vertex -2.85788 12.68 2.45
|
||||
vertex -6.87122 25.2755 2.45
|
||||
vertex -10.4974 19.8338 2.45
|
||||
vertex -5.71576 17.63 2.45
|
||||
vertex 2.85788 22.58 2.45
|
||||
vertex -0.965637 28.4369 2.45
|
||||
vertex -2.85788 22.58 2.45
|
||||
vertex 8.548 23.2529 2.45
|
||||
vertex 4.50931 27.1392 2.45
|
||||
vertex 2.85788 22.58 2.45
|
||||
vertex 12.0948 15.2958 2.45
|
||||
vertex 5.71576 17.63 2.45
|
||||
vertex 2.85788 12.68 2.45
|
||||
vertex 8.9903 22.6172 2.45
|
||||
vertex 8.548 23.2529 2.45
|
||||
vertex 5.71576 17.63 2.45
|
||||
vertex 14.9126 -29.5887 -2.45
|
||||
vertex 14.9126 -30.3423 2.45
|
||||
vertex 14.9126 -30.3423 -2.45
|
||||
vertex 14.9126 -29.5887 -2.45
|
||||
vertex 14.9126 -29.5887 2.45
|
||||
vertex 14.9126 -30.3423 2.45
|
||||
vertex 13.7906 -24.3102 -2.45
|
||||
vertex 14.9126 -29.5887 2.45
|
||||
vertex 14.9126 -29.5887 -2.45
|
||||
vertex 13.7906 -24.3102 -2.45
|
||||
vertex 13.7906 -24.3102 2.45
|
||||
vertex 14.9126 -29.5887 2.45
|
||||
vertex 13.456 -23.5588 -2.45
|
||||
vertex 13.7906 -24.3102 2.45
|
||||
vertex 13.7906 -24.3102 -2.45
|
||||
vertex 13.456 -23.5588 -2.45
|
||||
vertex 13.456 -23.5588 2.45
|
||||
vertex 13.7906 -24.3102 2.45
|
||||
vertex 10.2841 -19.193 -2.45
|
||||
vertex 13.456 -23.5588 2.45
|
||||
vertex 13.456 -23.5588 -2.45
|
||||
vertex 10.2841 -19.193 -2.45
|
||||
vertex 10.2841 -19.193 2.45
|
||||
vertex 13.456 -23.5588 2.45
|
||||
vertex 9.67282 -18.6426 -2.45
|
||||
vertex 10.2841 -19.193 2.45
|
||||
vertex 10.2841 -19.193 -2.45
|
||||
vertex 9.67282 -18.6426 -2.45
|
||||
vertex 9.67282 -18.6426 2.45
|
||||
vertex 10.2841 -19.193 2.45
|
||||
vertex 7.95726 -17.6521 -2.45
|
||||
vertex 9.67282 -18.6426 2.45
|
||||
vertex 9.67282 -18.6426 -2.45
|
||||
vertex 7.95726 -17.6521 -2.45
|
||||
vertex 7.95726 -17.6521 2.45
|
||||
vertex 9.67282 -18.6426 2.45
|
||||
vertex 6.72119 -16.5392 -2.45
|
||||
vertex 7.95726 -17.6521 2.45
|
||||
vertex 7.95726 -17.6521 -2.45
|
||||
vertex 6.72119 -16.5392 -2.45
|
||||
vertex 6.72119 -16.5392 2.45
|
||||
vertex 7.95726 -17.6521 2.45
|
||||
vertex 6.04466 -15.0197 -2.45
|
||||
vertex 6.72119 -16.5392 2.45
|
||||
vertex 6.72119 -16.5392 -2.45
|
||||
vertex 6.04466 -15.0197 -2.45
|
||||
vertex 6.04466 -15.0197 2.45
|
||||
vertex 6.72119 -16.5392 2.45
|
||||
vertex 6.04466 -13.3564 -2.45
|
||||
vertex 6.04466 -15.0197 2.45
|
||||
vertex 6.04466 -15.0197 -2.45
|
||||
vertex 6.04466 -13.3564 -2.45
|
||||
vertex 6.04466 -13.3564 2.45
|
||||
vertex 6.04466 -15.0197 2.45
|
||||
vertex 7.18376 -11.3057 -2.45
|
||||
vertex 6.04466 -13.3564 2.45
|
||||
vertex 6.04466 -13.3564 -2.45
|
||||
vertex 7.18376 -11.3057 -2.45
|
||||
vertex 7.18376 -11.3057 2.45
|
||||
vertex 6.04466 -13.3564 2.45
|
||||
vertex 8.54802 -9.99295 -2.45
|
||||
vertex 7.18376 -11.3057 2.45
|
||||
vertex 7.18376 -11.3057 -2.45
|
||||
vertex 8.54802 -9.99295 -2.45
|
||||
vertex 8.54802 -9.99295 2.45
|
||||
vertex 7.18376 -11.3057 2.45
|
||||
vertex 8.9903 -9.35725 -2.45
|
||||
vertex 8.54802 -9.99295 2.45
|
||||
vertex 8.54802 -9.99295 -2.45
|
||||
vertex 8.9903 -9.35725 -2.45
|
||||
vertex 8.9903 -9.35725 2.45
|
||||
vertex 8.54802 -9.99295 2.45
|
||||
vertex 11.945 -2.57918 -2.45
|
||||
vertex 8.9903 -9.35725 2.45
|
||||
vertex 8.9903 -9.35725 -2.45
|
||||
vertex 11.945 -2.57918 -2.45
|
||||
vertex 11.945 -2.57918 2.45
|
||||
vertex 8.9903 -9.35725 2.45
|
||||
vertex 12.0948 -2.03583 -2.45
|
||||
vertex 11.945 -2.57918 2.45
|
||||
vertex 11.945 -2.57918 -2.45
|
||||
vertex 12.0948 -2.03583 -2.45
|
||||
vertex 12.0948 -2.03583 2.45
|
||||
vertex 11.945 -2.57918 2.45
|
||||
vertex 13.1679 6.37802 -2.45
|
||||
vertex 12.0948 -2.03583 2.45
|
||||
vertex 12.0948 -2.03583 -2.45
|
||||
vertex 13.1679 6.37802 -2.45
|
||||
vertex 13.1679 6.37802 2.45
|
||||
vertex 12.0948 -2.03583 2.45
|
||||
vertex 13.1679 6.88196 -2.45
|
||||
vertex 13.1679 6.37802 2.45
|
||||
vertex 13.1679 6.37802 -2.45
|
||||
vertex 13.1679 6.88196 -2.45
|
||||
vertex 13.1679 6.88196 2.45
|
||||
vertex 13.1679 6.37802 2.45
|
||||
vertex 12.0948 15.2958 -2.45
|
||||
vertex 13.1679 6.88196 2.45
|
||||
vertex 13.1679 6.88196 -2.45
|
||||
vertex 12.0948 15.2958 -2.45
|
||||
vertex 12.0948 15.2958 2.45
|
||||
vertex 13.1679 6.88196 2.45
|
||||
vertex 11.945 15.8392 -2.45
|
||||
vertex 12.0948 15.2958 2.45
|
||||
vertex 12.0948 15.2958 -2.45
|
||||
vertex 11.945 15.8392 -2.45
|
||||
vertex 11.945 15.8392 2.45
|
||||
vertex 12.0948 15.2958 2.45
|
||||
vertex 8.9903 22.6172 -2.45
|
||||
vertex 11.945 15.8392 2.45
|
||||
vertex 11.945 15.8392 -2.45
|
||||
vertex 8.9903 22.6172 -2.45
|
||||
vertex 8.9903 22.6172 2.45
|
||||
vertex 11.945 15.8392 2.45
|
||||
vertex 8.548 23.2529 -2.45
|
||||
vertex 8.9903 22.6172 2.45
|
||||
vertex 8.9903 22.6172 -2.45
|
||||
vertex 8.548 23.2529 -2.45
|
||||
vertex 8.548 23.2529 2.45
|
||||
vertex 8.9903 22.6172 2.45
|
||||
vertex 4.50931 27.1392 -2.45
|
||||
vertex 8.548 23.2529 2.45
|
||||
vertex 8.548 23.2529 -2.45
|
||||
vertex 4.50931 27.1392 -2.45
|
||||
vertex 4.50931 27.1392 2.45
|
||||
vertex 8.548 23.2529 2.45
|
||||
vertex 3.4908 27.6563 -2.45
|
||||
vertex 4.50931 27.1392 2.45
|
||||
vertex 4.50931 27.1392 -2.45
|
||||
vertex 3.4908 27.6563 -2.45
|
||||
vertex 3.4908 27.6563 2.45
|
||||
vertex 4.50931 27.1392 2.45
|
||||
vertex -0.965637 28.4369 -2.45
|
||||
vertex 3.4908 27.6563 2.45
|
||||
vertex 3.4908 27.6563 -2.45
|
||||
vertex -0.965637 28.4369 -2.45
|
||||
vertex -0.965637 28.4369 2.45
|
||||
vertex 3.4908 27.6563 2.45
|
||||
vertex -1.53212 28.4165 -2.45
|
||||
vertex -0.965637 28.4369 2.45
|
||||
vertex -0.965637 28.4369 -2.45
|
||||
vertex -1.53212 28.4165 -2.45
|
||||
vertex -1.53212 28.4165 2.45
|
||||
vertex -0.965637 28.4369 2.45
|
||||
vertex -1.60059 28.3899 -2.45
|
||||
vertex -1.53212 28.4165 2.45
|
||||
vertex -1.53212 28.4165 -2.45
|
||||
vertex -1.60059 28.3899 -2.45
|
||||
vertex -1.60059 28.3899 2.45
|
||||
vertex -1.53212 28.4165 2.45
|
||||
vertex -6.16991 25.9155 -2.45
|
||||
vertex -1.60059 28.3899 2.45
|
||||
vertex -1.60059 28.3899 -2.45
|
||||
vertex -6.16991 25.9155 -2.45
|
||||
vertex -6.16991 25.9155 2.45
|
||||
vertex -1.60059 28.3899 2.45
|
||||
vertex -6.87122 25.2755 -2.45
|
||||
vertex -6.16991 25.9155 2.45
|
||||
vertex -6.16991 25.9155 -2.45
|
||||
vertex -6.87122 25.2755 -2.45
|
||||
vertex -6.87122 25.2755 2.45
|
||||
vertex -6.16991 25.9155 2.45
|
||||
vertex -10.4974 19.8338 -2.45
|
||||
vertex -6.87122 25.2755 2.45
|
||||
vertex -6.87122 25.2755 -2.45
|
||||
vertex -10.4974 19.8338 -2.45
|
||||
vertex -10.4974 19.8338 2.45
|
||||
vertex -6.87122 25.2755 2.45
|
||||
vertex -10.7635 19.2449 -2.45
|
||||
vertex -10.4974 19.8338 2.45
|
||||
vertex -10.4974 19.8338 -2.45
|
||||
vertex -10.7635 19.2449 -2.45
|
||||
vertex -10.7635 19.2449 2.45
|
||||
vertex -10.4974 19.8338 2.45
|
||||
vertex -12.8441 11.4566 -2.45
|
||||
vertex -10.7635 19.2449 2.45
|
||||
vertex -10.7635 19.2449 -2.45
|
||||
vertex -12.8441 11.4566 -2.45
|
||||
vertex -12.8441 11.4566 2.45
|
||||
vertex -10.7635 19.2449 2.45
|
||||
vertex -12.9115 10.9427 -2.45
|
||||
vertex -12.8441 11.4566 2.45
|
||||
vertex -12.8441 11.4566 -2.45
|
||||
vertex -12.9115 10.9427 -2.45
|
||||
vertex -12.9115 10.9427 2.45
|
||||
vertex -12.8441 11.4566 2.45
|
||||
vertex -12.9115 2.31732 -2.45
|
||||
vertex -12.9115 10.9427 2.45
|
||||
vertex -12.9115 10.9427 -2.45
|
||||
vertex -12.9115 2.31732 -2.45
|
||||
vertex -12.9115 2.31732 2.45
|
||||
vertex -12.9115 10.9427 2.45
|
||||
vertex -12.8441 1.80342 -2.45
|
||||
vertex -12.9115 2.31732 2.45
|
||||
vertex -12.9115 2.31732 -2.45
|
||||
vertex -12.8441 1.80342 -2.45
|
||||
vertex -12.8441 1.80342 2.45
|
||||
vertex -12.9115 2.31732 2.45
|
||||
vertex -10.7635 -5.98489 -2.45
|
||||
vertex -12.8441 1.80342 2.45
|
||||
vertex -12.8441 1.80342 -2.45
|
||||
vertex -10.7635 -5.98489 -2.45
|
||||
vertex -10.7635 -5.98489 2.45
|
||||
vertex -12.8441 1.80342 2.45
|
||||
vertex -10.4974 -6.57382 -2.45
|
||||
vertex -10.7635 -5.98489 2.45
|
||||
vertex -10.7635 -5.98489 -2.45
|
||||
vertex -10.4974 -6.57382 -2.45
|
||||
vertex -10.4974 -6.57382 2.45
|
||||
vertex -10.7635 -5.98489 2.45
|
||||
vertex -6.94434 -11.9058 -2.45
|
||||
vertex -10.4974 -6.57382 2.45
|
||||
vertex -10.4974 -6.57382 -2.45
|
||||
vertex -6.94434 -11.9058 -2.45
|
||||
vertex -6.94434 -11.9058 2.45
|
||||
vertex -10.4974 -6.57382 2.45
|
||||
vertex -6.32993 -13.4515 -2.45
|
||||
vertex -6.94434 -11.9058 2.45
|
||||
vertex -6.94434 -11.9058 -2.45
|
||||
vertex -6.32993 -13.4515 -2.45
|
||||
vertex -6.32993 -13.4515 2.45
|
||||
vertex -6.94434 -11.9058 2.45
|
||||
vertex -6.39731 -15.1134 -2.45
|
||||
vertex -6.32993 -13.4515 2.45
|
||||
vertex -6.32993 -13.4515 -2.45
|
||||
vertex -6.39731 -15.1134 -2.45
|
||||
vertex -6.39731 -15.1134 2.45
|
||||
vertex -6.32993 -13.4515 2.45
|
||||
vertex -7.59648 -17.0965 -2.45
|
||||
vertex -6.39731 -15.1134 2.45
|
||||
vertex -6.39731 -15.1134 -2.45
|
||||
vertex -7.59648 -17.0965 -2.45
|
||||
vertex -7.59648 -17.0965 2.45
|
||||
vertex -6.39731 -15.1134 2.45
|
||||
vertex -11.8228 -20.9019 -2.45
|
||||
vertex -7.59648 -17.0965 2.45
|
||||
vertex -7.59648 -17.0965 -2.45
|
||||
vertex -11.8228 -20.9019 -2.45
|
||||
vertex -11.8228 -20.9019 2.45
|
||||
vertex -7.59648 -17.0965 2.45
|
||||
vertex -12.3062 -21.5673 -2.45
|
||||
vertex -11.8228 -20.9019 2.45
|
||||
vertex -11.8228 -20.9019 -2.45
|
||||
vertex -12.3062 -21.5673 -2.45
|
||||
vertex -12.3062 -21.5673 2.45
|
||||
vertex -11.8228 -20.9019 2.45
|
||||
vertex -14.5012 -26.4973 -2.45
|
||||
vertex -12.3062 -21.5673 2.45
|
||||
vertex -12.3062 -21.5673 -2.45
|
||||
vertex -14.5012 -26.4973 -2.45
|
||||
vertex -14.5012 -26.4973 2.45
|
||||
vertex -12.3062 -21.5673 2.45
|
||||
vertex -14.6722 -27.3018 -2.45
|
||||
vertex -14.5012 -26.4973 2.45
|
||||
vertex -14.5012 -26.4973 -2.45
|
||||
vertex -14.6722 -27.3018 -2.45
|
||||
vertex -14.6722 -27.3018 2.45
|
||||
vertex -14.5012 -26.4973 2.45
|
||||
vertex -14.6722 -29.7463 -2.45
|
||||
vertex -14.6722 -27.3018 2.45
|
||||
vertex -14.6722 -27.3018 -2.45
|
||||
vertex -14.6722 -29.7463 -2.45
|
||||
vertex -14.6722 -29.7463 2.45
|
||||
vertex -14.6722 -27.3018 2.45
|
||||
vertex -14.6312 -29.9392 -2.45
|
||||
vertex -14.6722 -29.7463 2.45
|
||||
vertex -14.6722 -29.7463 -2.45
|
||||
vertex -14.6312 -29.9392 -2.45
|
||||
vertex -14.6312 -29.9392 2.45
|
||||
vertex -14.6722 -29.7463 2.45
|
||||
vertex -14.3856 -29.7607 -2.45
|
||||
vertex -14.6312 -29.9392 2.45
|
||||
vertex -14.6312 -29.9392 -2.45
|
||||
vertex -14.3856 -29.7607 -2.45
|
||||
vertex -14.3856 -29.7607 2.45
|
||||
vertex -14.6312 -29.9392 2.45
|
||||
vertex -9.63184 -25.4805 -2.45
|
||||
vertex -14.3856 -29.7607 2.45
|
||||
vertex -14.3856 -29.7607 -2.45
|
||||
vertex -9.63184 -25.4805 -2.45
|
||||
vertex -9.63184 -25.4805 2.45
|
||||
vertex -14.3856 -29.7607 2.45
|
||||
vertex -8.19138 -24.6488 -2.45
|
||||
vertex -9.63184 -25.4805 2.45
|
||||
vertex -9.63184 -25.4805 -2.45
|
||||
vertex -8.19138 -24.6488 -2.45
|
||||
vertex -8.19138 -24.6488 2.45
|
||||
vertex -9.63184 -25.4805 2.45
|
||||
vertex -2.69011 -22.8613 -2.45
|
||||
vertex -8.19138 -24.6488 2.45
|
||||
vertex -8.19138 -24.6488 -2.45
|
||||
vertex -2.69011 -22.8613 -2.45
|
||||
vertex -2.69011 -22.8613 2.45
|
||||
vertex -8.19138 -24.6488 2.45
|
||||
vertex -1.03592 -22.6875 -2.45
|
||||
vertex -2.69011 -22.8613 2.45
|
||||
vertex -2.69011 -22.8613 -2.45
|
||||
vertex -1.03592 -22.6875 -2.45
|
||||
vertex -1.03592 -22.6875 2.45
|
||||
vertex -2.69011 -22.8613 2.45
|
||||
vertex 4.71675 -23.2921 -2.45
|
||||
vertex -1.03592 -22.6875 2.45
|
||||
vertex -1.03592 -22.6875 -2.45
|
||||
vertex 4.71675 -23.2921 -2.45
|
||||
vertex 4.71675 -23.2921 2.45
|
||||
vertex -1.03592 -22.6875 2.45
|
||||
vertex 6.29861 -23.8061 -2.45
|
||||
vertex 4.71675 -23.2921 2.45
|
||||
vertex 4.71675 -23.2921 -2.45
|
||||
vertex 6.29861 -23.8061 -2.45
|
||||
vertex 6.29861 -23.8061 2.45
|
||||
vertex 4.71675 -23.2921 2.45
|
||||
vertex 11.308 -26.6983 -2.45
|
||||
vertex 6.29861 -23.8061 2.45
|
||||
vertex 6.29861 -23.8061 -2.45
|
||||
vertex 11.308 -26.6983 -2.45
|
||||
vertex 11.308 -26.6983 2.45
|
||||
vertex 6.29861 -23.8061 2.45
|
||||
vertex 12.5441 -27.8112 -2.45
|
||||
vertex 11.308 -26.6983 2.45
|
||||
vertex 11.308 -26.6983 -2.45
|
||||
vertex 12.5441 -27.8112 -2.45
|
||||
vertex 12.5441 -27.8112 2.45
|
||||
vertex 11.308 -26.6983 2.45
|
||||
vertex 14.5569 -30.5817 -2.45
|
||||
vertex 12.5441 -27.8112 2.45
|
||||
vertex 12.5441 -27.8112 -2.45
|
||||
vertex 14.5569 -30.5817 -2.45
|
||||
vertex 14.5569 -30.5817 2.45
|
||||
vertex 12.5441 -27.8112 2.45
|
||||
vertex 14.7 -30.7105 -2.45
|
||||
vertex 14.5569 -30.5817 2.45
|
||||
vertex 14.5569 -30.5817 -2.45
|
||||
vertex 14.7 -30.7105 -2.45
|
||||
vertex 14.7 -30.7105 2.45
|
||||
vertex 14.5569 -30.5817 2.45
|
||||
vertex 14.9126 -30.3423 -2.45
|
||||
vertex 14.7 -30.7105 2.45
|
||||
vertex 14.7 -30.7105 -2.45
|
||||
vertex 14.9126 -30.3423 -2.45
|
||||
vertex 14.9126 -30.3423 2.45
|
||||
vertex 14.7 -30.7105 2.45
|
||||
vertex -5.71576 17.63 -2.45
|
||||
vertex -5.71576 17.63 2.45
|
||||
vertex -2.85788 12.68 -2.45
|
||||
vertex -2.85788 12.68 2.45
|
||||
vertex -2.85788 12.68 -2.45
|
||||
vertex -5.71576 17.63 2.45
|
||||
vertex -2.85788 22.58 -2.45
|
||||
vertex -2.85788 22.58 2.45
|
||||
vertex -5.71576 17.63 -2.45
|
||||
vertex -5.71576 17.63 2.45
|
||||
vertex -5.71576 17.63 -2.45
|
||||
vertex -2.85788 22.58 2.45
|
||||
vertex 2.85788 22.58 -2.45
|
||||
vertex 2.85788 22.58 2.45
|
||||
vertex -2.85788 22.58 -2.45
|
||||
vertex -2.85788 22.58 2.45
|
||||
vertex -2.85788 22.58 -2.45
|
||||
vertex 2.85788 22.58 2.45
|
||||
vertex 5.71576 17.63 -2.45
|
||||
vertex 5.71576 17.63 2.45
|
||||
vertex 2.85788 22.58 -2.45
|
||||
vertex 2.85788 22.58 2.45
|
||||
vertex 2.85788 22.58 -2.45
|
||||
vertex 5.71576 17.63 2.45
|
||||
vertex 2.85788 12.68 -2.45
|
||||
vertex 2.85788 12.68 2.45
|
||||
vertex 5.71576 17.63 -2.45
|
||||
vertex 5.71576 17.63 2.45
|
||||
vertex 5.71576 17.63 -2.45
|
||||
vertex 2.85788 12.68 2.45
|
||||
vertex -2.85788 12.68 -2.45
|
||||
vertex -2.85788 12.68 2.45
|
||||
vertex 2.85788 12.68 -2.45
|
||||
vertex 2.85788 12.68 2.45
|
||||
vertex 2.85788 12.68 -2.45
|
||||
vertex -2.85788 12.68 2.45
|
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
|
@ -0,0 +1,142 @@
|
|||
solid OpenSCAD_Model
|
||||
facet normal 0 -0.356822 0.934172
|
||||
outer loop
|
||||
vertex 0.5 0 0.809017
|
||||
vertex -0.5 0 0.809017
|
||||
vertex 0 -0.809017 0.5
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.57735 -0.57735 0.57735
|
||||
outer loop
|
||||
vertex 0.5 0 0.809017
|
||||
vertex 0 -0.809017 0.5
|
||||
vertex 0.809017 -0.5 0
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.934172 0 0.356822
|
||||
outer loop
|
||||
vertex 0.5 0 0.809017
|
||||
vertex 0.809017 -0.5 0
|
||||
vertex 0.809017 0.5 0
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.57735 0.57735 0.57735
|
||||
outer loop
|
||||
vertex 0.5 0 0.809017
|
||||
vertex 0.809017 0.5 0
|
||||
vertex 0 0.809017 0.5
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 0.356822 0.934172
|
||||
outer loop
|
||||
vertex 0.5 0 0.809017
|
||||
vertex 0 0.809017 0.5
|
||||
vertex -0.5 0 0.809017
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 -0.356822 -0.934172
|
||||
outer loop
|
||||
vertex -0.5 0 -0.809017
|
||||
vertex 0.5 0 -0.809017
|
||||
vertex 0 -0.809017 -0.5
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -0.57735 -0.57735 -0.57735
|
||||
outer loop
|
||||
vertex -0.5 0 -0.809017
|
||||
vertex 0 -0.809017 -0.5
|
||||
vertex -0.809017 -0.5 0
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -0.934172 0 -0.356822
|
||||
outer loop
|
||||
vertex -0.5 0 -0.809017
|
||||
vertex -0.809017 -0.5 0
|
||||
vertex -0.809017 0.5 0
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -0.57735 0.57735 -0.57735
|
||||
outer loop
|
||||
vertex -0.5 0 -0.809017
|
||||
vertex -0.809017 0.5 0
|
||||
vertex 0 0.809017 -0.5
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 0.356822 -0.934172
|
||||
outer loop
|
||||
vertex -0.5 0 -0.809017
|
||||
vertex 0 0.809017 -0.5
|
||||
vertex 0.5 0 -0.809017
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -0.934172 0 0.356822
|
||||
outer loop
|
||||
vertex -0.5 0 0.809017
|
||||
vertex -0.809017 0.5 0
|
||||
vertex -0.809017 -0.5 0
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -0.57735 -0.57735 0.57735
|
||||
outer loop
|
||||
vertex -0.5 0 0.809017
|
||||
vertex -0.809017 -0.5 0
|
||||
vertex 0 -0.809017 0.5
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -0.356822 -0.934172 -0
|
||||
outer loop
|
||||
vertex 0 -0.809017 0.5
|
||||
vertex -0.809017 -0.5 0
|
||||
vertex 0 -0.809017 -0.5
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.356822 -0.934172 0
|
||||
outer loop
|
||||
vertex 0 -0.809017 0.5
|
||||
vertex 0 -0.809017 -0.5
|
||||
vertex 0.809017 -0.5 0
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.57735 -0.57735 -0.57735
|
||||
outer loop
|
||||
vertex 0.809017 -0.5 0
|
||||
vertex 0 -0.809017 -0.5
|
||||
vertex 0.5 0 -0.809017
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.934172 0 -0.356822
|
||||
outer loop
|
||||
vertex 0.809017 -0.5 0
|
||||
vertex 0.5 0 -0.809017
|
||||
vertex 0.809017 0.5 0
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.57735 0.57735 -0.57735
|
||||
outer loop
|
||||
vertex 0.809017 0.5 0
|
||||
vertex 0.5 0 -0.809017
|
||||
vertex 0 0.809017 -0.5
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.356822 0.934172 0
|
||||
outer loop
|
||||
vertex 0.809017 0.5 0
|
||||
vertex 0 0.809017 -0.5
|
||||
vertex 0 0.809017 0.5
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -0.356822 0.934172 0
|
||||
outer loop
|
||||
vertex 0 0.809017 0.5
|
||||
vertex 0 0.809017 -0.5
|
||||
vertex -0.809017 0.5 0
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -0.57735 0.57735 0.57735
|
||||
outer loop
|
||||
vertex 0 0.809017 0.5
|
||||
vertex -0.809017 0.5 0
|
||||
vertex -0.5 0 0.809017
|
||||
endloop
|
||||
endfacet
|
||||
endsolid OpenSCAD_Model
|
|
@ -0,0 +1,30 @@
|
|||
solid OpenSCAD_Model
|
||||
facet normal 0 -0 -1
|
||||
outer loop
|
||||
vertex 0 5.7735 -2.04124
|
||||
vertex 5 -2.88675 -2.04124
|
||||
vertex -5 -2.88675 -2.04124
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -0.816496 0.471405 0.333334
|
||||
outer loop
|
||||
vertex 0 0 6.12372
|
||||
vertex 0 5.7735 -2.04124
|
||||
vertex -5 -2.88675 -2.04124
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.816496 0.471405 0.333334
|
||||
outer loop
|
||||
vertex 0 5.7735 -2.04124
|
||||
vertex 0 0 6.12372
|
||||
vertex 5 -2.88675 -2.04124
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0 -0.942809 0.333333
|
||||
outer loop
|
||||
vertex 0 0 6.12372
|
||||
vertex -5 -2.88675 -2.04124
|
||||
vertex 5 -2.88675 -2.04124
|
||||
endloop
|
||||
endfacet
|
||||
endsolid OpenSCAD_Model
|
|
@ -0,0 +1,516 @@
|
|||
vertex 19.7498 20 20
|
||||
vertex -32 20 72
|
||||
vertex -22.2161 20 20
|
||||
vertex -32 20 -50
|
||||
vertex -13.6629 20 -15
|
||||
vertex -18.2693 20 2.5
|
||||
vertex -32 20 -50
|
||||
vertex -18.2693 20 2.5
|
||||
vertex -22.2161 20 20
|
||||
vertex -32 20 -50
|
||||
vertex -22.2161 20 20
|
||||
vertex -32 20 72
|
||||
vertex -13.6629 20 -15
|
||||
vertex -32 20 -50
|
||||
vertex -12.5096 20 -32.5
|
||||
vertex -12.5096 20 -32.5
|
||||
vertex -32 20 -50
|
||||
vertex -13.3296 20 -50
|
||||
vertex -32 20 72
|
||||
vertex 19.7498 20 20
|
||||
vertex 32 20 72
|
||||
vertex 32 20 -50
|
||||
vertex 19.7498 20 20
|
||||
vertex 16.2412 20 2.5
|
||||
vertex 32 20 -50
|
||||
vertex 12.1461 20 -15
|
||||
vertex 11.1209 20 -32.5
|
||||
vertex 12.1461 20 -15
|
||||
vertex 32 20 -50
|
||||
vertex 16.2412 20 2.5
|
||||
vertex 32 20 -50
|
||||
vertex 11.1209 20 -32.5
|
||||
vertex 11.8499 20 -50
|
||||
vertex 19.7498 20 20
|
||||
vertex 32 20 -50
|
||||
vertex 32 20 72
|
||||
vertex -13.3296 20 -50
|
||||
vertex -21.1652 7.10585 -32.5
|
||||
vertex -12.5096 20 -32.5
|
||||
vertex 18.3851 15.2836 -50
|
||||
vertex 17.254 15.5738 -32.5
|
||||
vertex 22.5235 -2.52352 -32.5
|
||||
vertex 24 -4 -50
|
||||
vertex 22.5235 -2.52352 -32.5
|
||||
vertex 22.5235 -2.52353 -32.5
|
||||
vertex 22.5235 -2.52352 -32.5
|
||||
vertex 24 -4 -50
|
||||
vertex 18.3851 15.2836 -50
|
||||
vertex -22.5526 -14.2606 -50
|
||||
vertex 24 -4 -50
|
||||
vertex 18.3851 -23.2836 -50
|
||||
vertex 11.8499 20 -50
|
||||
vertex 24 -4 -50
|
||||
vertex -22.5526 6.2606 -50
|
||||
vertex -12 -29.9808 -50
|
||||
vertex 18.3851 -23.2836 -50
|
||||
vertex 4.16755 -33.5442 -50
|
||||
vertex 11.8499 20 -50
|
||||
vertex 32 45 -50
|
||||
vertex 32 20 -50
|
||||
vertex 18.3851 -23.2836 -50
|
||||
vertex -12 -29.9808 -50
|
||||
vertex -22.5526 -14.2606 -50
|
||||
vertex 24 -4 -50
|
||||
vertex -22.5526 -14.2606 -50
|
||||
vertex -22.5526 6.2606 -50
|
||||
vertex -32 45 -50
|
||||
vertex 11.8499 20 -50
|
||||
vertex -13.3296 20 -50
|
||||
vertex -32 45 -50
|
||||
vertex -13.3296 20 -50
|
||||
vertex -32 20 -50
|
||||
vertex 11.8499 20 -50
|
||||
vertex -32 45 -50
|
||||
vertex 32 45 -50
|
||||
vertex 24 -4 -50
|
||||
vertex 11.8499 20 -50
|
||||
vertex 18.3851 15.2836 -50
|
||||
vertex 11.8499 20 -50
|
||||
vertex -22.5526 6.2606 -50
|
||||
vertex -13.3296 20 -50
|
||||
vertex 24 -4 -50
|
||||
vertex 22.5235 -2.52353 -32.5
|
||||
vertex 18.3851 -23.2836 -50
|
||||
vertex 18.3851 -23.2836 -50
|
||||
vertex 17.254 -20.6208 -32.5
|
||||
vertex 3.91117 -30.2502 -32.5
|
||||
vertex 17.254 15.5738 -32.5
|
||||
vertex 18.3851 15.2836 -50
|
||||
vertex 11.8499 20 -50
|
||||
vertex 11.8499 20 -50
|
||||
vertex 11.1209 20 -32.5
|
||||
vertex 17.254 15.5738 -32.5
|
||||
vertex 3.91117 -30.2502 -32.5
|
||||
vertex -11.2618 -26.906 -32.5
|
||||
vertex 4.16755 -33.5442 -50
|
||||
vertex -11.2618 -26.906 -32.5
|
||||
vertex -12 -29.9808 -50
|
||||
vertex 4.16755 -33.5442 -50
|
||||
vertex -21.1652 -12.1529 -32.5
|
||||
vertex -22.5526 -14.2606 -50
|
||||
vertex -11.2618 -26.906 -32.5
|
||||
vertex -22.5526 6.2606 -50
|
||||
vertex -21.1652 -12.1529 -32.5
|
||||
vertex -21.1652 7.10584 -32.5
|
||||
vertex -21.1652 -12.1529 -32.5
|
||||
vertex -22.5526 6.2606 -50
|
||||
vertex -22.5526 -14.2606 -50
|
||||
vertex -22.5526 6.2606 -50
|
||||
vertex -21.1652 7.10585 -32.5
|
||||
vertex -13.3296 20 -50
|
||||
vertex -21.1652 7.10585 -32.5
|
||||
vertex -22.5526 6.2606 -50
|
||||
vertex -21.1652 7.10584 -32.5
|
||||
vertex 22.5235 -2.52353 -32.5
|
||||
vertex 17.254 -20.6208 -32.5
|
||||
vertex 18.3851 -23.2836 -50
|
||||
vertex 3.91117 -30.2502 -32.5
|
||||
vertex 4.16755 -33.5442 -50
|
||||
vertex 18.3851 -23.2836 -50
|
||||
vertex -12 -29.9808 -50
|
||||
vertex -11.2618 -26.906 -32.5
|
||||
vertex -22.5526 -14.2606 -50
|
||||
vertex 24.6 -4.6 -15
|
||||
vertex 22.5235 -2.52352 -32.5
|
||||
vertex 18.8447 15.1657 -15
|
||||
vertex 22.5235 -2.52352 -32.5
|
||||
vertex 24.6 -4.6 -15
|
||||
vertex 22.5235 -2.52353 -32.5
|
||||
vertex 18.8447 15.1657 -15
|
||||
vertex 17.254 15.5738 -32.5
|
||||
vertex 12.1461 20 -15
|
||||
vertex 17.254 15.5738 -32.5
|
||||
vertex 11.1209 20 -32.5
|
||||
vertex 12.1461 20 -15
|
||||
vertex 4.27174 -34.8828 -15
|
||||
vertex -11.2618 -26.906 -32.5
|
||||
vertex 3.91117 -30.2502 -32.5
|
||||
vertex -21.1652 7.10585 -32.5
|
||||
vertex -13.6629 20 -15
|
||||
vertex -12.5096 20 -32.5
|
||||
vertex 18.8447 15.1657 -15
|
||||
vertex 22.5235 -2.52352 -32.5
|
||||
vertex 17.254 15.5738 -32.5
|
||||
vertex 22.5235 -2.52353 -32.5
|
||||
vertex 24.6 -4.6 -15
|
||||
vertex 18.8447 -24.3657 -15
|
||||
vertex -21.1652 -12.1529 -32.5
|
||||
vertex -11.2618 -26.906 -32.5
|
||||
vertex -23.1164 -15.1171 -15
|
||||
vertex 4.27174 -34.8828 -15
|
||||
vertex 3.91117 -30.2502 -32.5
|
||||
vertex 17.254 -20.6208 -32.5
|
||||
vertex 17.254 -20.6208 -32.5
|
||||
vertex 18.8447 -24.3657 -15
|
||||
vertex 4.27174 -34.8828 -15
|
||||
vertex 22.5235 -2.52353 -32.5
|
||||
vertex 18.8447 -24.3657 -15
|
||||
vertex 17.254 -20.6208 -32.5
|
||||
vertex -21.1652 -12.1529 -32.5
|
||||
vertex -23.1164 5.91711 -15
|
||||
vertex -21.1652 7.10584 -32.5
|
||||
vertex -23.1164 5.91711 -15
|
||||
vertex -21.1652 -12.1529 -32.5
|
||||
vertex -23.1164 -15.1171 -15
|
||||
vertex -12.3 -31.2303 -15
|
||||
vertex -11.2618 -26.906 -32.5
|
||||
vertex 4.27174 -34.8828 -15
|
||||
vertex -23.1164 5.91711 -15
|
||||
vertex -21.1652 7.10585 -32.5
|
||||
vertex -21.1652 7.10584 -32.5
|
||||
vertex -21.1652 7.10585 -32.5
|
||||
vertex -23.1164 5.91711 -15
|
||||
vertex -13.6629 20 -15
|
||||
vertex -11.2618 -26.906 -32.5
|
||||
vertex -12.3 -31.2303 -15
|
||||
vertex -23.1164 -15.1171 -15
|
||||
vertex 32.8939 -12.8939 2.5
|
||||
vertex 24.6 -4.6 -15
|
||||
vertex 25.1982 13.5358 2.5
|
||||
vertex 18.8447 15.1657 -15
|
||||
vertex 12.1461 20 -15
|
||||
vertex 16.2412 20 2.5
|
||||
vertex 18.8447 15.1657 -15
|
||||
vertex 16.2412 20 2.5
|
||||
vertex 25.1982 13.5358 2.5
|
||||
vertex 24.6 -4.6 -15
|
||||
vertex 18.8447 15.1657 -15
|
||||
vertex 25.1982 13.5358 2.5
|
||||
vertex 25.1982 -39.3236 2.5
|
||||
vertex 24.6 -4.6 -15
|
||||
vertex 32.8939 -12.8939 2.5
|
||||
vertex -13.6629 20 -15
|
||||
vertex -23.1164 5.91711 -15
|
||||
vertex -18.2693 20 2.5
|
||||
vertex -16.4469 -48.5026 2.5
|
||||
vertex -23.1164 -15.1171 -15
|
||||
vertex -12.3 -31.2303 -15
|
||||
vertex -23.1164 -15.1171 -15
|
||||
vertex -30.9101 1.16907 2.5
|
||||
vertex -23.1164 5.91711 -15
|
||||
vertex -30.9101 1.16907 2.5
|
||||
vertex -23.1164 -15.1171 -15
|
||||
vertex -30.9101 -26.9569 2.5
|
||||
vertex 5.71196 -53.3866 2.5
|
||||
vertex -16.4469 -48.5026 2.5
|
||||
vertex 4.27174 -34.8828 -15
|
||||
vertex 25.1982 -39.3236 2.5
|
||||
vertex 18.8447 -24.3657 -15
|
||||
vertex 24.6 -4.6 -15
|
||||
vertex 4.27174 -34.8828 -15
|
||||
vertex -16.4469 -48.5026 2.5
|
||||
vertex -12.3 -31.2303 -15
|
||||
vertex 5.71196 -53.3866 2.5
|
||||
vertex 4.27174 -34.8828 -15
|
||||
vertex 18.8447 -24.3657 -15
|
||||
vertex -23.1164 5.91711 -15
|
||||
vertex -30.9101 1.16907 2.5
|
||||
vertex -18.2693 20 2.5
|
||||
vertex 25.1982 -39.3236 2.5
|
||||
vertex 5.71196 -53.3866 2.5
|
||||
vertex 18.8447 -24.3657 -15
|
||||
vertex -16.4469 -48.5026 2.5
|
||||
vertex -30.9101 -26.9569 2.5
|
||||
vertex -23.1164 -15.1171 -15
|
||||
vertex 21.4492 2.49756 20
|
||||
vertex 40 -20 20
|
||||
vertex 30.6418 12.1394 20
|
||||
vertex 40 -20 20
|
||||
vertex 21.4492 2.49756 20
|
||||
vertex 28 -20 20
|
||||
vertex 19.7498 20 20
|
||||
vertex 21.4492 2.49756 20
|
||||
vertex 30.6418 12.1394 20
|
||||
vertex 19.7498 20 20
|
||||
vertex 4.86216 14.4683 20
|
||||
vertex 21.4492 2.49756 20
|
||||
vertex 19.7498 20 20
|
||||
vertex 4.86215 14.4683 20
|
||||
vertex 4.86216 14.4683 20
|
||||
vertex -22.2161 20 20
|
||||
vertex 4.86215 14.4683 20
|
||||
vertex 19.7498 20 20
|
||||
vertex 4.86215 14.4683 20
|
||||
vertex -22.2161 20 20
|
||||
vertex 4.86214 14.4683 20
|
||||
vertex 4.86214 14.4683 20
|
||||
vertex -22.2161 20 20
|
||||
vertex -14 10.3109 20
|
||||
vertex -37.5877 -2.899 20
|
||||
vertex -14 10.3109 20
|
||||
vertex -22.2161 20 20
|
||||
vertex -14 10.3109 20
|
||||
vertex -37.5877 -2.899 20
|
||||
vertex -26.3114 -8.02929 20
|
||||
vertex -26.3114 -8.0293 20
|
||||
vertex -37.5877 -2.899 20
|
||||
vertex -26.3114 -31.9707 20
|
||||
vertex -26.3114 -8.02929 20
|
||||
vertex -37.5877 -2.899 20
|
||||
vertex -26.3114 -8.0293 20
|
||||
vertex 21.4492 -42.4976 20
|
||||
vertex 40 -20 20
|
||||
vertex 28 -20 20
|
||||
vertex 40 -20 20
|
||||
vertex 21.4492 -42.4976 20
|
||||
vertex 30.6418 -52.1394 20
|
||||
vertex 4.86216 -54.4683 20
|
||||
vertex 30.6418 -52.1394 20
|
||||
vertex 21.4492 -42.4976 20
|
||||
vertex 30.6418 -52.1394 20
|
||||
vertex 4.86216 -54.4683 20
|
||||
vertex 6.94592 -69.2404 20
|
||||
vertex 4.86215 -54.4683 20
|
||||
vertex 6.94592 -69.2404 20
|
||||
vertex 4.86216 -54.4683 20
|
||||
vertex 4.86214 -54.4683 20
|
||||
vertex 6.94592 -69.2404 20
|
||||
vertex 4.86215 -54.4683 20
|
||||
vertex -20 -63.3013 20
|
||||
vertex 4.86214 -54.4683 20
|
||||
vertex -14 -50.3109 20
|
||||
vertex 4.86214 -54.4683 20
|
||||
vertex -20 -63.3013 20
|
||||
vertex 6.94592 -69.2404 20
|
||||
vertex -37.5877 -37.101 20
|
||||
vertex -14 -50.3109 20
|
||||
vertex -26.3114 -31.9707 20
|
||||
vertex -37.5877 -37.101 20
|
||||
vertex -26.3114 -31.9707 20
|
||||
vertex -37.5877 -2.899 20
|
||||
vertex -14 -50.3109 20
|
||||
vertex -37.5877 -37.101 20
|
||||
vertex -20 -63.3013 20
|
||||
vertex 32.8939 -12.8939 2.5
|
||||
vertex 30.6418 12.1394 20
|
||||
vertex 40 -20 20
|
||||
vertex 25.1982 13.5358 2.5
|
||||
vertex 16.2412 20 2.5
|
||||
vertex 19.7498 20 20
|
||||
vertex 25.1982 13.5358 2.5
|
||||
vertex 19.7498 20 20
|
||||
vertex 30.6418 12.1394 20
|
||||
vertex 32.8939 -12.8939 2.5
|
||||
vertex 25.1982 13.5358 2.5
|
||||
vertex 30.6418 12.1394 20
|
||||
vertex 40 -20 20
|
||||
vertex 30.6418 -52.1394 20
|
||||
vertex 32.8939 -12.8939 2.5
|
||||
vertex -20 -63.3013 20
|
||||
vertex -30.9101 -26.9569 2.5
|
||||
vertex -16.4469 -48.5026 2.5
|
||||
vertex -30.9101 -26.9569 2.5
|
||||
vertex -37.5877 -2.899 20
|
||||
vertex -30.9101 1.16907 2.5
|
||||
vertex -37.5877 -2.899 20
|
||||
vertex -30.9101 -26.9569 2.5
|
||||
vertex -37.5877 -37.101 20
|
||||
vertex 30.6418 -52.1394 20
|
||||
vertex 25.1982 -39.3236 2.5
|
||||
vertex 32.8939 -12.8939 2.5
|
||||
vertex 5.71196 -53.3866 2.5
|
||||
vertex -20 -63.3013 20
|
||||
vertex -16.4469 -48.5026 2.5
|
||||
vertex 6.94592 -69.2404 20
|
||||
vertex -20 -63.3013 20
|
||||
vertex 5.71196 -53.3866 2.5
|
||||
vertex -18.2693 20 2.5
|
||||
vertex -37.5877 -2.899 20
|
||||
vertex -22.2161 20 20
|
||||
vertex -30.9101 1.16907 2.5
|
||||
vertex -37.5877 -2.899 20
|
||||
vertex -18.2693 20 2.5
|
||||
vertex 6.94592 -69.2404 20
|
||||
vertex 5.71196 -53.3866 2.5
|
||||
vertex 30.6418 -52.1394 20
|
||||
vertex 30.6418 -52.1394 20
|
||||
vertex 5.71196 -53.3866 2.5
|
||||
vertex 25.1982 -39.3236 2.5
|
||||
vertex -20 -63.3013 20
|
||||
vertex -37.5877 -37.101 20
|
||||
vertex -30.9101 -26.9569 2.5
|
||||
vertex 17.3528 -38.2009 6.83361
|
||||
vertex 8.65248 -20 -1.30367
|
||||
vertex 6.62818 -26.9521 -1.30367
|
||||
vertex 4.86214 14.4683 20
|
||||
vertex -14 10.3109 20
|
||||
vertex 4.86215 14.4683 20
|
||||
vertex -26.3114 -8.0293 20
|
||||
vertex -26.3114 -31.9707 20
|
||||
vertex -26.3114 -8.02929 20
|
||||
vertex 28 -20 20
|
||||
vertex 21.4492 2.49757 20
|
||||
vertex 17.3528 -1.79909 6.83361
|
||||
vertex 22.6525 -20 6.83361
|
||||
vertex 28 -20 20
|
||||
vertex 17.3528 -1.79909 6.83361
|
||||
vertex 22.6525 -20 6.83361
|
||||
vertex 17.3528 -1.79909 6.83361
|
||||
vertex 8.65248 -20 -1.30367
|
||||
vertex 17.3528 -1.79909 6.83361
|
||||
vertex 21.4492 2.49757 20
|
||||
vertex 4.86215 14.4683 20
|
||||
vertex 4.86216 -54.4683 20
|
||||
vertex 21.4492 -42.4976 20
|
||||
vertex 4.86215 -54.4683 20
|
||||
vertex -8.13067 -16.3008 -1.30367
|
||||
vertex -11.3262 4.52203 6.83361
|
||||
vertex -21.2864 -10.3155 6.83361
|
||||
vertex 3.93356 7.88542 6.83361
|
||||
vertex 4.86215 14.4683 20
|
||||
vertex -11.3262 4.52203 6.83361
|
||||
vertex -14 -50.3109 20
|
||||
vertex 4.86214 -54.4683 20
|
||||
vertex 4.86215 -54.4683 20
|
||||
vertex 4.86215 -54.4683 20
|
||||
vertex 17.3528 -38.2009 6.83361
|
||||
vertex 3.93356 -47.8854 6.83361
|
||||
vertex -14 -50.3109 20
|
||||
vertex -21.2864 -29.6845 6.83361
|
||||
vertex -26.3114 -31.9707 20
|
||||
vertex 4.86215 -54.4683 20
|
||||
vertex -11.3262 -44.522 6.83361
|
||||
vertex -14 -50.3109 20
|
||||
vertex 21.4492 2.49757 20
|
||||
vertex 4.86216 14.4683 20
|
||||
vertex 4.86215 14.4683 20
|
||||
vertex 4.86216 14.4683 20
|
||||
vertex 21.4492 2.49757 20
|
||||
vertex 21.4492 2.49756 20
|
||||
vertex 21.4492 2.49757 20
|
||||
vertex 28 -20 20
|
||||
vertex 21.4492 2.49756 20
|
||||
vertex -21.2864 -10.3155 6.83361
|
||||
vertex -8.13067 -23.6992 -1.30367
|
||||
vertex -8.13067 -16.3008 -1.30367
|
||||
vertex -8.13067 -23.6992 -1.30367
|
||||
vertex -21.2864 -10.3155 6.83361
|
||||
vertex -21.2864 -29.6845 6.83361
|
||||
vertex 17.3528 -1.79909 6.83361
|
||||
vertex 4.86215 14.4683 20
|
||||
vertex 3.93356 7.88542 6.83361
|
||||
vertex 1.50249 -9.34872 -1.30367
|
||||
vertex 3.93356 7.88542 6.83361
|
||||
vertex -11.3262 4.52203 6.83361
|
||||
vertex -11.3262 4.52203 6.83361
|
||||
vertex 4.86215 14.4683 20
|
||||
vertex -14 10.3109 20
|
||||
vertex 28 -20 20
|
||||
vertex 22.6525 -20 6.83361
|
||||
vertex 17.3528 -38.2009 6.83361
|
||||
vertex 17.3528 -38.2009 6.83361
|
||||
vertex 22.6525 -20 6.83361
|
||||
vertex 8.65248 -20 -1.30367
|
||||
vertex -14 -50.3109 20
|
||||
vertex -11.3262 -44.522 6.83361
|
||||
vertex -21.2864 -29.6845 6.83361
|
||||
vertex 3.93356 -47.8854 6.83361
|
||||
vertex 17.3528 -38.2009 6.83361
|
||||
vertex 1.50249 -30.6513 -1.30367
|
||||
vertex -11.3262 4.52203 6.83361
|
||||
vertex -14 10.3109 20
|
||||
vertex -26.3114 -8.02929 20
|
||||
vertex 21.4492 -42.4976 20
|
||||
vertex 17.3528 -38.2009 6.83361
|
||||
vertex 4.86215 -54.4683 20
|
||||
vertex 21.4492 -42.4976 20
|
||||
vertex 28 -20 20
|
||||
vertex 17.3528 -38.2009 6.83361
|
||||
vertex -21.2864 -10.3155 6.83361
|
||||
vertex -11.3262 4.52203 6.83361
|
||||
vertex -26.3114 -8.02929 20
|
||||
vertex -26.3114 -8.02929 20
|
||||
vertex -21.2864 -29.6845 6.83361
|
||||
vertex -21.2864 -10.3155 6.83361
|
||||
vertex -21.2864 -29.6845 6.83361
|
||||
vertex -26.3114 -8.02929 20
|
||||
vertex -26.3114 -31.9707 20
|
||||
vertex 3.93356 -47.8854 6.83361
|
||||
vertex 1.50249 -30.6513 -1.30367
|
||||
vertex -11.3262 -44.522 6.83361
|
||||
vertex 4.86215 -54.4683 20
|
||||
vertex 3.93356 -47.8854 6.83361
|
||||
vertex -11.3262 -44.522 6.83361
|
||||
vertex 17.3528 -38.2009 6.83361
|
||||
vertex 6.62818 -26.9521 -1.30367
|
||||
vertex 1.50249 -30.6513 -1.30367
|
||||
vertex -4.32624 -10.6334 -1.30367
|
||||
vertex 1.50249 -9.34872 -1.30367
|
||||
vertex -11.3262 4.52203 6.83361
|
||||
vertex 1.50249 -30.6513 -1.30367
|
||||
vertex -4.32624 -29.3666 -1.30367
|
||||
vertex -11.3262 -44.522 6.83361
|
||||
vertex -11.3262 -44.522 6.83361
|
||||
vertex -8.13067 -23.6992 -1.30367
|
||||
vertex -21.2864 -29.6845 6.83361
|
||||
vertex 17.3528 -1.79909 6.83361
|
||||
vertex 3.93356 7.88542 6.83361
|
||||
vertex 1.50249 -9.34872 -1.30367
|
||||
vertex -4.32624 -29.3666 -1.30367
|
||||
vertex -8.13067 -23.6992 -1.30367
|
||||
vertex -11.3262 -44.522 6.83361
|
||||
vertex -8.13067 -16.3008 -1.30367
|
||||
vertex 8.65248 -20 -1.30367
|
||||
vertex 6.62818 -13.0479 -1.30367
|
||||
vertex -4.32624 -10.6334 -1.30367
|
||||
vertex 6.62818 -13.0479 -1.30367
|
||||
vertex 1.50249 -9.34872 -1.30367
|
||||
vertex -8.13067 -23.6992 -1.30367
|
||||
vertex 8.65248 -20 -1.30367
|
||||
vertex -8.13067 -16.3008 -1.30367
|
||||
vertex 6.62818 -13.0479 -1.30367
|
||||
vertex -4.32624 -10.6334 -1.30367
|
||||
vertex -8.13067 -16.3008 -1.30367
|
||||
vertex 8.65248 -20 -1.30367
|
||||
vertex -8.13067 -23.6992 -1.30367
|
||||
vertex 6.62818 -26.9521 -1.30367
|
||||
vertex -4.32624 -29.3666 -1.30367
|
||||
vertex 6.62818 -26.9521 -1.30367
|
||||
vertex -8.13067 -23.6992 -1.30367
|
||||
vertex 6.62818 -26.9521 -1.30367
|
||||
vertex -4.32624 -29.3666 -1.30367
|
||||
vertex 1.50249 -30.6513 -1.30367
|
||||
vertex -8.13067 -16.3008 -1.30367
|
||||
vertex -4.32624 -10.6334 -1.30367
|
||||
vertex -11.3262 4.52203 6.83361
|
||||
vertex 6.62818 -13.0479 -1.30367
|
||||
vertex 17.3528 -1.79909 6.83361
|
||||
vertex 1.50249 -9.34872 -1.30367
|
||||
vertex 8.65248 -20 -1.30367
|
||||
vertex 17.3528 -1.79909 6.83361
|
||||
vertex 6.62818 -13.0479 -1.30367
|
||||
vertex 32 20 72
|
||||
vertex 32 45 -50
|
||||
vertex 32 45 72
|
||||
vertex 32 45 -50
|
||||
vertex 32 20 72
|
||||
vertex 32 20 -50
|
||||
vertex -32 20 -50
|
||||
vertex -32 45 72
|
||||
vertex -32 45 -50
|
||||
vertex -32 45 72
|
||||
vertex -32 20 -50
|
||||
vertex -32 20 72
|
||||
vertex 32 45 -50
|
||||
vertex -32 45 72
|
||||
vertex 32 45 72
|
||||
vertex -32 45 72
|
||||
vertex 32 45 -50
|
||||
vertex -32 45 -50
|
||||
vertex -32 45 72
|
||||
vertex 32 20 72
|
||||
vertex 32 45 72
|
||||
vertex 32 20 72
|
||||
vertex -32 45 72
|
||||
vertex -32 20 72
|
|
@ -0,0 +1 @@
|
|||
require("heatshrink").decompress(atob("mEwxH+AH4A/AH4A/AA07iAutF4IwrFwM7mgwqFwU7nQvBGE4uDSAYwmFwovEGEYuGF4owhFw4vGGD4uIF44wdFxM7mgwiFxU7nQvHGDInExOz2eJSBgwYEoll6/X1vX2YvNGCqGFxPXLoIyBF5wwTWwxfB1oyBL54wSFwwrBAAWtBQk0GDYuGr6KCMILvFF5owNFwyNDYIgADnQvNGBYuHAAOzR4dlBYovOGBU6nQwIxOt1ouGF7QABiE0GRIAHFhkPeJwSCGR4tLhMPFxowEGQQvLmguIhIuRGAwyLnQtIFyYwIAAKXGF4otCFyowKGQy4EFzIwMfoYtFFzIwNRQoucGBwuhGBgujGBYukGBQulGBAunGA4uoGAsPF1IwEF1YwDF1n+mkQF1gA/AH4A/ADI"));
|
|
@ -0,0 +1,422 @@
|
|||
// globals
|
||||
var u = [0, 1, 0]; // axis of rotation
|
||||
var aux = new Float32Array(12);
|
||||
var p_aux = E.getAddressOf(aux, true);
|
||||
var a = 0.5; // angle of rotation
|
||||
var light = new Float32Array(12);
|
||||
var p_light = E.getAddressOf(light, true);
|
||||
light[0] = 1/Math.sqrt(2);
|
||||
light[1] = 1/Math.sqrt(2);
|
||||
light[2] = 0;
|
||||
var filex = new Float32Array(6);
|
||||
var p_filex = E.getAddressOf(filex, true);
|
||||
var addr = new Int32Array(12);
|
||||
var p_addr = E.getAddressOf(addr, true);
|
||||
var polyp = new Int32Array(6);
|
||||
var p_polyp = E.getAddressOf(polyp, true);
|
||||
var polyedge = new Int32Array(8);
|
||||
var p_polyedge = E.getAddressOf(polyedge, true);
|
||||
var edges;
|
||||
var p_edges;
|
||||
var zbuf;
|
||||
var p_zbuf;
|
||||
var zDist;
|
||||
var points;
|
||||
var p_points;
|
||||
var rpoints;
|
||||
var p_rpoints;
|
||||
var npoints = 0;
|
||||
var faces;
|
||||
var p_faces;
|
||||
var vpoints;
|
||||
var p_vpoints;
|
||||
var normals;
|
||||
var p_normals;
|
||||
var rnormals;
|
||||
var p_rnormals;
|
||||
var lastTime;
|
||||
var nFrames = 0;
|
||||
var interv;
|
||||
var qZrot = false;
|
||||
var qWireframe = 0;
|
||||
var zBeta = 0;
|
||||
|
||||
const c05 = Math.cos(0.05);
|
||||
const s05 = Math.sin(0.05);
|
||||
|
||||
var c = E.compiledC(`
|
||||
// void rotatePoints(int, int, int, int)
|
||||
// void projectPoints(int, int, int, int)
|
||||
// void popZBuf(int, int, int, int)
|
||||
// int processFace(int, int, int)
|
||||
// void initEdges(int, int)
|
||||
// int findSlot(int, int, int)
|
||||
void rotatePoints(float *p, float *res, int len, float *u) {
|
||||
float c = u[3];
|
||||
float s = u[4];
|
||||
for (int i=0; i<len; ++i) {
|
||||
res[3*i ] = p[3*i]*(c+u[0]*u[0]*(1-c)) + p[3*i+1]*(u[0]*u[1]*(1-c)-u[2]*s) + p[3*i+2]*(u[0]*u[2]*(1-c)+u[1]*s);
|
||||
res[3*i+1] = p[3*i]*(u[1]*u[0]*(1-c)+u[2]*s) + p[3*i+1]*(c+u[1]*u[1]*(1-c)) + p[3*i+2]*(u[1]*u[2]*(1-c)-u[0]*s);
|
||||
res[3*i+2] = p[3*i]*(u[2]*u[0]*(1-c)-u[1]*s) + p[3*i+1]*(u[2]*u[1]*(1-c)+u[0]*s) + p[3*i+2]*(c+u[2]*u[2]*(1-c));
|
||||
}
|
||||
}
|
||||
void projectPoints(float *p, short *res, int len, int zd) {
|
||||
float zdist = zd/100.0;
|
||||
for (int i=0; i<len; ++i) {
|
||||
float dz = p[3*i+2]-zdist;
|
||||
res[2*i+0] = (short)(120.0+320.0*p[3*i+0]/dz);
|
||||
res[2*i+1] = (short)(80.0+320.0*p[3*i+1]/dz);
|
||||
}
|
||||
}
|
||||
void quick_sort(int *base, unsigned int nel)
|
||||
{
|
||||
int *pivot;
|
||||
int tmp;
|
||||
unsigned int left, right;
|
||||
if (nel < 2) return;
|
||||
pivot = base;
|
||||
left = 0;
|
||||
right = nel-1;
|
||||
while (left < right) {
|
||||
while (*(base+left)>*pivot && left<right) left++;
|
||||
while (*(base+right)<*pivot && left<right) right--;
|
||||
if (left<right && *(base+left)!=*(base+right)) {
|
||||
if (base+left==pivot) {
|
||||
pivot = base+right;
|
||||
} else if (base+right==pivot) {
|
||||
pivot = base+left;
|
||||
}
|
||||
tmp = *(base+left); *(base+left) = *(base+right); *(base+right) = tmp;
|
||||
} else {
|
||||
left++;
|
||||
}
|
||||
}
|
||||
quick_sort(base, left-1);
|
||||
quick_sort(base+left, nel-left);
|
||||
}
|
||||
void popZBuf(float *p, unsigned short *f, int *zb, int len) {
|
||||
for (int i=0; i<len; ++i) {
|
||||
int z = int(1000.0*(p[f[i*3]*3+2]+p[f[i*3+1]*3+2]+p[f[i*3+2]*3+2]));
|
||||
zb[i] = (z<<10) | i;
|
||||
}
|
||||
quick_sort(zb, len);
|
||||
}
|
||||
int processFace(int *p, int z, int qWire) {
|
||||
short *faces = (short *)p[0];
|
||||
float *rnormals = (float *)p[1];
|
||||
short *vpoints = (short *)p[2];
|
||||
int *polyp = (int *)p[3];
|
||||
float *light = (float *)p[4];
|
||||
char *edges = (char *)p[5];
|
||||
int *polyedge = (int *)p[6];
|
||||
int shade;
|
||||
z = z & 0x3ff;
|
||||
if (rnormals[z*3+2]>0) {
|
||||
for (int j=0; j<3; ++j) {
|
||||
polyp[j*2+0] = vpoints[faces[z*3+j]*2];
|
||||
polyp[j*2+1] = vpoints[faces[z*3+j]*2+1];
|
||||
}
|
||||
if (qWire) {
|
||||
char e = edges[z];
|
||||
switch(e) {
|
||||
case 1:
|
||||
polyedge[0]=polyp[0];polyedge[1]=polyp[1];
|
||||
polyedge[2]=polyp[2];polyedge[3]=polyp[3];
|
||||
polyedge[4]=polyp[0];polyedge[5]=polyp[1];
|
||||
polyedge[6]=polyp[2];polyedge[7]=polyp[3];
|
||||
break;
|
||||
case 2:
|
||||
polyedge[0]=polyp[2];polyedge[1]=polyp[3];
|
||||
polyedge[2]=polyp[4];polyedge[3]=polyp[5];
|
||||
polyedge[4]=polyp[2];polyedge[5]=polyp[3];
|
||||
polyedge[6]=polyp[4];polyedge[7]=polyp[5];
|
||||
break;
|
||||
case 4:
|
||||
polyedge[0]=polyp[4];polyedge[1]=polyp[5];
|
||||
polyedge[2]=polyp[0];polyedge[3]=polyp[1];
|
||||
polyedge[4]=polyp[4];polyedge[5]=polyp[5];
|
||||
polyedge[6]=polyp[0];polyedge[7]=polyp[1];
|
||||
break;
|
||||
case 7:
|
||||
for (int k=0; k<6; ++k) polyedge[k] = polyp[k];
|
||||
polyedge[6] = polyp[0]; polyedge[7] = polyp[1];
|
||||
break;
|
||||
case 3:
|
||||
for (int k=0; k<6; ++k) polyedge[k] = polyp[k];
|
||||
polyedge[6]=polyp[4]; polyedge[7]=polyp[5];
|
||||
break;
|
||||
case 5:
|
||||
polyedge[0]=polyp[4];polyedge[1]=polyp[5];
|
||||
polyedge[2]=polyp[0];polyedge[3]=polyp[1];
|
||||
polyedge[4]=polyp[2];polyedge[5]=polyp[3];
|
||||
polyedge[6]=polyp[2];polyedge[7]=polyp[3];
|
||||
break;
|
||||
case 6:
|
||||
polyedge[0]=polyp[2];polyedge[1]=polyp[3];
|
||||
polyedge[2]=polyp[4];polyedge[3]=polyp[5];
|
||||
polyedge[4]=polyp[0];polyedge[5]=polyp[1];
|
||||
polyedge[6]=polyp[0];polyedge[7]=polyp[1];
|
||||
break;
|
||||
default:
|
||||
for (int k=0; k<8; ++k) polyedge[k]=-1;
|
||||
}
|
||||
}
|
||||
float s = 0.2+(1.0+rnormals[3*z+0]*light[0]+rnormals[3*z+1]*light[1]+rnormals[3*z+2]*light[2])/2.9;
|
||||
shade = int(s*31) | (int(s*63)<<5) | (int(s*31)<<11);
|
||||
return shade;
|
||||
}
|
||||
else return 0;
|
||||
}
|
||||
void initEdges(int *p, int len) {
|
||||
short *faces = (short *)p[0];
|
||||
char *edges = (char *)p[5];
|
||||
float *normals = (float *)p[7];
|
||||
for (int i=0; i<len; ++i) {
|
||||
char r=0;
|
||||
for (int j=0; j<3; ++j) {
|
||||
short e1=faces[j+i*3];
|
||||
short e2=faces[((j+1) % 3)+i*3];
|
||||
int k = len;
|
||||
while (k--) {
|
||||
if (i!=k && ((faces[k*3+1]==e1 && faces[k*3]==e2) || (faces[k*3+2]==e1 && faces[k*3+1]==e2) || (faces[k*3]==e1 && faces[k*3+2]==e2))) {
|
||||
if (normals[k*3]*normals[i*3]+normals[k*3+1]*normals[i*3+1]+normals[k*3+2]*normals[i*3+2] < 0.95) r |= (1<<j);
|
||||
k=0;
|
||||
}
|
||||
}
|
||||
}
|
||||
edges[i] = r;
|
||||
}
|
||||
}
|
||||
int findSlot(float *p, float *x, int len) {
|
||||
for (int i=0; i<len; ++i)
|
||||
if (p[3*i]-x[0]<0.0001 && p[3*i]-x[0]>-0.0001 && p[3*i+1]-x[1]<0.0001 && p[3*i+1]-x[1]>-0.0001 && p[3*i+2]-x[2]<0.0001 && p[3*i+2]-x[2]>-0.0001) return i;
|
||||
p[3*len] = x[0];
|
||||
p[3*len+1] = x[1];
|
||||
p[3*len+2] = x[2];
|
||||
return len;
|
||||
}
|
||||
typedef unsigned int uint32_t;
|
||||
typedef signed int int32_t;
|
||||
typedef unsigned char uint8_t;
|
||||
/*
|
||||
https://github.com/espruino/Espruino/blob/master/targetlibs/nrf5x_12/components/toolchain/cmsis/include/cmsis_gcc.h
|
||||
*/
|
||||
__attribute__( ( always_inline ) ) static inline uint32_t __get_FPSCR(void)
|
||||
{
|
||||
uint32_t result;
|
||||
/* Empty asm statement works as a scheduling barrier */
|
||||
__asm volatile ("");
|
||||
__asm volatile ("VMRS %0, fpscr" : "=r" (result) );
|
||||
__asm volatile ("");
|
||||
return(result);
|
||||
}
|
||||
__attribute__( ( always_inline ) ) static inline void __set_FPSCR(uint32_t fpscr)
|
||||
{
|
||||
/* Empty asm statement works as a scheduling barrier */
|
||||
__asm volatile ("");
|
||||
__asm volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc");
|
||||
__asm volatile ("");
|
||||
}
|
||||
`);
|
||||
|
||||
function initNormals() {
|
||||
var i = faces.length/3;
|
||||
while (i--) {
|
||||
normals[i*3+0] = (points[faces[3*i+1]*3+1]-points[faces[3*i+0]*3+1])*(points[faces[3*i+2]*3+2]-points[faces[3*i+0]*3+2]) - (points[faces[3*i+1]*3+2]-points[faces[3*i+0]*3+2])*(points[faces[3*i+2]*3+1]-points[faces[3*i+0]*3+1]);
|
||||
normals[i*3+1] = (points[faces[3*i+1]*3+2]-points[faces[3*i+0]*3+2])*(points[faces[3*i+2]*3+0]-points[faces[3*i+0]*3+0]) - (points[faces[3*i+1]*3+0]-points[faces[3*i+0]*3+0])*(points[faces[3*i+2]*3+2]-points[faces[3*i+0]*3+2]);
|
||||
normals[i*3+2] = (points[faces[3*i+1]*3+0]-points[faces[3*i+0]*3+0])*(points[faces[3*i+2]*3+1]-points[faces[3*i+0]*3+1]) - (points[faces[3*i+1]*3+1]-points[faces[3*i+0]*3+1])*(points[faces[3*i+2]*3+0]-points[faces[3*i+0]*3+0]);
|
||||
var n = Math.sqrt(normals[i*3]*normals[i*3]+normals[i*3+1]*normals[i*3+1]+normals[i*3+2]*normals[i*3+2]);
|
||||
if (n>0) {
|
||||
normals[i*3] /= -n;
|
||||
normals[i*3+1] /= -n;
|
||||
normals[i*3+2] /= -n;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function readSTL(fn) {
|
||||
var fb = require("Storage").read(fn);
|
||||
var nverts=0,i=0; while(i=fb.indexOf("vertex",i)+1) nverts++;
|
||||
points = new Float32Array(nverts);
|
||||
p_points = E.getAddressOf(points, true);
|
||||
faces = new Uint16Array(nverts);
|
||||
p_faces = E.getAddressOf(faces, true);
|
||||
edges = new Uint8Array(Math.max(faces.length/3,24))
|
||||
p_edges = E.getAddressOf(edges, true);
|
||||
var fp=0, p=0;
|
||||
var nf = 0;
|
||||
g.setColor(0.9, 0.9, 0.9);
|
||||
g.drawRect(20, 140, 220, 160);
|
||||
g.setColor(0.6, 0.6, 0.9);
|
||||
while (p<fb.length) {
|
||||
var line = '';
|
||||
while (fb[p]!="\n") line += fb[p++];
|
||||
p++;
|
||||
if (line.toLowerCase().includes("vertex")) {
|
||||
var v = line.trim().split(/\s+/);
|
||||
filex[0] = v[1];
|
||||
filex[1] = v[3];
|
||||
filex[2] = v[2];
|
||||
var slot = 0|c.findSlot(p_points, p_filex, npoints);
|
||||
if (slot==npoints) npoints++;
|
||||
faces[fp++] = slot;
|
||||
if (fp%3 == 0) g.fillRect(21, 141, 21+198*fp/nverts, 159);
|
||||
}
|
||||
}
|
||||
vpoints = new Uint16Array(Math.max(12,2*npoints));
|
||||
p_vpoints = E.getAddressOf(vpoints, true);
|
||||
normals = new Float32Array(faces.length);
|
||||
p_normals = E.getAddressOf(normals, true);
|
||||
initNormals();
|
||||
rnormals = new Float32Array(faces.length);
|
||||
p_rnormals = E.getAddressOf(rnormals, true);
|
||||
rpoints = new Float32Array(points.length);
|
||||
p_rpoints = E.getAddressOf(rpoints, true);
|
||||
zbuf = new Int32Array(Math.max(12,faces.length/3));
|
||||
p_zbuf = E.getAddressOf(zbuf, true);
|
||||
addr[0] = p_faces;
|
||||
addr[1] = p_rnormals;
|
||||
addr[2] = p_vpoints;
|
||||
addr[3] = p_polyp;
|
||||
addr[4] = p_light;
|
||||
addr[5] = p_edges;
|
||||
addr[6] = p_polyedge;
|
||||
addr[7] = p_normals;
|
||||
c.initEdges(p_addr, faces.length/3);
|
||||
console.log(edges);
|
||||
}
|
||||
|
||||
function rotV(v, u, c, s) {
|
||||
"ram"
|
||||
return [v[0]*(c+u[0]*u[0]*(1-c)) + v[1]*(u[0]*u[1]*(1-c)-u[2]*s) + v[2]*(u[0]*u[2]*(1-c)+u[1]*s),
|
||||
v[0]*(u[1]*u[0]*(1-c)+u[2]*s) + v[1]*(c+u[1]*u[1]*(1-c)) + v[2]*(u[1]*u[2]*(1-c)-u[0]*s),
|
||||
v[0]*(u[2]*u[0]*(1-c)-u[1]*s) + v[1]*(u[2]*u[1]*(1-c)+u[0]*s) + v[2]*(c+u[2]*u[2]*(1-c))];
|
||||
}
|
||||
|
||||
function largestExtent(pts) {
|
||||
var x = 0;
|
||||
var i = pts.length/3;
|
||||
while (i--) {
|
||||
var e = pts[3*i]*pts[3*i]+pts[3*i+1]*pts[3*i+1]+pts[3*i+2]*pts[3*i+2];
|
||||
if (e>x) x = e;
|
||||
}
|
||||
return Math.sqrt(x);
|
||||
}
|
||||
|
||||
function draw() {
|
||||
"ram"
|
||||
const n = [1, 0, 0];
|
||||
if (qZrot) {
|
||||
var ca=Math.cos(a), sa=Math.sin(a), cb=Math.cos(zBeta), sb=Math.sin(zBeta);
|
||||
var ul = Math.sqrt(sb*sb+ca*ca*sb*sb+2*sa*sa*cb+2*ca*sb*sb+2*sa*sa);
|
||||
u = [(sb+ca*sb)/ul, (-sa-sa*cb)/ul, (-sa*sb)/ul];
|
||||
var ra = Math.acos((ca+cb+ca*cb-1)/2);
|
||||
if (ra<0) ra += Math.PI;
|
||||
aux[3] = Math.cos(ra);
|
||||
aux[4] = Math.sin(ra);
|
||||
}
|
||||
else {
|
||||
u = rotV(u, n, c05, s05);
|
||||
aux[3] = Math.cos(a);
|
||||
aux[4] = Math.sin(a);
|
||||
}
|
||||
a += 0.08;
|
||||
aux[0] = u[0]; aux[1]=u[1]; aux[2]=u[2];
|
||||
c.rotatePoints(p_points, p_rpoints, npoints, p_aux);
|
||||
c.rotatePoints(p_normals, p_rnormals, faces.length/3, p_aux);
|
||||
c.projectPoints(p_rpoints, p_vpoints, npoints, 0|zDist*100);
|
||||
c.popZBuf(p_rpoints, p_faces, p_zbuf, faces.length/3);
|
||||
g.clear();
|
||||
var z, shade;
|
||||
if (qWireframe>0) {
|
||||
var i = faces.length/3;
|
||||
while (i--) {
|
||||
z = zbuf[i];
|
||||
shade = 0|c.processFace(p_addr, z, 1);
|
||||
if (shade > 0) {
|
||||
if (qWireframe==1) g.setColor(shade).fillPoly(polyp).setColor(0).drawPoly(polyedge);
|
||||
else {
|
||||
g.setColor(0).fillPoly(polyp).setColor(shade);
|
||||
if (qWireframe==2) g.drawPoly(polyedge);
|
||||
else g.drawPoly(polyp, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
var i = faces.length/3;
|
||||
while (i--) {
|
||||
z = zbuf[i];
|
||||
shade = 0|c.processFace(p_addr, z, 0);
|
||||
if (shade > 0) g.setColor(shade).fillPoly(polyp);
|
||||
}
|
||||
}
|
||||
nFrames++;
|
||||
var fps = Math.round(nFrames*100000/(Date.now()-lastTime))/100;
|
||||
g.setColor(0.7, 0.7, 0.7);
|
||||
g.setFont("6x8", 1);
|
||||
g.drawString("fps:"+fps.toString(), 20, 0);
|
||||
g.flip();
|
||||
}
|
||||
|
||||
function loadFile(fn) {
|
||||
Bangle.setLCDMode("direct");
|
||||
g.clear();
|
||||
E.showMenu();
|
||||
E.showMessage("Loading...", fn);
|
||||
readSTL(fn);
|
||||
zDist = 5*largestExtent(points);
|
||||
g.clear();
|
||||
g.setColor(1, 1, 1);
|
||||
g.setFont("6x8", 2);
|
||||
g.setFontAlign(-1, -1);
|
||||
g.setColor(1, 0.5, 0.5);
|
||||
g.drawString("Model info",15, 40);
|
||||
g.setColor(1, 1, 1);
|
||||
g.drawString("# faces: "+faces.length/3, 15, 80);
|
||||
g.drawString("# vertices: "+npoints, 15, 110);
|
||||
g.drawString("max extent: "+Math.round(100*(zDist/5))/100, 15, 140);
|
||||
g.flip();
|
||||
setWatch(function() {
|
||||
if (interv) {
|
||||
interv = clearInterval(interv);
|
||||
load();
|
||||
}
|
||||
else {
|
||||
Bangle.setLCDMode("doublebuffered");
|
||||
lastTime = Date.now();
|
||||
nFrames = 0;
|
||||
interv = setInterval(function() { draw();}, 30);
|
||||
} }, BTN2, {repeat:true, debounce:50});
|
||||
setWatch(function() {
|
||||
if (qZrot && zBeta<2*Math.PI/2-0.08) zBeta += 0.08;
|
||||
else zDist *= 0.9;
|
||||
}, BTN1, {repeat:true});
|
||||
setWatch(function() {
|
||||
if (qZrot && zBeta>-2*Math.PI/2-0.08) zBeta -= 0.08;
|
||||
else zDist /= 0.9;
|
||||
}, BTN3, {repeat:true});
|
||||
Bangle.on('swipe', function(direction){
|
||||
switch(direction){
|
||||
case 1:
|
||||
qZrot = !qZrot;
|
||||
break;
|
||||
case -1:
|
||||
qWireframe = (qWireframe+1)%4;
|
||||
break;
|
||||
}});
|
||||
}
|
||||
|
||||
function drawMenu() {
|
||||
const menu = {
|
||||
'': { 'title': 'STL files' }
|
||||
};
|
||||
var files = require("Storage").list(".stl");
|
||||
for (var i=0; i<files.length; ++i) {
|
||||
menu[files[i]] = loadFile.bind(null, files[i]);
|
||||
}
|
||||
menu['Exit'] = function() { load(); };
|
||||
E.showMenu(menu);
|
||||
}
|
||||
|
||||
drawMenu();
|
|
@ -0,0 +1,272 @@
|
|||
// globals
|
||||
var u = [0, 1, 0]; // axis of rotation
|
||||
var aux = new Float32Array(12);
|
||||
var p_aux = E.getAddressOf(aux, true);
|
||||
var a = 0.5; // angle of rotation
|
||||
var light = new Float32Array(12);
|
||||
var p_light = E.getAddressOf(light, true);
|
||||
light[0] = 1/Math.sqrt(2);
|
||||
light[1] = 1/Math.sqrt(2);
|
||||
light[2] = 0;
|
||||
var filex = new Float32Array(6);
|
||||
var p_filex = E.getAddressOf(filex, true);
|
||||
var addr = new Int32Array(12);
|
||||
var p_addr = E.getAddressOf(addr, true);
|
||||
var polyp = new Int32Array(6);
|
||||
var p_polyp = E.getAddressOf(polyp, true);
|
||||
var polyedge = new Int32Array(8);
|
||||
var p_polyedge = E.getAddressOf(polyedge, true);
|
||||
var edges;
|
||||
var p_edges;
|
||||
var zbuf;
|
||||
var p_zbuf;
|
||||
var zDist;
|
||||
var points;
|
||||
var p_points;
|
||||
var rpoints;
|
||||
var p_rpoints;
|
||||
var npoints = 0;
|
||||
var faces;
|
||||
var p_faces;
|
||||
var vpoints;
|
||||
var p_vpoints;
|
||||
var normals;
|
||||
var p_normals;
|
||||
var rnormals;
|
||||
var p_rnormals;
|
||||
var lastTime;
|
||||
var nFrames = 0;
|
||||
var interv;
|
||||
var qZrot = false;
|
||||
var qWireframe = 0;
|
||||
var zBeta = 0;
|
||||
|
||||
const c05 = Math.cos(0.05);
|
||||
const s05 = Math.sin(0.05);
|
||||
|
||||
var c = (function(){
|
||||
var bin=atob("8e4QCnBHAAACS9P4BAHA84AQcEcA4QDg8e4QOiPwnwPh7hA68e4QOgJLQCLD+IQhcEcAvwDhAOCf7SN63+0jahC1ACMERpNCke0AajDa1O0Aenfuxnr07sd68e4Q+iTV9O7mevHuEPof3dTtAXqR7QFqd+7GevTux3rx7hD6FNX07uZ68e4Q+g/d1O0CepHtAmp37sZ69O7HevHuEPoE1fTu5nrx7hD6DNwBMww0yucMIwP7AgCA7QBqS2hDYItog2ATRhhGEL0Xt9E4F7fRuC3p8E/Q+BywQ2mf7Tt6BWiHsFhGAZEDkwAiT/AGCAGbmkJl2gLrQgMFkwj7AlMCkwAjHEZfHAMhl/vx/gWZAp4O604Op+sODk/wAQyORDb5E2A1+R7gDPoD81uy3fgEwASTDPH/M7zxAA8H0QMvO0bg0QObDDDUVAEy0OeaQjXQCPsD/AXrDAq6+QKQTkUD0TX5DBBxRQvQuvkEoFZFAdHORQXQNfkMwLRFH9HWRR3RDCEB+wOz0O0BatPtAXqT7QBqZ+6metDtAGrm7iZ6k+0CatDtAmrm7iZ69O7HevHuEPoC1QSbHEPksgAjnEa45wewvejwjwC/MzNzPy3p8ENEaAVo0PgIwMNoB2nB8wkBDCYG+wFE1O0CevXuwHrx7hD6QPO8gND4FICAaQHrQQ4F604OACU++QJrPPkmkEX4A5AM64YGA+sFCQg1tvkCYMn4BGAYLe7RACor0Bj4ASABOgYqAPKSgN/oAvAEFG5UeIRhABpoAmBaaEJgmmiCYNpowmAaaAJhWmhCYZpogmHbaA7gmmgCYNpoQmAaaYJgWmnCYJpoAmHaaEJhGmmCYVtpw2GU7QBq1+0AarfuAHqm7iZ61+0BapTtAWqm7iZ61+0Caqfupnrf7TJqx+4mep/tMXp37od6s+4Peifuh3q97sd6F+4QCp/tLHpn7od6wwL97ud6F+6QKkPqQhMYQ73o8IMaaQJgWmlCYBpogmBaaMJgGmkCYVppQmEI4BofA/EUAcUaUvgEb65QkUL60RpogmFbaLTnGh8D8RQBxRpS+ARvrlCRQvrRp+caaQJgWmlCYBpogmBaaMJgmmgCYdpoiueaaAJg2mhCYBppgmBaacJgGmgCYVpozucDH0/w/zIcMEP4BC+YQvvRiucAIL3o8IOamTlAzcxMPgAAfEIt6fBBBEYORgEuNdlzHiJGACHS+ACABOuBAAdGUPgEW0VFAd2ZQgrTBOuDDGBGXPgE6fBFBd2ZQhTSATv25wEx6+eZQg7SdUUM0JdCCNCQQgi/OkbH+ADgBWANRilG2OcCRvfnTRyrQvjYIEb/98j/BOuFBHYbx+e96PCBn+0XevC0ACUMJp1CAfEGASHaMfgETDH4BnwG+wQE1O0CajH4AkwG+wcH1+0Cegb7BAR37qZ61O0Canfupnpn7od6/e7nehfukEpF6oQkQvglQAE12ecZRhBG8Lz/95K/AAB6RAfukDq47ud63+0aep/tGmqf7Rpa3+0aWsfuJ0oQtQAklEIA8QwAAfEEASHaATQQ7QF6UO0DajfuZHpm7oZqxu6HelDtAmp37oV6Zu6Gav3u53oX7pA6xu6HeiH4BDx37qV6/e7nehfukDoh+AI81+cQvQC/AADIQgAAoEMAAPBCAACgQpPtA1rT7QRaELX37gBKACSUQgDxDAAB8QwBedqT7QBqk+0CStPtAWp07sV6Zu4mOiTuZXqw7kU6p+6jegE0UO0COifuI3pm7gY6Ze6maqPupzom7gRq8O5DOhDtAzrn7oZqo+4jehDtAWqm7iZ6sO5FSgHtA3qT7QFq0+0COtPtAGom7gZ6Ju4mOqfuh0om7iNqsO5EehDtAkon7gR6Je6jSmbu5Wqn7oNKEO0DOufuhmqj7gR6EO0BaqbuJnoB7QJ60+0CapPtAEqT7QFqJe6Eembuhjom7oRKp+6jeibuZWpQ7QI6p+6EaifuI3oQ7QNKZu6maqTuBnqw7kVqp+6malDtAWqm7oZ6Ae0Ben/nEL0AAA==");
|
||||
return {
|
||||
rotatePoints:E.nativeCall(1253, "void(int, int, int, int)", bin),
|
||||
projectPoints:E.nativeCall(1121, "void(int, int, int, int)", bin),
|
||||
popZBuf:E.nativeCall(1021, "void(int, int, int, int)", bin),
|
||||
processFace:E.nativeCall(461, "int(int, int, int)", bin),
|
||||
initEdges:E.nativeCall(209, "void(int, int)", bin),
|
||||
findSlot:E.nativeCall(57, "int(int, int, int)", bin),
|
||||
clearFPU:E.nativeCall(25, "void()", bin),
|
||||
getFPSCR:E.nativeCall(1, "int()", bin),
|
||||
getFPUPendingIRQ:E.nativeCall(9, "int()", bin),
|
||||
};
|
||||
})();
|
||||
|
||||
function initNormals() {
|
||||
var i = faces.length/3;
|
||||
while (i--) {
|
||||
normals[i*3+0] = (points[faces[3*i+1]*3+1]-points[faces[3*i+0]*3+1])*(points[faces[3*i+2]*3+2]-points[faces[3*i+0]*3+2]) - (points[faces[3*i+1]*3+2]-points[faces[3*i+0]*3+2])*(points[faces[3*i+2]*3+1]-points[faces[3*i+0]*3+1]);
|
||||
normals[i*3+1] = (points[faces[3*i+1]*3+2]-points[faces[3*i+0]*3+2])*(points[faces[3*i+2]*3+0]-points[faces[3*i+0]*3+0]) - (points[faces[3*i+1]*3+0]-points[faces[3*i+0]*3+0])*(points[faces[3*i+2]*3+2]-points[faces[3*i+0]*3+2]);
|
||||
normals[i*3+2] = (points[faces[3*i+1]*3+0]-points[faces[3*i+0]*3+0])*(points[faces[3*i+2]*3+1]-points[faces[3*i+0]*3+1]) - (points[faces[3*i+1]*3+1]-points[faces[3*i+0]*3+1])*(points[faces[3*i+2]*3+0]-points[faces[3*i+0]*3+0]);
|
||||
var n = Math.sqrt(normals[i*3]*normals[i*3]+normals[i*3+1]*normals[i*3+1]+normals[i*3+2]*normals[i*3+2]);
|
||||
if (n>0) {
|
||||
normals[i*3] /= -n;
|
||||
normals[i*3+1] /= -n;
|
||||
normals[i*3+2] /= -n;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function readSTL(fn) {
|
||||
var fb = require("Storage").read(fn);
|
||||
var nverts=0,i=0; while(i=fb.indexOf("vertex",i)+1) nverts++;
|
||||
points = new Float32Array(nverts);
|
||||
p_points = E.getAddressOf(points, true);
|
||||
faces = new Uint16Array(nverts);
|
||||
p_faces = E.getAddressOf(faces, true);
|
||||
edges = new Uint8Array(Math.max(faces.length/3,24))
|
||||
p_edges = E.getAddressOf(edges, true);
|
||||
var fp=0, p=0;
|
||||
var nf = 0;
|
||||
g.setColor(0.9, 0.9, 0.9);
|
||||
g.drawRect(20, 140, 220, 160);
|
||||
g.setColor(0.6, 0.6, 0.9);
|
||||
while (p<fb.length) {
|
||||
var line = '';
|
||||
while (fb[p]!="\n") line += fb[p++];
|
||||
p++;
|
||||
if (line.toLowerCase().includes("vertex")) {
|
||||
var v = line.trim().split(/\s+/);
|
||||
filex[0] = v[1];
|
||||
filex[1] = v[3];
|
||||
filex[2] = v[2];
|
||||
var slot = 0|c.findSlot(p_points, p_filex, npoints);
|
||||
if (slot==npoints) npoints++;
|
||||
faces[fp++] = slot;
|
||||
if (fp%3 == 0) g.fillRect(21, 141, 21+198*fp/nverts, 159);
|
||||
}
|
||||
}
|
||||
vpoints = new Uint16Array(Math.max(12,2*npoints));
|
||||
p_vpoints = E.getAddressOf(vpoints, true);
|
||||
normals = new Float32Array(faces.length);
|
||||
p_normals = E.getAddressOf(normals, true);
|
||||
initNormals();
|
||||
rnormals = new Float32Array(faces.length);
|
||||
p_rnormals = E.getAddressOf(rnormals, true);
|
||||
rpoints = new Float32Array(points.length);
|
||||
p_rpoints = E.getAddressOf(rpoints, true);
|
||||
zbuf = new Int32Array(Math.max(12,faces.length/3));
|
||||
p_zbuf = E.getAddressOf(zbuf, true);
|
||||
addr[0] = p_faces;
|
||||
addr[1] = p_rnormals;
|
||||
addr[2] = p_vpoints;
|
||||
addr[3] = p_polyp;
|
||||
addr[4] = p_light;
|
||||
addr[5] = p_edges;
|
||||
addr[6] = p_polyedge;
|
||||
addr[7] = p_normals;
|
||||
c.initEdges(p_addr, faces.length/3);
|
||||
console.log(edges);
|
||||
}
|
||||
|
||||
function rotV(v, u, c, s) {
|
||||
"ram"
|
||||
return [v[0]*(c+u[0]*u[0]*(1-c)) + v[1]*(u[0]*u[1]*(1-c)-u[2]*s) + v[2]*(u[0]*u[2]*(1-c)+u[1]*s),
|
||||
v[0]*(u[1]*u[0]*(1-c)+u[2]*s) + v[1]*(c+u[1]*u[1]*(1-c)) + v[2]*(u[1]*u[2]*(1-c)-u[0]*s),
|
||||
v[0]*(u[2]*u[0]*(1-c)-u[1]*s) + v[1]*(u[2]*u[1]*(1-c)+u[0]*s) + v[2]*(c+u[2]*u[2]*(1-c))];
|
||||
}
|
||||
|
||||
function largestExtent(pts) {
|
||||
var x = 0;
|
||||
var i = pts.length/3;
|
||||
while (i--) {
|
||||
var e = pts[3*i]*pts[3*i]+pts[3*i+1]*pts[3*i+1]+pts[3*i+2]*pts[3*i+2];
|
||||
if (e>x) x = e;
|
||||
}
|
||||
return Math.sqrt(x);
|
||||
}
|
||||
|
||||
function draw() {
|
||||
"ram"
|
||||
const n = [1, 0, 0];
|
||||
if (qZrot) {
|
||||
var ca=Math.cos(a), sa=Math.sin(a), cb=Math.cos(zBeta), sb=Math.sin(zBeta);
|
||||
var ul = Math.sqrt(sb*sb+ca*ca*sb*sb+2*sa*sa*cb+2*ca*sb*sb+2*sa*sa);
|
||||
u = [(sb+ca*sb)/ul, (-sa-sa*cb)/ul, (-sa*sb)/ul];
|
||||
var ra = Math.acos((ca+cb+ca*cb-1)/2);
|
||||
if (ra<0) ra += Math.PI;
|
||||
aux[3] = Math.cos(ra);
|
||||
aux[4] = Math.sin(ra);
|
||||
}
|
||||
else {
|
||||
u = rotV(u, n, c05, s05);
|
||||
aux[3] = Math.cos(a);
|
||||
aux[4] = Math.sin(a);
|
||||
}
|
||||
a += 0.08;
|
||||
aux[0] = u[0]; aux[1]=u[1]; aux[2]=u[2];
|
||||
c.rotatePoints(p_points, p_rpoints, npoints, p_aux);
|
||||
c.rotatePoints(p_normals, p_rnormals, faces.length/3, p_aux);
|
||||
c.projectPoints(p_rpoints, p_vpoints, npoints, 0|zDist*100);
|
||||
c.popZBuf(p_rpoints, p_faces, p_zbuf, faces.length/3);
|
||||
g.clear();
|
||||
var z, shade;
|
||||
if (qWireframe>0) {
|
||||
var i = faces.length/3;
|
||||
while (i--) {
|
||||
z = zbuf[i];
|
||||
shade = 0|c.processFace(p_addr, z, 1);
|
||||
if (shade > 0) {
|
||||
if (qWireframe==1) {
|
||||
g.setColor(shade);
|
||||
g.fillPoly(polyp);
|
||||
g.setColor(0);
|
||||
g.drawPoly(polyedge);
|
||||
}
|
||||
else {
|
||||
g.setColor(0);
|
||||
g.fillPoly(polyp);
|
||||
g.setColor(shade);
|
||||
if (qWireframe==2) g.drawPoly(polyedge);
|
||||
else g.drawPoly(polyp, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
var i = faces.length/3;
|
||||
while (i--) {
|
||||
z = zbuf[i];
|
||||
shade = 0|c.processFace(p_addr, z, 0);
|
||||
if (shade > 0) {
|
||||
g.setColor(shade);
|
||||
g.fillPoly(polyp);
|
||||
}
|
||||
}
|
||||
}
|
||||
nFrames++;
|
||||
var fps = Math.round(nFrames*100000/(Date.now()-lastTime))/100;
|
||||
g.setColor(0.7, 0.7, 0.7);
|
||||
g.setFont("6x8", 1);
|
||||
g.drawString("fps:"+fps.toString(), 20, 0);
|
||||
g.flip();
|
||||
}
|
||||
|
||||
function loadFile(fn) {
|
||||
Bangle.setLCDMode("direct");
|
||||
g.clear();
|
||||
E.showMenu();
|
||||
E.showMessage("Loading...", fn);
|
||||
readSTL(fn);
|
||||
zDist = 5*largestExtent(points);
|
||||
g.clear();
|
||||
g.setColor(1, 1, 1);
|
||||
g.setFont("6x8", 2);
|
||||
g.setFontAlign(-1, -1);
|
||||
g.setColor(1, 0.5, 0.5);
|
||||
g.drawString("Model info",15, 40);
|
||||
g.setColor(1, 1, 1);
|
||||
g.drawString("# faces: "+faces.length/3, 15, 80);
|
||||
g.drawString("# vertices: "+npoints, 15, 110);
|
||||
g.drawString("max extent: "+Math.round(100*(zDist/5))/100, 15, 140);
|
||||
g.flip();
|
||||
setWatch(function() {
|
||||
if (interv) {
|
||||
interv = clearInterval(interv);
|
||||
c.clearFPU(); load();
|
||||
}
|
||||
else {
|
||||
Bangle.setLCDMode("doublebuffered");
|
||||
lastTime = Date.now();
|
||||
nFrames = 0;
|
||||
interv = setInterval(function() { draw();}, 30);
|
||||
} }, BTN2, {repeat:true, debounce:50});
|
||||
setWatch(function() {
|
||||
if (qZrot && zBeta<2*Math.PI/2-0.08) zBeta += 0.08;
|
||||
else zDist *= 0.9;
|
||||
}, BTN1, {repeat:true});
|
||||
setWatch(function() {
|
||||
if (qZrot && zBeta>-2*Math.PI/2-0.08) zBeta -= 0.08;
|
||||
else zDist /= 0.9;
|
||||
}, BTN3, {repeat:true});
|
||||
Bangle.on('swipe', function(direction){
|
||||
switch(direction){
|
||||
case 1:
|
||||
qZrot = !qZrot;
|
||||
break;
|
||||
case -1:
|
||||
qWireframe = (qWireframe+1)%4;
|
||||
break;
|
||||
}});
|
||||
}
|
||||
|
||||
function drawMenu() {
|
||||
const menu = {
|
||||
'': { 'title': 'STL files' }
|
||||
};
|
||||
var files = require("Storage").list(".stl");
|
||||
for (var i=0; i<files.length; ++i) {
|
||||
menu[files[i]] = loadFile.bind(null, files[i]);
|
||||
}
|
||||
menu['Exit'] = function() { c.clearFPU(); load(); };
|
||||
E.showMenu(menu);
|
||||
}
|
||||
|
||||
drawMenu();
|
Loading…
Reference in New Issue