clean up directories
This commit is contained in:
parent
5e52265a3b
commit
fec6a75aeb
@ -4,7 +4,7 @@ import {
|
|||||||
Quaternion,
|
Quaternion,
|
||||||
Vector2,
|
Vector2,
|
||||||
Vector3
|
Vector3
|
||||||
} from '../node_modules/three/src/Three';
|
} from 'three/src/Three';
|
||||||
|
|
||||||
var TrackballControls = function ( object, domElement ) {
|
var TrackballControls = function ( object, domElement ) {
|
||||||
|
|
26
https/rootCA.pem
Normal file
26
https/rootCA.pem
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIEbjCCAtagAwIBAgIRAKm5AjBIhGb5Ln0os/kCDC4wDQYJKoZIhvcNAQELBQAw
|
||||||
|
TzEeMBwGA1UEChMVbWtjZXJ0IGRldmVsb3BtZW50IENBMRIwEAYDVQQLDAlob3dh
|
||||||
|
cmRAaHAxGTAXBgNVBAMMEG1rY2VydCBob3dhcmRAaHAwHhcNMjEwNDE4MDYxNTM5
|
||||||
|
WhcNMzEwNDE4MDYxNTM5WjBPMR4wHAYDVQQKExVta2NlcnQgZGV2ZWxvcG1lbnQg
|
||||||
|
Q0ExEjAQBgNVBAsMCWhvd2FyZEBocDEZMBcGA1UEAwwQbWtjZXJ0IGhvd2FyZEBo
|
||||||
|
cDCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAKhLnt2Krsa5m+NqqjjX
|
||||||
|
J5SF9Nm0SGWI89g6nRiJVc2guKFZDXiV0xDz9SFj8Md5ZlX71MtO/3ACx67/VgN4
|
||||||
|
As5+yFDEl6ulvesjZR81Xu2aGnR602SmL8Y3Q6sZUTvB3qgjQJExmEzv7ypo6PNX
|
||||||
|
Uh8Hj1/7qviHsGE8nYn7jfiy8eSnwq57p67UCFKvahBmUMEMHythcXq/zcWUJ5Dw
|
||||||
|
qjiQJNLUFcIN3Hl7J8QNtskds1Zt+N9TLS8my+cE91JG8T1JnwOn/zWJ1cnTEdls
|
||||||
|
yQIfbb2/INlkyuTvPkJHKggCrDzmVCxhLpD2aFQ2Qu8RtjmbNN/B7YEUJP8SLrv7
|
||||||
|
lWUV7Ic5HQmS+/q27TXOm4z8HWX1GlCzoaj5VyLaPZf62eRIBunGXcvp1GcXLbiy
|
||||||
|
GCo6+Tz7RiwBX3DpH70Rz8pbz9R/LOPLa2uhlB+r7oCxpqTWrl96l+gxohfnntti
|
||||||
|
adE5cZDS8/0ITgjXcPAezNHELlJYJSuIewOVzEOr9BYpOQIDAQABo0UwQzAOBgNV
|
||||||
|
HQ8BAf8EBAMCAgQwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU1LipvY+p
|
||||||
|
DhxjE8UP8QpCiAfmI3kwDQYJKoZIhvcNAQELBQADggGBAAUDatXb+z8Fb9hz8CHX
|
||||||
|
CNrHXlppy6/gQvVdQ02SkFVCOqemVCdZPUCM3jAUciXZJapHQNiTam8lTi6muC9m
|
||||||
|
fHYv1xBXoWc/S7Y8BOpce1R76QEMwEHfqNetquAlFgLmmTuESXMUi1eJJobvS2zS
|
||||||
|
QLqYfx8AUkZPqDHQnJ5ZVBYqKPFTN9NKg0iR/UHJSt3tUOMyVnkx5lMRZFrUEue1
|
||||||
|
l+twzi0+Lhx11Sjx69kDd8qtGYvedcxKacR722LdiR8/YoHFoa3va/CBmLFH63oJ
|
||||||
|
k+10wNhm7eiubOaBvVit+uORS2ur26/1vFF72TLFTtXCF3mDG8P/6HB0fPzXRliI
|
||||||
|
cXdoO5+955KS6p+ZmjoMY37NNsnIZ0q3Zd6gj3I+dvhnW1XysDCEWsAiI0BQqC9d
|
||||||
|
AeZ3LqBbHIyJBantXQqpmAq9+vrYe/oUq0pwhC4cMwpAwE5pvGZgN0nt6acwrr5i
|
||||||
|
dLW6a1E571sfFFj2zC20kjwL3Sg9E2jSbMFOIiJopdT39Q==
|
||||||
|
-----END CERTIFICATE-----
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.0 KiB |
@ -1,124 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
width="452.45901"
|
|
||||||
height="96"
|
|
||||||
viewBox="0 0 452.45901 96.000008"
|
|
||||||
version="1.1"
|
|
||||||
id="svg2112"
|
|
||||||
inkscape:version="1.0.2 (1.0.2+r75+1)"
|
|
||||||
sodipodi:docname="icon_text.svg">
|
|
||||||
<defs
|
|
||||||
id="defs2106">
|
|
||||||
<rect
|
|
||||||
x="645.90955"
|
|
||||||
y="45.977581"
|
|
||||||
width="248.2307"
|
|
||||||
height="71.300766"
|
|
||||||
id="rect943" />
|
|
||||||
</defs>
|
|
||||||
<sodipodi:namedview
|
|
||||||
id="base"
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#666666"
|
|
||||||
borderopacity="1.0"
|
|
||||||
inkscape:pageopacity="0.0"
|
|
||||||
inkscape:pageshadow="2"
|
|
||||||
inkscape:zoom="0.53561479"
|
|
||||||
inkscape:cx="-4.052236"
|
|
||||||
inkscape:cy="331.25679"
|
|
||||||
inkscape:document-units="px"
|
|
||||||
inkscape:current-layer="layer1"
|
|
||||||
inkscape:document-rotation="0"
|
|
||||||
showgrid="false"
|
|
||||||
inkscape:window-width="1747"
|
|
||||||
inkscape:window-height="1199"
|
|
||||||
inkscape:window-x="241"
|
|
||||||
inkscape:window-y="125"
|
|
||||||
inkscape:window-maximized="0"
|
|
||||||
units="px" />
|
|
||||||
<metadata
|
|
||||||
id="metadata2109">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
<dc:title />
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<g
|
|
||||||
inkscape:label="Layer 1"
|
|
||||||
inkscape:groupmode="layer"
|
|
||||||
id="layer1">
|
|
||||||
<g
|
|
||||||
aria-label="three.cad"
|
|
||||||
transform="matrix(1.8120726,0,0,1.8120726,-1064.5195,-78.240227)"
|
|
||||||
id="text941"
|
|
||||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect943);fill:#000000;fill-opacity:1;stroke:none">
|
|
||||||
<path
|
|
||||||
d="m 655.63016,64.726208 h 7.84 v 2.76 h -7.84 v 8.64 q 0,1.4 0.2,2.28 0.2,0.88 0.64,1.44 0.48,0.52 1.2,0.72 0.72,0.2 1.76,0.2 1.44,0 2.32,-0.24 0.88,-0.24 1.68,-0.64 l 0.48,2.8 q -0.56,0.24 -1.8,0.64 -1.2,0.4 -3,0.4 -2.08,0 -3.4,-0.48 -1.32,-0.48 -2.08,-1.44 -0.72,-0.96 -1,-2.36 -0.28,-1.44 -0.28,-3.32 v -8.64 h -3.92 v -2.76 h 3.92 v -5.2 l 3.28,-0.56 z"
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Ubuntu Mono';-inkscape-font-specification:'Ubuntu Mono'"
|
|
||||||
id="path842" />
|
|
||||||
<path
|
|
||||||
d="m 668.75008,83.286208 v -27.16 l 3.32,-0.56 v 9.44 q 0.8,-0.32 1.8,-0.48 1,-0.2 1.96,-0.2 2.12,0 3.52,0.64 1.44,0.6 2.28,1.72 0.84,1.12 1.2,2.68 0.36,1.56 0.36,3.44 v 10.48 h -3.28 v -9.76 q 0,-3.44 -0.96,-4.84 -0.96,-1.44 -3.44,-1.44 -1.04,0 -2.04,0.24 -0.96,0.2 -1.4,0.4 v 15.4 z"
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Ubuntu Mono';-inkscape-font-specification:'Ubuntu Mono'"
|
|
||||||
id="path844" />
|
|
||||||
<path
|
|
||||||
d="m 690.19,83.286208 v -17.56 q 4.08,-1.4 8.24,-1.4 1.28,0 2.44,0.12 1.16,0.08 2.56,0.4 l -0.6,2.92 q -1.28,-0.36 -2.28,-0.44 -0.96,-0.12 -2.12,-0.12 -2.44,0 -4.96,0.68 v 15.4 z"
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Ubuntu Mono';-inkscape-font-specification:'Ubuntu Mono'"
|
|
||||||
id="path846" />
|
|
||||||
<path
|
|
||||||
d="m 716.26993,64.286208 q 3.76,0 5.8,2.36 2.04,2.32 2.04,7.08 v 1.16 h -13.28 q 0.2,2.88 1.88,4.4 1.72,1.48 4.8,1.48 1.76,0 3,-0.28 1.24,-0.28 1.88,-0.6 l 0.44,2.8 q -0.6,0.32 -2.16,0.68 -1.56,0.36 -3.52,0.36 -2.4,0 -4.24,-0.72 -1.8,-0.76 -3,-2.04 -1.2,-1.28 -1.8,-3.04 -0.6,-1.8 -0.6,-3.88 0,-2.48 0.76,-4.32 0.76,-1.84 2,-3.04 1.24,-1.2 2.8,-1.8 1.56,-0.6 3.2,-0.6 z m 4.48,7.92 q 0,-2.36 -1.24,-3.72 -1.24,-1.4 -3.28,-1.4 -1.16,0 -2.12,0.44 -0.92,0.44 -1.6,1.16 -0.68,0.72 -1.08,1.64 -0.4,0.92 -0.52,1.88 z"
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Ubuntu Mono';-inkscape-font-specification:'Ubuntu Mono'"
|
|
||||||
id="path848" />
|
|
||||||
<path
|
|
||||||
d="m 736.26985,64.286208 q 3.76,0 5.8,2.36 2.04,2.32 2.04,7.08 v 1.16 h -13.28 q 0.2,2.88 1.88,4.4 1.72,1.48 4.8,1.48 1.76,0 3,-0.28 1.24,-0.28 1.88,-0.6 l 0.44,2.8 q -0.6,0.32 -2.16,0.68 -1.56,0.36 -3.52,0.36 -2.4,0 -4.24,-0.72 -1.8,-0.76 -3,-2.04 -1.2,-1.28 -1.8,-3.04 -0.6,-1.8 -0.6,-3.88 0,-2.48 0.76,-4.32 0.76,-1.84 2,-3.04 1.24,-1.2 2.8,-1.8 1.56,-0.6 3.2,-0.6 z m 4.48,7.92 q 0,-2.36 -1.24,-3.72 -1.24,-1.4 -3.28,-1.4 -1.16,0 -2.12,0.44 -0.92,0.44 -1.6,1.16 -0.68,0.72 -1.08,1.64 -0.4,0.92 -0.52,1.88 z"
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Ubuntu Mono';-inkscape-font-specification:'Ubuntu Mono'"
|
|
||||||
id="path850" />
|
|
||||||
<path
|
|
||||||
d="m 758.86977,80.726208 q 0,1.2 -0.8,2.12 -0.8,0.92 -2.12,0.92 -1.36,0 -2.16,-0.92 -0.8,-0.92 -0.8,-2.12 0,-1.24 0.8,-2.16 0.8,-0.92 2.16,-0.92 1.32,0 2.12,0.92 0.8,0.92 0.8,2.16 z"
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Ubuntu Mono';-inkscape-font-specification:'Ubuntu Mono'"
|
|
||||||
id="path852" />
|
|
||||||
<path
|
|
||||||
d="m 767.8697,74.046208 q 0,-2.52 0.8,-4.36 0.8,-1.84 2.2,-3.04 1.4,-1.2 3.24,-1.76 1.88,-0.6 4,-0.6 1.36,0 2.68,0.2 1.36,0.16 2.88,0.64 l -0.76,2.84 q -1.32,-0.48 -2.44,-0.6 -1.08,-0.16 -2.2,-0.16 -1.44,0 -2.72,0.4 -1.28,0.36 -2.24,1.2 -0.92,0.8 -1.48,2.12 -0.56,1.28 -0.56,3.12 0,1.76 0.52,3.04 0.52,1.24 1.44,2.08 0.96,0.8 2.28,1.2 1.32,0.4 2.92,0.4 1.28,0 2.44,-0.12 1.2,-0.16 2.6,-0.64 l 0.48,2.76 q -1.4,0.52 -2.84,0.72 -1.44,0.24 -3.12,0.24 -2.24,0 -4.12,-0.6 -1.84,-0.64 -3.2,-1.84 -1.32,-1.2 -2.08,-3 -0.72,-1.84 -0.72,-4.24 z"
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Ubuntu Mono';-inkscape-font-specification:'Ubuntu Mono'"
|
|
||||||
id="path854" />
|
|
||||||
<path
|
|
||||||
d="m 796.10962,80.926208 q 1.24,0 2.2,-0.08 1,-0.08 1.64,-0.2 v -5.52 q -0.64,-0.2 -1.56,-0.32 -0.88,-0.12 -1.88,-0.12 -0.92,0 -1.8,0.16 -0.88,0.12 -1.56,0.48 -0.68,0.36 -1.12,0.96 -0.44,0.56 -0.44,1.44 0,1.8 1.2,2.52 1.24,0.68 3.32,0.68 z m -0.32,-16.64 q 2.08,0 3.48,0.52 1.44,0.52 2.32,1.44 0.88,0.92 1.24,2.24 0.36,1.32 0.36,2.88 v 11.6 q -1.16,0.2 -3.08,0.48 -1.88,0.28 -3.88,0.28 -1.52,0 -2.96,-0.28 -1.44,-0.24 -2.56,-0.88 -1.12,-0.68 -1.8,-1.84 -0.68,-1.16 -0.68,-2.96 0,-1.6 0.68,-2.68 0.72,-1.12 1.8,-1.8 1.12,-0.68 2.52,-0.96 1.44,-0.32 2.88,-0.32 1.96,0 3.84,0.44 v -0.92 q 0,-0.84 -0.2,-1.6 -0.16,-0.8 -0.68,-1.44 -0.48,-0.64 -1.36,-1 -0.84,-0.4 -2.2,-0.4 -1.72,0 -3,0.24 -1.28,0.24 -1.96,0.48 l -0.4,-2.72 q 0.68,-0.32 2.24,-0.56 1.6,-0.24 3.4,-0.24 z"
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Ubuntu Mono';-inkscape-font-specification:'Ubuntu Mono'"
|
|
||||||
id="path856" />
|
|
||||||
<path
|
|
||||||
d="m 819.74955,68.646208 q -0.56,-0.52 -1.64,-0.96 -1.08,-0.48 -2.24,-0.48 -1.32,0 -2.28,0.52 -0.92,0.52 -1.52,1.44 -0.6,0.88 -0.88,2.16 -0.28,1.24 -0.28,2.68 0,3.24 1.52,5 1.52,1.76 3.96,1.76 1.24,0 2.08,-0.12 0.88,-0.12 1.28,-0.24 z m 0,-12.52 3.32,-0.56 v 27.2 q -1.08,0.32 -2.76,0.64 -1.68,0.32 -3.92,0.32 -2,0 -3.64,-0.68 -1.64,-0.68 -2.8,-1.92 -1.16,-1.28 -1.8,-3.08 -0.64,-1.8 -0.64,-4.04 0,-2.16 0.52,-3.92 0.56,-1.8 1.6,-3.08 1.04,-1.28 2.48,-2 1.48,-0.72 3.36,-0.72 1.48,0 2.6,0.36 1.12,0.36 1.68,0.76 z"
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Ubuntu Mono';-inkscape-font-specification:'Ubuntu Mono'"
|
|
||||||
id="path858" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
id="g921"
|
|
||||||
transform="matrix(0.16834106,0,0,0.16834106,18.949768,14.727969)">
|
|
||||||
<path
|
|
||||||
style="fill:#34d399;fill-opacity:0.698039;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
d="m 51.316614,84.370759 164.499996,-95.000008 164.5,95.000008 -164.5,95.000041 z"
|
|
||||||
id="path2578"
|
|
||||||
sodipodi:nodetypes="ccccc" />
|
|
||||||
<path
|
|
||||||
style="fill:#34d399;fill-opacity:0.698039;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
d="m 401.16781,121 0.0224,189.96118 -164.52241,94.96118 -0.0224,-189.96118 z"
|
|
||||||
id="path2578-3"
|
|
||||||
sodipodi:nodetypes="ccccc" />
|
|
||||||
<path
|
|
||||||
style="fill:#34d399;fill-opacity:0.698039;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
d="M 194.52241,405.92236 30,310.96118 30.022413,121 194.54483,215.96118 Z"
|
|
||||||
id="path2578-6"
|
|
||||||
sodipodi:nodetypes="ccccc" />
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 8.6 KiB |
@ -1,73 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
width="16"
|
|
||||||
height="16"
|
|
||||||
fill="currentColor"
|
|
||||||
class="bi bi-intersect"
|
|
||||||
viewBox="0 0 16 16"
|
|
||||||
version="1.1"
|
|
||||||
id="svg4"
|
|
||||||
sodipodi:docname="intersect_thin.svg"
|
|
||||||
inkscape:version="1.0.2 (1.0.2+r75+1)">
|
|
||||||
<metadata
|
|
||||||
id="metadata10">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
<dc:title />
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<defs
|
|
||||||
id="defs8" />
|
|
||||||
<sodipodi:namedview
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#666666"
|
|
||||||
borderopacity="1"
|
|
||||||
objecttolerance="10"
|
|
||||||
gridtolerance="10"
|
|
||||||
guidetolerance="10"
|
|
||||||
inkscape:pageopacity="0"
|
|
||||||
inkscape:pageshadow="2"
|
|
||||||
inkscape:window-width="2560"
|
|
||||||
inkscape:window-height="1403"
|
|
||||||
id="namedview6"
|
|
||||||
showgrid="false"
|
|
||||||
inkscape:zoom="63.096953"
|
|
||||||
inkscape:cx="12.195007"
|
|
||||||
inkscape:cy="4.8433756"
|
|
||||||
inkscape:window-x="0"
|
|
||||||
inkscape:window-y="0"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
inkscape:current-layer="svg4"
|
|
||||||
inkscape:document-rotation="0" />
|
|
||||||
<path
|
|
||||||
style="fill:#000000;fill-opacity:0.7;stroke:none;stroke-width:1.36009;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
d="m 5.1107682,5.0924028 c -0.021633,0.1942283 -0.059281,0.3835491 -0.059281,0.5836927 0,2.9081944 2.3450392,5.2532345 5.2532328,5.2532345 0.200144,0 0.389465,-0.03765 0.583694,-0.05928 V 5.6760955 c 0,-0.3334621 -0.250231,-0.5836927 -0.583694,-0.5836927 z"
|
|
||||||
id="path958" />
|
|
||||||
<rect
|
|
||||||
style="fill:none;fill-opacity:0.697106;stroke:#000000;stroke-width:0.6;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
id="rect833"
|
|
||||||
width="10"
|
|
||||||
height="10"
|
|
||||||
x="1"
|
|
||||||
y="5"
|
|
||||||
rx="1"
|
|
||||||
ry="1" />
|
|
||||||
<circle
|
|
||||||
style="fill:none;fill-opacity:0.697106;stroke:#000000;stroke-width:0.6;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
id="path835"
|
|
||||||
cx="10"
|
|
||||||
cy="6"
|
|
||||||
r="5" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 2.5 KiB |
@ -1,81 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
width="16"
|
|
||||||
height="16"
|
|
||||||
fill="currentColor"
|
|
||||||
class="bi bi-intersect"
|
|
||||||
viewBox="0 0 16 16"
|
|
||||||
version="1.1"
|
|
||||||
id="svg4"
|
|
||||||
sodipodi:docname="union_thin.svg"
|
|
||||||
inkscape:version="1.0.2 (1.0.2+r75+1)">
|
|
||||||
<metadata
|
|
||||||
id="metadata10">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
<dc:title></dc:title>
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<defs
|
|
||||||
id="defs8" />
|
|
||||||
<sodipodi:namedview
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#666666"
|
|
||||||
borderopacity="1"
|
|
||||||
objecttolerance="10"
|
|
||||||
gridtolerance="10"
|
|
||||||
guidetolerance="10"
|
|
||||||
inkscape:pageopacity="0"
|
|
||||||
inkscape:pageshadow="2"
|
|
||||||
inkscape:window-width="1514"
|
|
||||||
inkscape:window-height="1169"
|
|
||||||
id="namedview6"
|
|
||||||
showgrid="false"
|
|
||||||
inkscape:zoom="30.162102"
|
|
||||||
inkscape:cx="3.4385179"
|
|
||||||
inkscape:cy="3.8467787"
|
|
||||||
inkscape:window-x="280"
|
|
||||||
inkscape:window-y="90"
|
|
||||||
inkscape:window-maximized="0"
|
|
||||||
inkscape:current-layer="svg4"
|
|
||||||
inkscape:document-rotation="0" />
|
|
||||||
<path
|
|
||||||
style="fill:#000000;fill-opacity:0.7;stroke:none;stroke-width:1.24744;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
d="M 5.382896,5.3299006 C 5.3630551,5.5080423 5.3285246,5.681683 5.3285246,5.86525 c 0,2.6673286 2.1508156,4.818144 4.8181444,4.818144 0.183567,0 0.357207,-0.03453 0.535349,-0.05437 V 5.86525 c 0,-0.3058436 -0.229505,-0.5353494 -0.535349,-0.5353494 z"
|
|
||||||
id="path958" />
|
|
||||||
<path
|
|
||||||
style="fill:#000000;fill-opacity:0.7;stroke:none;stroke-width:1.26153;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
d="m 1.8992563,4.8989629 c -0.3092992,0 -0.541398,0.2320989 -0.541398,0.5413981 v 8.662369 c 0,0.309301 0.2320988,0.541399 0.541398,0.541399 h 8.6623697 c 0.309301,0 0.541399,-0.232098 0.541399,-0.541399 v -2.734483 c -0.178843,0.01625 -0.358408,0.0275 -0.541399,0.0275 -3.2826524,0 -5.9553792,-2.6727275 -5.9553792,-5.9553799 0,-0.1829908 0.01124,-0.3625553 0.027494,-0.5413981 z"
|
|
||||||
id="path956" />
|
|
||||||
<path
|
|
||||||
style="fill:#000000;fill-opacity:0.7;stroke:none;stroke-width:1.25561;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
d="m 9.8153527,1.31679 c -2.1143158,0 -3.8868797,1.3513239 -4.5529312,3.2331494 h 4.5529312 c 0.8862613,0 1.6165743,0.7303132 1.6165743,1.6165748 v 4.5529298 c 1.881825,-0.66605 3.233149,-2.438614 3.233149,-4.5529298 0,-2.6848113 -2.164913,-4.8497242 -4.8497233,-4.8497242 z"
|
|
||||||
id="path954" />
|
|
||||||
<rect
|
|
||||||
style="fill:none;fill-opacity:0.697106;stroke:#000000;stroke-width:0.9;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
id="rect833"
|
|
||||||
width="10"
|
|
||||||
height="10"
|
|
||||||
x="1"
|
|
||||||
y="5"
|
|
||||||
rx="1"
|
|
||||||
ry="1" />
|
|
||||||
<circle
|
|
||||||
style="fill:none;fill-opacity:0.697106;stroke:#000000;stroke-width:0.9;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
id="path835"
|
|
||||||
cx="10"
|
|
||||||
cy="6"
|
|
||||||
r="5" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 3.5 KiB |
10
src/Scene.js
10
src/Scene.js
@ -3,18 +3,18 @@ import * as THREE from '../node_modules/three/src/Three';
|
|||||||
import { Sketch } from './Sketch'
|
import { Sketch } from './Sketch'
|
||||||
import { extrude, flipBufferGeometryNormals } from './extrude'
|
import { extrude, flipBufferGeometryNormals } from './extrude'
|
||||||
import { onHover, onPick, clearSelection } from './mouseEvents';
|
import { onHover, onPick, clearSelection } from './mouseEvents';
|
||||||
import { _vec2, _vec3, color, awaitSelection, ptObj, setHover } from './shared'
|
import { _vec2, _vec3, color, awaitSelection, setHover } from './shared'
|
||||||
import { AxesHelper } from './axes'
|
import { AxesHelper } from './axes'
|
||||||
|
|
||||||
|
|
||||||
import { TrackballControls } from '../lib/trackball'
|
import { TrackballControls } from '../extlib/trackball'
|
||||||
import CSG from "../lib/three-csg"
|
import CSG from "../extlib/three-csg"
|
||||||
import { STLExporter } from '../lib/stl'
|
import { STLExporter } from '../extlib/stl'
|
||||||
|
|
||||||
|
|
||||||
let stats
|
let stats
|
||||||
if (process.env.NODE_ENV !== 'production') {
|
if (process.env.NODE_ENV !== 'production') {
|
||||||
const { default: d } = require('../lib/stats.module.js')
|
const { default: d } = require('../extlib/stats.module.js')
|
||||||
stats = new d();
|
stats = new d();
|
||||||
document.getElementById('stats').appendChild(stats.dom);
|
document.getElementById('stats').appendChild(stats.dom);
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
// https://web.dev/file-system-access/
|
||||||
|
|
||||||
const link = document.createElement('a');
|
const link = document.createElement('a');
|
||||||
link.style.display = 'none';
|
link.style.display = 'none';
|
||||||
document.body.appendChild(link);
|
document.body.appendChild(link);
|
||||||
|
@ -194,62 +194,6 @@ function Extrude(props) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function Extrude_master(props) {
|
|
||||||
return (
|
|
||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="1em"
|
|
||||||
height="1em"
|
|
||||||
viewBox="0 0 512 512"
|
|
||||||
{...props}
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
style={{
|
|
||||||
lineHeight: "normal",
|
|
||||||
fontVariantLigatures: "normal",
|
|
||||||
fontVariantPosition: "normal",
|
|
||||||
fontVariantCaps: "normal",
|
|
||||||
fontVariantNumeric: "normal",
|
|
||||||
fontVariantAlternates: "normal",
|
|
||||||
fontVariantEastAsian: "normal",
|
|
||||||
fontFeatureSettings: "normal",
|
|
||||||
fontVariationSettings: "normal",
|
|
||||||
textIndent: 0,
|
|
||||||
textAlign: "start",
|
|
||||||
textDecorationLine: "none",
|
|
||||||
textDecorationStyle: "solid",
|
|
||||||
textDecorationColor: "#000",
|
|
||||||
textTransform: "none",
|
|
||||||
textOrientation: "mixed",
|
|
||||||
whiteSpace: "normal",
|
|
||||||
shapePadding: 0,
|
|
||||||
shapeMargin: 0,
|
|
||||||
inlineSize: 0,
|
|
||||||
isolation: "auto",
|
|
||||||
mixBlendMode: "normal",
|
|
||||||
solidColor: "#000",
|
|
||||||
solidOpacity: 1,
|
|
||||||
}}
|
|
||||||
d="M256 0L144 144h64v240h96V144.802l64-1.604z"
|
|
||||||
color="currentColor"
|
|
||||||
fontWeight={400}
|
|
||||||
fontFamily="sans-serif"
|
|
||||||
overflow="visible"
|
|
||||||
fillRule="evenodd"
|
|
||||||
/>
|
|
||||||
<path
|
|
||||||
d="M256 288L16 384l240 112 240-112z"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
strokeWidth={32}
|
|
||||||
strokeLinecap="round"
|
|
||||||
strokeLinejoin="round"
|
|
||||||
/>
|
|
||||||
<path d="M176 223.932h160v158.285H176z" />
|
|
||||||
</svg>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function Flip(props) {
|
function Flip(props) {
|
||||||
return (
|
return (
|
||||||
<svg
|
<svg
|
||||||
@ -289,40 +233,6 @@ function Horizontal(props) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function Icon_text(props) {
|
|
||||||
return (
|
|
||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="1em"
|
|
||||||
height="1em"
|
|
||||||
viewBox="0 0 452.459 96"
|
|
||||||
{...props}
|
|
||||||
>
|
|
||||||
<defs>
|
|
||||||
<path id="prefix__a" d="M645.91 45.978h248.231v71.301H645.91z" />
|
|
||||||
</defs>
|
|
||||||
<g
|
|
||||||
aria-label="three.cad"
|
|
||||||
fontWeight={400}
|
|
||||||
fontSize={40}
|
|
||||||
fontFamily="Ubuntu Mono"
|
|
||||||
letterSpacing={0}
|
|
||||||
wordSpacing={0}
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M123.53 39.048h14.207v5.002H123.53v15.656q0 2.537.362 4.132.363 1.594 1.16 2.609.87.942 2.175 1.305 1.304.362 3.189.362 2.61 0 4.204-.435 1.594-.435 3.044-1.16l.87 5.074q-1.015.435-3.262 1.16-2.174.725-5.436.725-3.77 0-6.161-.87-2.392-.87-3.77-2.61-1.304-1.739-1.811-4.276-.508-2.61-.508-6.016V44.05h-7.103v-5.002h7.103v-9.422l5.944-1.015zM147.304 72.68V23.465l6.016-1.015v17.106q1.45-.58 3.262-.87 1.812-.362 3.552-.362 3.841 0 6.378 1.16 2.61 1.087 4.132 3.116 1.522 2.03 2.174 4.856.653 2.827.653 6.234v18.99h-5.944V54.995q0-6.234-1.74-8.77-1.74-2.61-6.233-2.61-1.885 0-3.697.435-1.74.362-2.537.725V72.68zM186.155 72.68V40.86q7.393-2.536 14.931-2.536 2.32 0 4.422.217 2.102.145 4.639.725l-1.088 5.291q-2.319-.652-4.131-.797-1.74-.218-3.842-.218-4.421 0-8.988 1.233V72.68zM233.414 38.251q6.813 0 10.51 4.277 3.696 4.204 3.696 12.829v2.102h-24.064q.362 5.219 3.407 7.973 3.116 2.682 8.698 2.682 3.189 0 5.436-.507 2.247-.508 3.406-1.088l.798 5.074q-1.087.58-3.914 1.232-2.827.653-6.379.653-4.349 0-7.683-1.305-3.262-1.377-5.436-3.697-2.175-2.319-3.262-5.508-1.087-3.262-1.087-7.031 0-4.494 1.377-7.828 1.377-3.334 3.624-5.509 2.247-2.174 5.074-3.262 2.827-1.087 5.799-1.087zm8.118 14.352q0-4.277-2.247-6.741-2.247-2.537-5.944-2.537-2.102 0-3.841.797-1.668.797-2.9 2.102-1.232 1.305-1.957 2.972-.725 1.667-.942 3.407zM269.655 38.251q6.813 0 10.51 4.277 3.697 4.204 3.697 12.829v2.102h-24.065q.363 5.219 3.407 7.973 3.117 2.682 8.698 2.682 3.19 0 5.436-.507 2.247-.508 3.407-1.088l.797 5.074q-1.087.58-3.914 1.232-2.827.653-6.378.653-4.35 0-7.684-1.305-3.261-1.377-5.436-3.697-2.174-2.319-3.262-5.508-1.087-3.262-1.087-7.031 0-4.494 1.377-7.828 1.378-3.334 3.624-5.509 2.247-2.174 5.074-3.262 2.827-1.087 5.799-1.087zm8.118 14.352q0-4.277-2.247-6.741-2.247-2.537-5.944-2.537-2.102 0-3.841.797-1.667.797-2.9 2.102-1.232 1.305-1.957 2.972-.724 1.667-.942 3.407zM310.608 68.042q0 2.174-1.45 3.841-1.45 1.667-3.842 1.667-2.464 0-3.914-1.667-1.45-1.667-1.45-3.841 0-2.247 1.45-3.915 1.45-1.667 3.914-1.667 2.392 0 3.842 1.667 1.45 1.668 1.45 3.915zM326.916 55.937q0-4.567 1.45-7.9 1.45-3.335 3.986-5.51 2.537-2.174 5.871-3.189 3.407-1.087 7.249-1.087 2.464 0 4.856.362 2.465.29 5.219 1.16l-1.377 5.146q-2.392-.87-4.422-1.087-1.957-.29-3.986-.29-2.61 0-4.93.725-2.319.652-4.058 2.175-1.667 1.45-2.682 3.841-1.015 2.32-1.015 5.654 0 3.19.942 5.509.943 2.247 2.61 3.769 1.74 1.45 4.131 2.174 2.392.725 5.292.725 2.32 0 4.421-.217 2.175-.29 4.711-1.16l.87 5.001q-2.537.942-5.146 1.305-2.61.435-5.654.435-4.059 0-7.465-1.088-3.335-1.16-5.8-3.334-2.391-2.174-3.768-5.436-1.305-3.334-1.305-7.683zM378.089 68.404q2.247 0 3.986-.145 1.813-.145 2.972-.362V57.894q-1.16-.362-2.827-.58-1.594-.217-3.406-.217-1.667 0-3.262.29-1.595.217-2.827.87-1.232.652-2.03 1.739-.797 1.015-.797 2.61 0 3.261 2.175 4.566 2.247 1.232 6.016 1.232zm-.58-30.153q3.77 0 6.306.942 2.61.943 4.204 2.61 1.595 1.667 2.247 4.059.652 2.392.652 5.219V72.1q-2.102.362-5.58.87-3.407.507-7.032.507-2.754 0-5.363-.508-2.61-.435-4.64-1.594-2.029-1.232-3.261-3.334-1.232-2.102-1.232-5.364 0-2.9 1.232-4.857 1.305-2.03 3.262-3.261 2.03-1.233 4.566-1.74 2.61-.58 5.219-.58 3.552 0 6.958.798V51.37q0-1.522-.362-2.899-.29-1.45-1.232-2.61-.87-1.159-2.465-1.811-1.522-.725-3.986-.725-3.117 0-5.437.435-2.319.435-3.551.87l-.725-4.93q1.232-.58 4.059-1.014 2.9-.435 6.161-.435zM420.926 46.152q-1.015-.943-2.972-1.74-1.957-.87-4.059-.87-2.392 0-4.131.943-1.667.942-2.755 2.609-1.087 1.595-1.594 3.914-.508 2.247-.508 4.856 0 5.872 2.755 9.06 2.754 3.19 7.176 3.19 2.247 0 3.769-.217 1.594-.218 2.32-.435zm0-22.687l6.016-1.015v49.288q-1.957.58-5.001 1.16-3.044.58-7.103.58-3.625 0-6.596-1.232-2.972-1.233-5.074-3.48-2.102-2.32-3.262-5.58-1.16-3.263-1.16-7.322 0-3.914.943-7.103 1.014-3.262 2.899-5.581 1.885-2.32 4.494-3.624 2.682-1.305 6.089-1.305 2.681 0 4.71.652 2.03.653 3.045 1.378z"
|
|
||||||
style={{
|
|
||||||
InkscapeFontSpecification: "'Ubuntu Mono'",
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
</g>
|
|
||||||
<g fill="#34d399" fillOpacity={0.698}>
|
|
||||||
<path d="M27.588 28.931l27.693-15.992L82.973 28.93 55.28 44.923zM86.483 35.097l.004 31.979L58.79 83.06l-.004-31.978zM51.696 83.061L24 67.076l.004-31.979L51.7 51.083z" />
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function Intersect(props) {
|
function Intersect(props) {
|
||||||
return (
|
return (
|
||||||
<svg
|
<svg
|
||||||
@ -364,47 +274,6 @@ function Intersect(props) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function Intersect_thin(props) {
|
|
||||||
return (
|
|
||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="1em"
|
|
||||||
height="1em"
|
|
||||||
fill="currentColor"
|
|
||||||
className="prefix__bi prefix__bi-intersect"
|
|
||||||
viewBox="0 0 16 16"
|
|
||||||
{...props}
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M5.11 5.092c-.02.195-.059.384-.059.584a5.244 5.244 0 005.254 5.253c.2 0 .39-.037.583-.059V5.676a.57.57 0 00-.583-.584z"
|
|
||||||
fill="currentColor"
|
|
||||||
fillOpacity={0.7}
|
|
||||||
/>
|
|
||||||
<rect
|
|
||||||
width={10}
|
|
||||||
height={10}
|
|
||||||
x={1}
|
|
||||||
y={5}
|
|
||||||
rx={1}
|
|
||||||
ry={1}
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
strokeWidth={0.6}
|
|
||||||
strokeLinecap="round"
|
|
||||||
/>
|
|
||||||
<circle
|
|
||||||
cx={10}
|
|
||||||
cy={6}
|
|
||||||
r={5}
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
strokeWidth={0.6}
|
|
||||||
strokeLinecap="round"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function Line(props) {
|
function Line(props) {
|
||||||
return (
|
return (
|
||||||
<svg
|
<svg
|
||||||
@ -586,52 +455,6 @@ function Union(props) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function Union_thin(props) {
|
|
||||||
return (
|
|
||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="1em"
|
|
||||||
height="1em"
|
|
||||||
fill="currentColor"
|
|
||||||
className="prefix__bi prefix__bi-intersect"
|
|
||||||
viewBox="0 0 16 16"
|
|
||||||
{...props}
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M5.383 5.33c-.02.178-.054.352-.054.535a4.81 4.81 0 004.818 4.818c.183 0 .357-.034.535-.054V5.865a.523.523 0 00-.535-.535z"
|
|
||||||
fill="currentColor"
|
|
||||||
fillOpacity={0.7}
|
|
||||||
/>
|
|
||||||
<path
|
|
||||||
d="M1.9 4.899a.529.529 0 00-.542.541v8.663c0 .309.232.541.541.541h8.663c.309 0 .541-.232.541-.541v-2.735a5.962 5.962 0 01-.541.028A5.964 5.964 0 014.606 5.44c0-.183.011-.362.028-.541zM9.815 1.317c-2.114 0-3.887 1.351-4.553 3.233h4.553c.887 0 1.617.73 1.617 1.617v4.552c1.882-.666 3.233-2.438 3.233-4.552a4.842 4.842 0 00-4.85-4.85z"
|
|
||||||
fill="currentColor"
|
|
||||||
fillOpacity={0.7}
|
|
||||||
/>
|
|
||||||
<rect
|
|
||||||
width={10}
|
|
||||||
height={10}
|
|
||||||
x={1}
|
|
||||||
y={5}
|
|
||||||
rx={1}
|
|
||||||
ry={1}
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
strokeWidth={0.9}
|
|
||||||
strokeLinecap="round"
|
|
||||||
/>
|
|
||||||
<circle
|
|
||||||
cx={10}
|
|
||||||
cy={6}
|
|
||||||
r={5}
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
strokeWidth={0.9}
|
|
||||||
strokeLinecap="round"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function Vertical(props) {
|
function Vertical(props) {
|
||||||
return (
|
return (
|
||||||
<svg
|
<svg
|
||||||
@ -652,4 +475,4 @@ function Vertical(props) {
|
|||||||
</svg>
|
</svg>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
export { Arc, Coincident, Dimension, Extrude, Extrude_master, Flip, Horizontal, Icon_text, Intersect, Intersect_thin, Line, Logo, Stl, Subtract, Tangent, Union, Union_thin, Vertical };
|
export { Arc, Coincident, Dimension, Extrude, Flip, Horizontal, Intersect, Line, Logo, Stl, Subtract, Tangent, Union, Vertical };
|
@ -1,78 +0,0 @@
|
|||||||
import React, { useEffect, useRef, useState } from 'react';
|
|
||||||
|
|
||||||
export const ToolTip = () => {
|
|
||||||
/**
|
|
||||||
* Fires when new element is mouseovered, checks if it has a tooltip attribute
|
|
||||||
* If it does, updates and unhides tooltip element after a preset timeout.
|
|
||||||
* The timout is reset if user moves off of the tooltipped element
|
|
||||||
*
|
|
||||||
* Unfortunately, new mouseover fires for svg children, which clears the
|
|
||||||
* tooltip state. We add hacky lines labelled svg workaround to bubbleup / ignore
|
|
||||||
* svg children mouseovers. We use prevTooltip ref check if new svg
|
|
||||||
* child mouseover is novel. If it's not, we ignore the event
|
|
||||||
*/
|
|
||||||
|
|
||||||
const [text, setText] = useState(null)
|
|
||||||
|
|
||||||
const ref = useRef()
|
|
||||||
|
|
||||||
const activated = useRef(false)
|
|
||||||
const timeout = useRef(null)
|
|
||||||
|
|
||||||
const prevTooltip = useRef(null) // svg workaround
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
|
|
||||||
const svgChildren = ['path', 'g', 'rect', 'circle']; // svg workaround
|
|
||||||
|
|
||||||
document.addEventListener('mouseover', (e) => {
|
|
||||||
let node = e.target;
|
|
||||||
|
|
||||||
while (svgChildren.includes(node.nodeName)) { // svg workaround
|
|
||||||
node = node.parentElement // svg workaround
|
|
||||||
} // svg workaround
|
|
||||||
|
|
||||||
const tooltip = node.getAttribute("tooltip")
|
|
||||||
|
|
||||||
if (tooltip == prevTooltip.current) return // svg workaround
|
|
||||||
prevTooltip.current = tooltip // svg workaround
|
|
||||||
|
|
||||||
clearTimeout(timeout.current)
|
|
||||||
if (tooltip) {
|
|
||||||
let { left, top, width, height } = node.getBoundingClientRect()
|
|
||||||
left = left + width / 2 - getTextWidth(tooltip) / 2 - 4 // 4 is padding
|
|
||||||
top = top + height + 6 // 6 is arrow height/width
|
|
||||||
setText(tooltip)
|
|
||||||
if (activated.current) {
|
|
||||||
ref.current.setAttribute('style', `left:${left}px; top:${top}px; visibility:visible`)
|
|
||||||
} else {
|
|
||||||
timeout.current = setTimeout(() => {
|
|
||||||
ref.current.setAttribute('style', `left:${left}px; top:${top}px; visibility:visible`)
|
|
||||||
activated.current = true
|
|
||||||
}, 1000);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
ref.current.setAttribute('style', `visibility:hidden`)
|
|
||||||
activated.current = false
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}, [])
|
|
||||||
|
|
||||||
|
|
||||||
return <div className="absolute drop-down-top p-1 rounded invisible bg-gray-700 text-gray-200" ref={ref}>
|
|
||||||
{text}
|
|
||||||
<div className="arrow"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function getTextWidth(text, font = "16px sans-serif") {
|
|
||||||
// https://stackoverflow.com/a/21015393
|
|
||||||
// re-use canvas object for better performance
|
|
||||||
let canvas = getTextWidth.canvas || (getTextWidth.canvas = document.createElement("canvas"));
|
|
||||||
let context = canvas.getContext("2d");
|
|
||||||
context.font = font;
|
|
||||||
let metrics = context.measureText(text);
|
|
||||||
return metrics.width;
|
|
||||||
}
|
|
@ -1,8 +1,8 @@
|
|||||||
|
|
||||||
|
|
||||||
import React, { useReducer, useState, useRef } from 'react';
|
import React, { useReducer, useState } from 'react';
|
||||||
import { useDispatch, useSelector } from 'react-redux'
|
import { useDispatch, useSelector } from 'react-redux'
|
||||||
import { MdVisibilityOff, MdVisibility, MdDelete, MdRefresh } from 'react-icons/md'
|
import { MdVisibilityOff, MdVisibility, MdDelete } from 'react-icons/md'
|
||||||
|
|
||||||
import { FaCube, FaEdit } from 'react-icons/fa'
|
import { FaCube, FaEdit } from 'react-icons/fa'
|
||||||
|
|
||||||
|
144
wasm/notes
144
wasm/notes
@ -1,144 +0,0 @@
|
|||||||
emcc ./wasm/solver.c ./wasm/libslvs.a -L./wasm/ -lslvs -o ./dist/solver.js -s TOTAL_MEMORY=134217728 -s EXPORTED_FUNCTIONS='[_main, _solver, _free]'
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int solver(int nLines, float *ptr)
|
|
||||||
{
|
|
||||||
// for (int i=0; i<nLines ;i++) {
|
|
||||||
// printf("%f\n",*ptr++);
|
|
||||||
// }
|
|
||||||
float *buf_pt_start = ptr;
|
|
||||||
|
|
||||||
Slvs_hGroup g;
|
|
||||||
double qw, qx, qy, qz;
|
|
||||||
|
|
||||||
g = 1;
|
|
||||||
/* First, we create our workplane. Its origin corresponds to the origin
|
|
||||||
* of our base frame (x y z) = (0 0 0) */
|
|
||||||
sys.param[sys.params++] = Slvs_MakeParam(1, g, 0.0);
|
|
||||||
sys.param[sys.params++] = Slvs_MakeParam(2, g, 0.0);
|
|
||||||
sys.param[sys.params++] = Slvs_MakeParam(3, g, 0.0);
|
|
||||||
sys.entity[sys.entities++] = Slvs_MakePoint3d(101, g, 1, 2, 3);
|
|
||||||
/* and it is parallel to the xy plane, so it has basis vectors (1 0 0)
|
|
||||||
* and (0 1 0). */
|
|
||||||
Slvs_MakeQuaternion(1, 0, 0,
|
|
||||||
0, 1, 0, &qw, &qx, &qy, &qz);
|
|
||||||
sys.param[sys.params++] = Slvs_MakeParam(4, g, qw);
|
|
||||||
sys.param[sys.params++] = Slvs_MakeParam(5, g, qx);
|
|
||||||
sys.param[sys.params++] = Slvs_MakeParam(6, g, qy);
|
|
||||||
sys.param[sys.params++] = Slvs_MakeParam(7, g, qz);
|
|
||||||
sys.entity[sys.entities++] = Slvs_MakeNormal3d(102, g, 4, 5, 6, 7);
|
|
||||||
|
|
||||||
sys.entity[sys.entities++] = Slvs_MakeWorkplane(200, g, 101, 102);
|
|
||||||
|
|
||||||
/* Now create a second group. We'll solve group 2, while leaving group 1
|
|
||||||
* constant; so the workplane that we've created will be locked down,
|
|
||||||
* and the solver can't move it. */
|
|
||||||
g = 2;
|
|
||||||
/* These points are represented by their coordinates (u v) within the
|
|
||||||
* workplane, so they need only two parameters each. */
|
|
||||||
|
|
||||||
Slvs_hParam h = 8;
|
|
||||||
Slvs_hParam pt_id = 301;
|
|
||||||
Slvs_hParam line_id = 400;
|
|
||||||
Slvs_hParam con_id = 0;
|
|
||||||
int ptStart = sys.params;
|
|
||||||
for (int i = 0; i < nLines; i++)
|
|
||||||
{
|
|
||||||
sys.param[sys.params++] = Slvs_MakeParam(h++, g, (float)*ptr++);
|
|
||||||
sys.param[sys.params++] = Slvs_MakeParam(h++, g, (float)*ptr++);
|
|
||||||
sys.entity[sys.entities++] = Slvs_MakePoint2d(pt_id++, g, 200, h - 2, h - 1);
|
|
||||||
|
|
||||||
if (i > 0)
|
|
||||||
{
|
|
||||||
sys.constraint[sys.constraints++] = Slvs_MakeConstraint(
|
|
||||||
con_id++, g,
|
|
||||||
SLVS_C_POINTS_COINCIDENT,
|
|
||||||
200,
|
|
||||||
0.0,
|
|
||||||
pt_id - 1, pt_id - 2, 0, 0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
sys.constraint[sys.constraints++] = Slvs_MakeConstraint(
|
|
||||||
con_id++, g,
|
|
||||||
SLVS_C_POINTS_COINCIDENT,
|
|
||||||
200,
|
|
||||||
0.0,
|
|
||||||
pt_id - 1, 101, 0, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("h:%i\n", h);
|
|
||||||
|
|
||||||
sys.param[sys.params++] = Slvs_MakeParam(h++, g, (float)*ptr++);
|
|
||||||
sys.param[sys.params++] = Slvs_MakeParam(h++, g, (float)*ptr++);
|
|
||||||
|
|
||||||
sys.entity[sys.entities++] = Slvs_MakePoint2d(pt_id++, g, 200, h - 2, h - 1);
|
|
||||||
|
|
||||||
sys.entity[sys.entities++] = Slvs_MakeLineSegment(line_id++, g,
|
|
||||||
200, pt_id - 1, pt_id - 2);
|
|
||||||
|
|
||||||
sys.constraint[sys.constraints++] = Slvs_MakeConstraint(
|
|
||||||
con_id++, g,
|
|
||||||
SLVS_C_PT_PT_DISTANCE,
|
|
||||||
200,
|
|
||||||
30.0,
|
|
||||||
pt_id - 1, pt_id - 2, 0, 0);
|
|
||||||
sys.constraint[sys.constraints++] = Slvs_MakeConstraint(
|
|
||||||
con_id++, g,
|
|
||||||
SLVS_C_VERTICAL,
|
|
||||||
200,
|
|
||||||
0.0,
|
|
||||||
0, 0, line_id-1, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* If the solver fails, then ask it to report which constraints caused
|
|
||||||
* the problem. */
|
|
||||||
sys.calculateFaileds = 1;
|
|
||||||
|
|
||||||
sys.dragged[0] = 10;
|
|
||||||
sys.dragged[1] = 11;
|
|
||||||
sys.dragged[2] = 14;
|
|
||||||
sys.dragged[3] = 15;
|
|
||||||
|
|
||||||
/* And solve. */
|
|
||||||
Slvs_Solve(&sys, g);
|
|
||||||
|
|
||||||
// printf("%i,wtf\n", sys.result);
|
|
||||||
if (sys.result == SLVS_RESULT_OKAY)
|
|
||||||
{
|
|
||||||
printf("solved okay\n");
|
|
||||||
|
|
||||||
for (int i = 0; i < nLines * 4; i++)
|
|
||||||
{
|
|
||||||
// *buf_pt_start++ = (float)sys.param[ptStart++].val;
|
|
||||||
printf("%f\n", sys.param[ptStart++].val);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
printf("solve failed: problematic constraints are:");
|
|
||||||
for (i = 0; i < sys.faileds; i++)
|
|
||||||
{
|
|
||||||
printf(" %d", sys.failed[i]);
|
|
||||||
}
|
|
||||||
printf("\n");
|
|
||||||
if (sys.result == SLVS_RESULT_INCONSISTENT)
|
|
||||||
{
|
|
||||||
printf("system inconsistent\n");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
printf("system nonconvergent\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
sys.params = sys.constraints = sys.entities = 0;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
2
wasm/readme.md
Normal file
2
wasm/readme.md
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
this wasm backend is based on the SolveSpace geometric constraint solver:
|
||||||
|
https://github.com/solvespace/solvespace
|
@ -5,18 +5,16 @@ const path = require('path');
|
|||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
|
|
||||||
module.exports = merge(common, {
|
module.exports = merge(common, {
|
||||||
|
|
||||||
mode: 'development',
|
mode: 'development',
|
||||||
|
|
||||||
devtool: 'inline-source-map',
|
devtool: 'inline-source-map',
|
||||||
devServer: {
|
devServer: {
|
||||||
contentBase: path.join(__dirname, 'dist'),
|
contentBase: path.join(__dirname, 'dist'),
|
||||||
compress: true,
|
compress: true,
|
||||||
port: 9000,
|
port: 9000,
|
||||||
https: {
|
https: {
|
||||||
key: fs.readFileSync('./localhost-key.pem'),
|
key: fs.readFileSync('./https/localhost-key.pem'),
|
||||||
cert: fs.readFileSync('./localhost.pem'),
|
cert: fs.readFileSync('./https/localhost.pem'),
|
||||||
ca: fs.readFileSync('/home/howard/.local/share/mkcert/rootCA.pem'),
|
ca: fs.readFileSync('./https/rootCA.pem'),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user