ejsolid基本完成,兼談如何用AI開發程式

ejsolid是一個基於svg的三維圖形展示小工具。

{"config":{"sides":[3,4,5,6,8,10],"defaultColors":{"3":"#00b4d8","4":"#ff94d2","5":"#dcf094","6":"#0077b6","8":"#023e8a","10":"#03045e"},"labels":{"3":"Triangle","4":"Square","5":"Pentagon","6":"Hexagon","8":"Octagon","10":"Decagon"},"canvasSize":480,"contentSize":360,"opacity":1,"strokeWidth":1.5,"strokeColor":"#03045e","perspective":false,"topologicalSort":false,"animate":false,"elementDiff":true,"animTime":7,"animAngle":36,"frameInt":0.25,"coplanarRange":100},"state":{"rotMatrix":[-0.11466371077660731,-0.9155235356286526,0.38557604845337634,0.8714082051595882,-0.27905509755284064,-0.4034550687626742,0.47696957283610963,0.2897324770193252,0.829792213960077],"isDragging":false,"lastX":901,"lastY":307,"objData":"# Alias OBJ Model File\r\n# Exported from SketchUp, (c) 2000-2012 Trimble Navigation Limited\r\n# File units = millimeters\r\n\r\nmtllib jljljx.mtl\r\n\r\ng Mesh1 Component_136_1 Component_139_1 Model\r\n\r\nusemtl Color_H07\r\nv 2.4326e+06 -4.34117e+06 -2.39439e+06\r\nvt 1167.45 -6.20804e-11\r\nvn -0.672499 -0.309017 0.672499\r\nv 2.42868e+06 -4.32412e+06 -2.39047e+06\r\nvt 461.834 -2.96325e-12\r\nv 2.42446e+06 -4.32412e+06 -2.39469e+06\r\nvt 461.834 -1068.65\r\nv 2.42838e+06 -4.34117e+06 -2.39861e+06\r\nvt 1167.45 -1068.65\r\nf 1/1/1 2/2/1 3/3/1 4/4/1 \r\n\r\nv 2.44919e+06 -4.32412e+06 -2.41098e+06\r\nvt 218.049 1085.84\r\nvn 0.707107 1.34587e-14 0.707107\r\nv 2.43894e+06 -4.31359e+06 -2.40072e+06\r\nvt -5.66752e-26 414.753\r\nvt 570.859 2.91038e-11\r\nvt 1141.72 414.753\r\nv 2.44527e+06 -4.34117e+06 -2.40706e+06\r\nvt 923.669 1085.84\r\nf 5/5/2 6/6/2 2/7/2 1/8/2 7/9/2 \r\n\r\nvt -394.454 -5.88855e-11\r\nvn 0.415627 0.809017 -0.415627\r\nvt -1100.07 -5.88855e-11\r\nv 2.44497e+06 -4.32412e+06 -2.4152e+06\r\nvt -1100.07 -1068.65\r\nv 2.43471e+06 -4.31359e+06 -2.40495e+06\r\nvt -394.454 -1068.65\r\nf 6/10/3 5/11/3 8/12/3 9/13/3 \r\n\r\nvt -218.049 -5.77789e-11\r\nvn 0.672499 -0.309017 -0.672499\r\nvt -923.669 -2.29969e-12\r\nv 2.44105e+06 -4.34117e+06 -2.41128e+06\r\nvt -923.669 -1068.65\r\nvt -218.049 -1068.65\r\nf 5/14/4 7/15/4 10/16/4 8/17/4 \r\n\r\nvt 747.264 -3.3757e-12\r\nvn -2.54307e-13 -1 2.55976e-13\r\nvt 41.6436 -6.24929e-11\r\nvt 41.6436 -1068.65\r\nvt 747.264 -1068.65\r\nf 7/18/5 1/19/5 4/20/5 10/21/5 \r\n\r\nvt -4.23128e-11 414.753\r\nvn -0.707107 3.49756e-14 -0.707107\r\nvt -218.049 1085.84\r\nvt -923.669 1085.84\r\nvt -1141.72 414.753\r\nvt -570.859 -6.43246e-12\r\nf 9/22/6 8/23/6 10/24/6 4/25/6 3/26/6 \r\n\r\nvt 461.834 -3.07985e-12\r\nvn -0.415627 0.809017 0.415627\r\nvt -243.786 -5.8559e-11\r\nvt -243.786 -1068.65\r\nf 2/27/7 6/28/7 9/29/7 3/3/7 \r\n\r\ng Mesh2 Component_136_2 Component_139_1 Model\r\n\r\nv 2.40606e+06 -4.26896e+06 -2.34674e+06\r\nvn -0.672499 0.309017 0.672499\r\nv 2.40998e+06 -4.25192e+06 -2.35065e+06\r\nv 2.40575e+06 -4.25192e+06 -2.35487e+06\r\nv 2.40184e+06 -4.26896e+06 -2.35096e+06\r\nf 11/1/8 12/2/8 13/3/8 14/4/8 \r\n\r\nv 2.42657e+06 -4.26896e+06 -2.36724e+06\r\nvn 0.707107 9.38621e-17 0.707107\r\nv 2.42265e+06 -4.25192e+06 -2.36333e+06\r\nv 2.41631e+06 -4.2795e+06 -2.35699e+06\r\nf 15/5/9 16/6/9 12/7/9 11/8/9 17/9/9 \r\n\r\nvn 0.672499 0.309017 -0.672499\r\nv 2.42234e+06 -4.26896e+06 -2.37146e+06\r\nv 2.41843e+06 -4.25192e+06 -2.36755e+06\r\nf 16/10/10 15/11/10 18/12/10 19/13/10 \r\n\r\nvn 0.415627 -0.809017 -0.415627\r\nv 2.41209e+06 -4.2795e+06 -2.36121e+06\r\nf 15/14/11 17/15/11 20/16/11 18/17/11 \r\n\r\nvn -0.415627 -0.809017 0.415627\r\nf 17/18/12 11/19/12 14/20/12 20/21/12 \r\n\r\nvn -0.707107 1.14226e-14 -0.707107\r\nf 19/22/13 18/23/13 20/24/13 14/25/13 13/26/13 \r\n\r\nvn -8.38755e-14 1 8.34098e-14\r\nf 12/27/14 16/28/14 19/29/14 13/3/14 \r\n\r\ng Mesh3 Component_136_3 Component_139_1 Model\r\n\r\nv 2.4516e+06 -4.34117e+06 -2.37539e+06\r\nv 2.44135e+06 -4.3517e+06 -2.36513e+06\r\nv 2.43712e+06 -4.3517e+06 -2.36936e+06\r\nv 2.44738e+06 -4.34117e+06 -2.37961e+06\r\nf 21/1/11 22/2/11 23/3/11 24/4/11 \r\n\r\nv 2.43501e+06 -4.32412e+06 -2.3588e+06\r\nvn 0.707107 4.68238e-15 0.707107\r\nv 2.43109e+06 -4.34117e+06 -2.35488e+06\r\nv 2.44768e+06 -4.32412e+06 -2.37147e+06\r\nf 25/5/15 26/6/15 22/7/15 21/8/15 27/9/15 \r\n\r\nv 2.43079e+06 -4.32412e+06 -2.36302e+06\r\nv 2.42687e+06 -4.34117e+06 -2.3591e+06\r\nf 26/10/8 25/11/8 28/12/8 29/13/8 \r\n\r\nvn -1.65546e-14 1 1.55436e-14\r\nv 2.44346e+06 -4.32412e+06 -2.37569e+06\r\nf 25/14/16 27/15/16 30/16/16 28/17/16 \r\n\r\nf 27/18/10 21/19/10 24/20/10 30/21/10 \r\n\r\nvn -0.707107 2.51179e-14 -0.707107\r\nf 29/22/17 28/23/17 30/24/17 24/25/17 23/26/17 \r\n\r\nf 22/27/12 26/28/12 29/29/12 23/3/12 \r\n\r\ng Mesh4 Component_136_4 Component_139_1 Model\r\n\r\nv 2.46155e+06 -4.31359e+06 -2.41912e+06\r\nv 2.4513e+06 -4.32412e+06 -2.40887e+06\r\nv 2.44708e+06 -4.32412e+06 -2.41309e+06\r\nv 2.45733e+06 -4.31359e+06 -2.42334e+06\r\nf 31/1/11 32/2/11 33/3/11 34/4/11 \r\n\r\nv 2.44496e+06 -4.29654e+06 -2.40253e+06\r\nvn 0.707107 1.3009e-14 0.707107\r\nv 2.44105e+06 -4.31359e+06 -2.39861e+06\r\nv 2.45764e+06 -4.29654e+06 -2.4152e+06\r\nf 35/5/18 36/6/18 32/7/18 31/8/18 37/9/18 \r\n\r\nv 2.44074e+06 -4.29654e+06 -2.40675e+06\r\nv 2.43682e+06 -4.31359e+06 -2.40284e+06\r\nf 36/10/8 35/11/8 38/12/8 39/13/8 \r\n\r\nvn 1.89586e-13 1 -1.91208e-13\r\nv 2.45341e+06 -4.29654e+06 -2.41943e+06\r\nf 35/14/19 37/15/19 40/16/19 38/17/19 \r\n\r\nf 37/18/10 31/19/10 34/20/10 40/21/10 \r\n\r\nvn -0.707107 1.67912e-14 -0.707107\r\nf 39/22/20 38/23/20 40/24/20 34/25/20 33/26/20 \r\n\r\nf 32/27/12 36/28/12 39/29/12 33/3/12 \r\n\r\ng Mesh5 Component_136_5 Component_139_1 Model\r\n\r\nv 2.41028e+06 -4.32412e+06 -2.34251e+06\r\nv 2.40003e+06 -4.31359e+06 -2.33226e+06\r\nv 2.39581e+06 -4.31359e+06 -2.33648e+06\r\nv 2.40606e+06 -4.32412e+06 -2.34674e+06\r\nf 41/1/12 42/2/12 43/3/12 44/4/12 \r\n\r\nv 2.41662e+06 -4.29654e+06 -2.34885e+06\r\nvn 0.707107 4.04749e-15 0.707107\r\nv 2.40395e+06 -4.29654e+06 -2.33618e+06\r\nv 2.42054e+06 -4.31359e+06 -2.35277e+06\r\nf 45/5/21 46/6/21 42/7/21 41/8/21 47/9/21 \r\n\r\nvn 6.19462e-14 1 -6.05455e-14\r\nv 2.4124e+06 -4.29654e+06 -2.35307e+06\r\nv 2.39972e+06 -4.29654e+06 -2.3404e+06\r\nf 46/10/22 45/11/22 48/12/22 49/13/22 \r\n\r\nv 2.41631e+06 -4.31359e+06 -2.35699e+06\r\nf 45/14/10 47/15/10 50/16/10 48/17/10 \r\n\r\nf 47/18/11 41/19/11 44/20/11 50/21/11 \r\n\r\nvn -0.707107 6.28044e-14 -0.707107\r\nf 49/22/23 48/23/23 50/24/23 44/25/23 43/26/23 \r\n\r\nf 42/27/8 46/28/8 49/29/8 43/3/8 \r\n\r\ng Mesh6 Component_136_6 Component_139_1 Model\r\n\r\nv 2.45794e+06 -4.31359e+06 -2.38172e+06\r\nv 2.46185e+06 -4.29654e+06 -2.38564e+06\r\nv 2.45763e+06 -4.29654e+06 -2.38986e+06\r\nv 2.45371e+06 -4.31359e+06 -2.38595e+06\r\nf 51/1/8 52/2/8 53/3/8 54/4/8 \r\n\r\nv 2.47844e+06 -4.31359e+06 -2.40223e+06\r\nvn 0.707107 9.13913e-16 0.707107\r\nv 2.47453e+06 -4.29654e+06 -2.39831e+06\r\nv 2.46819e+06 -4.32412e+06 -2.39198e+06\r\nf 55/5/24 56/6/24 52/7/24 51/8/24 57/9/24 \r\n\r\nv 2.47422e+06 -4.31359e+06 -2.40645e+06\r\nv 2.4703e+06 -4.29654e+06 -2.40253e+06\r\nf 56/10/10 55/11/10 58/12/10 59/13/10 \r\n\r\nv 2.46397e+06 -4.32412e+06 -2.3962e+06\r\nf 55/14/11 57/15/11 60/16/11 58/17/11 \r\n\r\nf 57/18/12 51/19/12 54/20/12 60/21/12 \r\n\r\nvn -0.707107 1.06026e-14 -0.707107\r\nf 59/22/25 58/23/25 60/24/25 54/25/25 53/26/25 \r\n\r\nvn -2.8207e-14 1 2.70419e-14\r\nf 52/27/26 56/28/26 59/29/26 53/3/26 \r\n\r\ng Mesh7 Component_136_7 Component_139_1 Model\r\n\r\nv 2.42898e+06 -4.34117e+06 -2.35699e+06\r\nvn -5.11538e-13 -1 5.12455e-13\r\nv 2.41631e+06 -4.34117e+06 -2.34432e+06\r\nv 2.41209e+06 -4.34117e+06 -2.34854e+06\r\nv 2.42476e+06 -4.34117e+06 -2.36121e+06\r\nf 61/1/27 62/2/27 63/3/27 64/4/27 \r\n\r\nv 2.42265e+06 -4.31359e+06 -2.35066e+06\r\nvn 0.707107 4.67552e-15 0.707107\r\nv 2.41239e+06 -4.32412e+06 -2.3404e+06\r\nv 2.4329e+06 -4.32412e+06 -2.36091e+06\r\nf 65/5/28 66/6/28 62/7/28 61/8/28 67/9/28 \r\n\r\nv 2.41842e+06 -4.31359e+06 -2.35488e+06\r\nv 2.40817e+06 -4.32412e+06 -2.34462e+06\r\nf 66/10/7 65/11/7 68/12/7 69/13/7 \r\n\r\nv 2.42868e+06 -4.32412e+06 -2.36513e+06\r\nf 65/14/3 67/15/3 70/16/3 68/17/3 \r\n\r\nf 67/18/4 61/19/4 64/20/4 70/21/4 \r\n\r\nvn -0.707107 5.50588e-14 -0.707107\r\nf 69/22/29 68/23/29 70/24/29 64/25/29 63/26/29 \r\n\r\nf 62/27/1 66/28/1 69/29/1 63/3/1 \r\n\r\ng Mesh8 Component_136_8 Component_139_1 Model\r\n\r\nv 2.50529e+06 -4.31359e+06 -2.44174e+06\r\nv 2.51554e+06 -4.32412e+06 -2.45199e+06\r\nv 2.51132e+06 -4.32412e+06 -2.45622e+06\r\nv 2.50107e+06 -4.31359e+06 -2.44596e+06\r\nf 71/1/3 72/2/3 73/3/3 74/4/3 \r\n\r\nv 2.49895e+06 -4.34117e+06 -2.43541e+06\r\nvn 0.707107 -4.98794e-15 0.707107\r\nv 2.51162e+06 -4.34117e+06 -2.44808e+06\r\nv 2.49504e+06 -4.32412e+06 -2.43149e+06\r\nf 75/5/30 76/6/30 72/7/30 71/8/30 77/9/30 \r\n\r\nvn -5.97762e-14 -1 6.14566e-14\r\nv 2.49473e+06 -4.34117e+06 -2.43963e+06\r\nv 2.5074e+06 -4.34117e+06 -2.4523e+06\r\nf 76/10/31 75/11/31 78/12/31 79/13/31 \r\n\r\nv 2.49081e+06 -4.32412e+06 -2.43571e+06\r\nf 75/14/1 77/15/1 80/16/1 78/17/1 \r\n\r\nf 77/18/7 71/19/7 74/20/7 80/21/7 \r\n\r\nvn -0.707107 -6.1864e-14 -0.707107\r\nf 79/22/32 78/23/32 80/24/32 74/25/32 73/26/32 \r\n\r\nf 72/27/4 76/28/4 79/29/4 73/3/4 \r\n\r\ng Mesh9 Component_136_9 Component_139_1 Model\r\n\r\nv 2.48236e+06 -4.3858e+06 -2.43149e+06\r\nv 2.47211e+06 -4.39633e+06 -2.42123e+06\r\nv 2.46789e+06 -4.39633e+06 -2.42546e+06\r\nv 2.47814e+06 -4.3858e+06 -2.43571e+06\r\nf 81/1/11 82/2/11 83/3/11 84/4/11 \r\n\r\nv 2.46578e+06 -4.36875e+06 -2.4149e+06\r\nvn 0.707107 1.9699e-15 0.707107\r\nv 2.46186e+06 -4.3858e+06 -2.41098e+06\r\nv 2.47845e+06 -4.36875e+06 -2.42757e+06\r\nf 85/5/33 86/6/33 82/7/33 81/8/33 87/9/33 \r\n\r\nv 2.46155e+06 -4.36875e+06 -2.41912e+06\r\nv 2.45764e+06 -4.3858e+06 -2.4152e+06\r\nf 86/10/8 85/11/8 88/12/8 89/13/8 \r\n\r\nvn 3.9012e-14 1 -3.98288e-14\r\nv 2.47423e+06 -4.36875e+06 -2.43179e+06\r\nf 85/14/34 87/15/34 90/16/34 88/17/34 \r\n\r\nf 87/18/10 81/19/10 84/20/10 90/21/10 \r\n\r\nvn -0.707107 2.78304e-14 -0.707107\r\nf 89/22/35 88/23/35 90/24/35 84/25/35 83/26/35 \r\n\r\nf 82/27/12 86/28/12 89/29/12 83/3/12 \r\n\r\ng Mesh10 Component_136_10 Component_139_1 Model\r\n\r\nv 2.4703e+06 -4.32412e+06 -2.38986e+06\r\nv 2.46638e+06 -4.34117e+06 -2.38595e+06\r\nv 2.46216e+06 -4.34117e+06 -2.39017e+06\r\nv 2.46608e+06 -4.32412e+06 -2.39409e+06\r\nf 91/1/4 92/2/4 93/3/4 94/4/4 \r\n\r\nv 2.4498e+06 -4.32412e+06 -2.36936e+06\r\nvn 0.707107 -1.04007e-15 0.707107\r\nv 2.45371e+06 -4.34117e+06 -2.37327e+06\r\nv 2.46005e+06 -4.31359e+06 -2.37961e+06\r\nf 95/5/36 96/6/36 92/7/36 91/8/36 97/9/36 \r\n\r\nv 2.44557e+06 -4.32412e+06 -2.37358e+06\r\nv 2.44949e+06 -4.34117e+06 -2.3775e+06\r\nf 96/10/1 95/11/1 98/12/1 99/13/1 \r\n\r\nv 2.45583e+06 -4.31359e+06 -2.38383e+06\r\nf 95/14/7 97/15/7 100/16/7 98/17/7 \r\n\r\nf 97/18/3 91/19/3 94/20/3 100/21/3 \r\n\r\nvn -0.707107 -1.04764e-14 -0.707107\r\nf 99/22/37 98/23/37 100/24/37 94/25/37 93/26/37 \r\n\r\nvn 2.6972e-14 -1 -2.72279e-14\r\nf 92/27/38 96/28/38 99/29/38 93/3/38 \r\n\r\ng Mesh11 Component_136_11 Component_139_1 Model\r\n\r\nv 2.44105e+06 -4.36875e+06 -2.39861e+06\r\nv 2.43079e+06 -4.35821e+06 -2.38836e+06\r\nv 2.42657e+06 -4.35821e+06 -2.39258e+06\r\nv 2.43682e+06 -4.36875e+06 -2.40284e+06\r\nf 101/1/12 102/2/12 103/3/12 104/4/12 \r\n\r\nv 2.44738e+06 -4.34117e+06 -2.40495e+06\r\nvn 0.707107 1.13649e-14 0.707107\r\nv 2.43471e+06 -4.34117e+06 -2.39228e+06\r\nv 2.4513e+06 -4.35821e+06 -2.40887e+06\r\nf 105/5/39 106/6/39 102/7/39 101/8/39 107/9/39 \r\n\r\nvn 2.79795e-13 1 -2.79373e-13\r\nv 2.44316e+06 -4.34117e+06 -2.40917e+06\r\nv 2.43049e+06 -4.34117e+06 -2.3965e+06\r\nf 106/10/40 105/11/40 108/12/40 109/13/40 \r\n\r\nv 2.44708e+06 -4.35821e+06 -2.41309e+06\r\nf 105/14/10 107/15/10 110/16/10 108/17/10 \r\n\r\nf 107/18/11 101/19/11 104/20/11 110/21/11 \r\n\r\nvn -0.707107 5.5487e-14 -0.707107\r\nf 109/22/41 108/23/41 110/24/41 104/25/41 103/26/41 \r\n\r\nf 102/27/8 106/28/8 109/29/8 103/3/8 \r\n\r\ng Mesh12 Component_136_12 Component_139_1 Model\r\n\r\nv 2.42054e+06 -4.25192e+06 -2.36544e+06\r\nv 2.43079e+06 -4.24138e+06 -2.37569e+06\r\nv 2.42657e+06 -4.24138e+06 -2.37991e+06\r\nv 2.41632e+06 -4.25192e+06 -2.36966e+06\r\nf 111/1/7 112/2/7 113/3/7 114/4/7 \r\n\r\nv 2.43713e+06 -4.26896e+06 -2.38203e+06\r\nvn 0.707107 -1.84374e-15 0.707107\r\nv 2.44104e+06 -4.25192e+06 -2.38594e+06\r\nv 2.42445e+06 -4.26896e+06 -2.36935e+06\r\nf 115/5/42 116/6/42 112/7/42 111/8/42 117/9/42 \r\n\r\nv 2.43291e+06 -4.26896e+06 -2.38625e+06\r\nv 2.43682e+06 -4.25192e+06 -2.39017e+06\r\nf 116/10/4 115/11/4 118/12/4 119/13/4 \r\n\r\nvn -3.92737e-14 -1 4.00667e-14\r\nv 2.42023e+06 -4.26896e+06 -2.37358e+06\r\nf 115/14/43 117/15/43 120/16/43 118/17/43 \r\n\r\nf 117/18/1 111/19/1 114/20/1 120/21/1 \r\n\r\nvn -0.707107 -2.79565e-14 -0.707107\r\nf 119/22/44 118/23/44 120/24/44 114/25/44 113/26/44 \r\n\r\nf 112/27/3 116/28/3 119/29/3 113/3/3 \r\n\r\ng Mesh13 Component_136_13 Component_139_1 Model\r\n\r\nv 2.49081e+06 -4.29654e+06 -2.42304e+06\r\nvn -6.76585e-14 1 6.72467e-14\r\nv 2.50348e+06 -4.29654e+06 -2.43571e+06\r\nv 2.49926e+06 -4.29654e+06 -2.43994e+06\r\nv 2.48659e+06 -4.29654e+06 -2.42726e+06\r\nf 121/1/45 122/2/45 123/3/45 124/4/45 \r\n\r\nv 2.49715e+06 -4.32412e+06 -2.42938e+06\r\nvn 0.707107 -6.69411e-15 0.707107\r\nv 2.5074e+06 -4.31359e+06 -2.43963e+06\r\nv 2.48689e+06 -4.31359e+06 -2.41912e+06\r\nf 125/5/46 126/6/46 122/7/46 121/8/46 127/9/46 \r\n\r\nv 2.49292e+06 -4.32412e+06 -2.4336e+06\r\nv 2.50318e+06 -4.31359e+06 -2.44385e+06\r\nf 126/10/11 125/11/11 128/12/11 129/13/11 \r\n\r\nv 2.48267e+06 -4.31359e+06 -2.42335e+06\r\nf 125/14/12 127/15/12 130/16/12 128/17/12 \r\n\r\nf 127/18/8 121/19/8 124/20/8 130/21/8 \r\n\r\nvn -0.707107 -5.30402e-14 -0.707107\r\nf 129/22/47 128/23/47 130/24/47 124/25/47 123/26/47 \r\n\r\nf 122/27/10 126/28/10 129/29/10 123/3/10 \r\n\r\ng Mesh14 Component_136_14 Component_139_1 Model\r\n\r\nv 2.47242e+06 -4.29654e+06 -2.40042e+06\r\nv 2.48267e+06 -4.28601e+06 -2.41068e+06\r\nv 2.47845e+06 -4.28601e+06 -2.4149e+06\r\nv 2.46819e+06 -4.29654e+06 -2.40465e+06\r\nf 131/1/7 132/2/7 133/3/7 134/4/7 \r\n\r\nv 2.489e+06 -4.31359e+06 -2.41701e+06\r\nv 2.49292e+06 -4.29654e+06 -2.42093e+06\r\nv 2.47633e+06 -4.31359e+06 -2.40434e+06\r\nf 135/5/42 136/6/42 132/7/42 131/8/42 137/9/42 \r\n\r\nv 2.48478e+06 -4.31359e+06 -2.42124e+06\r\nv 2.4887e+06 -4.29654e+06 -2.42515e+06\r\nf 136/10/4 135/11/4 138/12/4 139/13/4 \r\n\r\nv 2.47211e+06 -4.31359e+06 -2.40856e+06\r\nf 135/14/43 137/15/43 140/16/43 138/17/43 \r\n\r\nf 137/18/1 131/19/1 134/20/1 140/21/1 \r\n\r\nf 139/22/44 138/23/44 140/24/44 134/25/44 133/26/44 \r\n\r\nf 132/27/3 136/28/3 139/29/3 133/3/3 \r\n\r\ng Mesh15 Component_136_15 Component_139_1 Model\r\n\r\nv 2.50107e+06 -4.36875e+06 -2.44596e+06\r\nv 2.49715e+06 -4.3858e+06 -2.44205e+06\r\nv 2.49293e+06 -4.3858e+06 -2.44627e+06\r\nv 2.49684e+06 -4.36875e+06 -2.45019e+06\r\nf 141/1/4 142/2/4 143/3/4 144/4/4 \r\n\r\nv 2.48056e+06 -4.36875e+06 -2.42546e+06\r\nvn 0.707107 -6.6159e-16 0.707107\r\nv 2.48448e+06 -4.3858e+06 -2.42937e+06\r\nv 2.49081e+06 -4.35821e+06 -2.43571e+06\r\nf 145/5/48 146/6/48 142/7/48 141/8/48 147/9/48 \r\n\r\nv 2.47634e+06 -4.36875e+06 -2.42968e+06\r\nv 2.48025e+06 -4.3858e+06 -2.4336e+06\r\nf 146/10/1 145/11/1 148/12/1 149/13/1 \r\n\r\nv 2.48659e+06 -4.35821e+06 -2.43993e+06\r\nf 145/14/7 147/15/7 150/16/7 148/17/7 \r\n\r\nf 147/18/3 141/19/3 144/20/3 150/21/3 \r\n\r\nvn -0.707107 -1.08549e-14 -0.707107\r\nf 149/22/49 148/23/49 150/24/49 144/25/49 143/26/49 \r\n\r\nvn 8.43889e-14 -1 -8.42251e-14\r\nf 142/27/50 146/28/50 149/29/50 143/3/50 \r\n\r\ng Mesh16 Component_136_16 Component_139_1 Model\r\n\r\nv 2.50951e+06 -4.34117e+06 -2.45019e+06\r\nv 2.51343e+06 -4.35821e+06 -2.45411e+06\r\nv 2.50921e+06 -4.35821e+06 -2.45833e+06\r\nv 2.50529e+06 -4.34117e+06 -2.45441e+06\r\nf 151/1/10 152/2/10 153/3/10 154/4/10 \r\n\r\nv 2.49292e+06 -4.35821e+06 -2.4336e+06\r\nvn 0.707107 -5.13208e-15 0.707107\r\nv 2.50318e+06 -4.36875e+06 -2.44385e+06\r\nv 2.49684e+06 -4.34117e+06 -2.43752e+06\r\nf 155/5/51 156/6/51 152/7/51 151/8/51 157/9/51 \r\n\r\nv 2.4887e+06 -4.35821e+06 -2.43782e+06\r\nv 2.49895e+06 -4.36875e+06 -2.44808e+06\r\nf 156/10/12 155/11/12 158/12/12 159/13/12 \r\n\r\nv 2.49262e+06 -4.34117e+06 -2.44174e+06\r\nf 155/14/8 157/15/8 160/16/8 158/17/8 \r\n\r\nvn -3.95704e-14 1 3.92817e-14\r\nf 157/18/52 151/19/52 154/20/52 160/21/52 \r\n\r\nvn -0.707107 -4.33022e-14 -0.707107\r\nf 159/22/53 158/23/53 160/24/53 154/25/53 153/26/53 \r\n\r\nf 152/27/11 156/28/11 159/29/11 153/3/11 \r\n\r\ng Mesh17 Component_136_17 Component_139_1 Model\r\n\r\nv 2.43893e+06 -4.25192e+06 -2.38805e+06\r\nvn 5.12735e-13 1 -5.13076e-13\r\nv 2.45161e+06 -4.25192e+06 -2.40073e+06\r\nv 2.44738e+06 -4.25192e+06 -2.40495e+06\r\nv 2.43471e+06 -4.25192e+06 -2.39228e+06\r\nf 161/1/54 162/2/54 163/3/54 164/4/54 \r\n\r\nv 2.44527e+06 -4.2795e+06 -2.39439e+06\r\nvn 0.707107 -5.30633e-15 0.707107\r\nv 2.45552e+06 -4.26896e+06 -2.40464e+06\r\nv 2.43502e+06 -4.26896e+06 -2.38414e+06\r\nf 165/5/55 166/6/55 162/7/55 161/8/55 167/9/55 \r\n\r\nv 2.44105e+06 -4.2795e+06 -2.39861e+06\r\nv 2.4513e+06 -4.26896e+06 -2.40887e+06\r\nf 166/10/11 165/11/11 168/12/11 169/13/11 \r\n\r\nv 2.43079e+06 -4.26896e+06 -2.38836e+06\r\nf 165/14/12 167/15/12 170/16/12 168/17/12 \r\n\r\nf 167/18/8 161/19/8 164/20/8 170/21/8 \r\n\r\nvn -0.707107 -5.4428e-14 -0.707107\r\nf 169/22/56 168/23/56 170/24/56 164/25/56 163/26/56 \r\n\r\nf 162/27/10 166/28/10 169/29/10 163/3/10 \r\n\r\ng Mesh18 Component_136_18 Component_139_1 Model\r\n\r\nv 2.40183e+06 -4.29654e+06 -2.33829e+06\r\nv 2.39792e+06 -4.2795e+06 -2.33437e+06\r\nv 2.3937e+06 -4.2795e+06 -2.33859e+06\r\nv 2.39761e+06 -4.29654e+06 -2.34251e+06\r\nf 171/1/1 172/2/1 173/3/1 174/4/1 \r\n\r\nv 2.41842e+06 -4.2795e+06 -2.35488e+06\r\nvn 0.707107 5.44748e-15 0.707107\r\nv 2.40817e+06 -4.26896e+06 -2.34462e+06\r\nv 2.41451e+06 -4.29654e+06 -2.35096e+06\r\nf 175/5/57 176/6/57 172/7/57 171/8/57 177/9/57 \r\n\r\nv 2.4142e+06 -4.2795e+06 -2.3591e+06\r\nv 2.40395e+06 -4.26896e+06 -2.34885e+06\r\nf 176/10/3 175/11/3 178/12/3 179/13/3 \r\n\r\nv 2.41029e+06 -4.29654e+06 -2.35518e+06\r\nf 175/14/4 177/15/4 180/16/4 178/17/4 \r\n\r\nvn 3.94915e-14 -1 -3.87661e-14\r\nf 177/18/58 171/19/58 174/20/58 180/21/58 \r\n\r\nvn -0.707107 4.29868e-14 -0.707107\r\nf 179/22/59 178/23/59 180/24/59 174/25/59 173/26/59 \r\n\r\nf 172/27/7 176/28/7 179/29/7 173/3/7 \r\n\r\ng Mesh19 Component_136_19 Component_139_1 Model\r\n\r\nv 2.45975e+06 -4.3858e+06 -2.41309e+06\r\nv 2.44707e+06 -4.3858e+06 -2.40042e+06\r\nv 2.44285e+06 -4.3858e+06 -2.40464e+06\r\nv 2.45552e+06 -4.3858e+06 -2.41731e+06\r\nf 181/1/27 182/2/27 183/3/27 184/4/27 \r\n\r\nv 2.45341e+06 -4.35821e+06 -2.40675e+06\r\nv 2.44316e+06 -4.36875e+06 -2.3965e+06\r\nv 2.46366e+06 -4.36875e+06 -2.41701e+06\r\nf 185/5/28 186/6/28 182/7/28 181/8/28 187/9/28 \r\n\r\nv 2.44919e+06 -4.35821e+06 -2.41098e+06\r\nv 2.43894e+06 -4.36875e+06 -2.40072e+06\r\nf 186/10/7 185/11/7 188/12/7 189/13/7 \r\n\r\nv 2.45944e+06 -4.36875e+06 -2.42123e+06\r\nf 185/14/3 187/15/3 190/16/3 188/17/3 \r\n\r\nf 187/18/4 181/19/4 184/20/4 190/21/4 \r\n\r\nf 189/22/29 188/23/29 190/24/29 184/25/29 183/26/29 \r\n\r\nf 182/27/1 186/28/1 189/29/1 183/3/1 \r\n\r\ng Mesh20 Component_136_20 Component_139_1 Model\r\n\r\nv 2.45341e+06 -4.26896e+06 -2.40675e+06\r\nv 2.46366e+06 -4.2795e+06 -2.41701e+06\r\nv 2.45944e+06 -4.2795e+06 -2.42123e+06\r\nv 2.44919e+06 -4.26896e+06 -2.41098e+06\r\nf 191/1/3 192/2/3 193/3/3 194/4/3 \r\n\r\nv 2.44707e+06 -4.29654e+06 -2.40042e+06\r\nvn 0.707107 -3.97864e-15 0.707107\r\nv 2.45975e+06 -4.29654e+06 -2.41309e+06\r\nv 2.44316e+06 -4.2795e+06 -2.3965e+06\r\nf 195/5/60 196/6/60 192/7/60 191/8/60 197/9/60 \r\n\r\nvn -4.03788e-13 -1 4.06028e-13\r\nv 2.44285e+06 -4.29654e+06 -2.40464e+06\r\nv 2.45552e+06 -4.29654e+06 -2.41731e+06\r\nf 196/10/61 195/11/61 198/12/61 199/13/61 \r\n\r\nv 2.43894e+06 -4.2795e+06 -2.40072e+06\r\nf 195/14/1 197/15/1 200/16/1 198/17/1 \r\n\r\nf 197/18/7 191/19/7 194/20/7 200/21/7 \r\n\r\nvn -0.707107 -6.28733e-14 -0.707107\r\nf 199/22/62 198/23/62 200/24/62 194/25/62 193/26/62 \r\n\r\nf 192/27/4 196/28/4 199/29/4 193/3/4 \r\n\r\n","testMode":false,"testColors":{},"startX":905,"startY":358}}

