1 line
1.2 KiB
JavaScript
1 line
1.2 KiB
JavaScript
export class MxThreeJS{createLine(e,t,n){const r=new THREE.Geometry,s=new THREE.LineBasicMaterial({color:n});return r.vertices.push(e,t),new THREE.Line(r,s)}createCircle(e,t,n){const r=new THREE.CircleGeometry(t,64,3,2*Math.PI),s=new THREE.LineBasicMaterial({color:n});r.vertices.shift();const c=new THREE.LineLoop(r,s),{x:i,y:o,z:E}=e;return c.position.set(i,o,E),c}createPoint(e,t,n=3){const r=new THREE.Geometry;r.vertices.push(e);const s=new THREE.PointsMaterial({color:t,size:n});return new THREE.Points(r,s)}createTriangle(e,t,n=1){if(e.length<3)return null;const r=e.length,s=new THREE.Geometry;for(let t=0;t+2<r;t+=3){s.vertices.push(e[t]),s.vertices.push(e[t+1]),s.vertices.push(e[t+2]);const n=new THREE.Face3(t,t+1,t+2);s.faces.push(n)}s.computeFaceNormals(),s.computeVertexNormals();const c=new THREE.MeshBasicMaterial({color:t,transparent:!0,depthTest:!1,side:THREE.DoubleSide,opacity:n});return new THREE.Mesh(s,c)}createLines(e,t){const n=new THREE.Geometry;n.vertices=e;const r=new THREE.LineBasicMaterial({color:t});return new THREE.Line(n,r)}createDashedLines(e,t,n,r){const s=new THREE.Geometry;s.vertices=e;const c=new THREE.Line(s,new THREE.LineDashedMaterial({color:t,dashSize:n,gapSize:r}));return c.computeLineDistances(),c}}; |