export function setGeometrPostion(e,t){for(let n=0;n0){const o=new THREE.CurvePath;n||e.push(e[0]);for(let r=0;r=.99999&&(a=.99999),a<=-.99999&&(a=-.99999),l=(l=Math.acos(a))/Math.PI*180,c<-.05&&(l=360-l),{sin:c,cos:a,angle:l}};export function judgementArcRenderDirection(e,t,n){let o,r;return o=eo};export function createThreePointArc(e,t,n,o=!1,r=!1,c=new THREE.Color("#ff0000")){const a=calculateArcOrigin(e,t,n),l=a.x,i=a.y,s=calculateRadiusArc(e,a),E=calculateArcAngle(e,a,s),u=calculateArcAngle(t,a,s),x=calculateArcAngle(n,a,s);let T,g,R=E.angle,y=u.angle,d=x.angle,h=judgementArcRenderDirection(R,y,d);r&&(h=!0),o?(g=new THREE.ArcCurve(l,i,s,THREE.MathUtils.degToRad(R),THREE.MathUtils.degToRad(y),!h),T=h?y>R?THREE.MathUtils.radToDeg(g.aEndAngle-g.aStartAngle):360-Math.abs(THREE.MathUtils.radToDeg(g.aEndAngle-g.aStartAngle)):R>y?Math.abs(THREE.MathUtils.radToDeg(g.aEndAngle-g.aStartAngle)):360-THREE.MathUtils.radToDeg(g.aEndAngle-g.aStartAngle)):(g=new THREE.ArcCurve(l,i,s,THREE.MathUtils.degToRad(R),THREE.MathUtils.degToRad(d),h),T=h?d>R?360-THREE.MathUtils.radToDeg(g.aEndAngle-g.aStartAngle):Math.abs(THREE.MathUtils.radToDeg(g.aEndAngle-g.aStartAngle)):R>d?360+THREE.MathUtils.radToDeg(g.aEndAngle-g.aStartAngle):THREE.MathUtils.radToDeg(g.aEndAngle-g.aStartAngle));const H=T*Math.PI*s/180,p=(new THREE.BufferGeometry).setFromPoints(g.getPoints(50)),f=new THREE.LineBasicMaterial({color:c});return{arc:new THREE.Line(p,f),radius:s,angle:T,arcLength:H}};export function createAnyLine(e){const t=new THREE.CatmullRomCurve3(e,!1,"chordal");e=t.getPoints(50);const n=new THREE.BufferGeometry,o=Math.round(12*e.length);let r=new THREE.Vector3;const c=[],a=[],l=new THREE.Color("#ff0000");for(let e=0,n=o;et.x,i=e.y>t.y,s=new THREE.EllipseCurve(l?e.x-c:e.x+c,i?e.y-a:e.y+a,-c,-a,0,2*Math.PI,!1,0).getPoints(50),E=(new THREE.Geometry).setFromPoints(s),u=new THREE.LineBasicMaterial({color:n});return new THREE.Line(E,u)};export function computeRegularPolygonVertices(e=new THREE.Vector3,t=new THREE.Vector3,n=3){const o=[];n=Math.max(3,n),o.push(t);const r=2*Math.PI/n;for(let c=1;co.x&&(t.x=o.x),t.y>o.y&&(t.y=o.y),n.x