製作經驗分享

在不久之前,我就有想過用svg來做一個立體生成器,但是其實跟此項目無關。我一開始並沒有想做這個,彼時我正在研發一款弈棋,需要用到五個正多面體和十三個半正多面體。然後我就去wikipedia找,但是想不到萬能的wikipedia竟然沒有全套規整的svg圖。

然後我就去網上找,當然我也找不到,因為連wikipedia都沒有,其它地方就更沒有了。

不過後來我找到一個網站,能把.obj三維模型通過js和canvas轉來轉去。當然這沒什麼新奇的,多年前我就在轉了。我的網站上有three.js也可以轉。但它們都不是我要的,因為不能生成和導出svg格式的圖片。

這時神奇的事情發生了,我叫gemini幫我做一個能用.obj生成svg三維旋轉的網頁程式,然後它就真的做出來了!

能用鼠標和觸控旋轉svg格式的三維模型的那一刻,我內心非常興奮!(上一次獲得同樣快樂的事是我叫gemini為哥尼斯堡做一個蒙特卡羅樹搜尋,然後它就輕易做出來了!)

如果AI不知道,就要你自己去想了

AI起初給我做的是,當一個面的邊與另一個面發生干涉,則取這條邊的中點,再跟另一個面的法向量作判定。

這個算法看似合理,但是在一些小地方,總是會出錯。但是為什麼出錯呢?如何更正呢?

後來我才想到兩個改進方法,一是先用端點作判定,如果不行(比如端點在另一個面上),則再截取有干涉的邊在另一個面上的投影的線段的中點,用它來判定。

最終證明我的這個想法是對的,由於是我自己想出來的,有點小小的成就感。問題是,為什麼gemini不幫我想,要我自己去想?它之前沒有做過嗎?

拓撲排序,Element Diff,我知道但我不告訴你

有過相關開發經歷的人都知道,各種折磨人的調整才剛剛開始。

第一個問題是,由於svg是靠後的蓋住前面的,因此總是會排序出錯。比如A面和B面跟E面原本沒有干涉,如果排到A>E,而B<E,那麼A和B的前後關係就因為這個無關的E面而確定,就會發生錯誤。

於是我就為了這個問題忙活了好幾日,一開始我以為只要把array.sort()換成冒泡法就可以了,然後我就叫AI做了多個換成冒泡排序法的版本,總是不行。後來我新開一個窗口,用舉例的方式去問,結果gemini告訴我有一種排序方法叫「拓撲排序」(Topological Sort),你怎麼不早說啊!

Element Diff是在做凹立體時的旋轉動畫時要用到的算法,我一開始不知道,AI也不會說。都是我一步一步試探性的去問才問出來的。

也就是說,AI不會主動告訴你在這裡應該用什麼排序或算法,AI甚至不會確切知道這個網頁程式到底哪裡出了問題,也就不知道應該如何解決問題。

當AI不知道時,我們就要知道更多。

如果AI寫出bug,那你就只能靠運氣找到它了

後面我在拓撲排序上發現了一些錯位問題,也是折騰了很多天。如果我直接把錯誤描述甚至測試log信息丢給gemini,它根本不會幫我找到問題所在。

結果我只能層層排查,各種輸出,差點放棄。最後我幸運的看見了問題產生的根源:如果截取的線段如果太短(相當於落在面上),則回退到之前的整條線段的中點!唉,你為什麼要回退啊!浪費了我多少時間!

因為bug就是它寫的,它能幫我找出來?如果它能,那它前面就直接寫個對的就好啦!AI生成的代碼確實是頂級的,但是如果裡面有bug,那也要花大量的時間和精力排查。要找到和解決問題,只能靠運氣。

Leave a Comment