UNPKG

awv3

Version:
1 lines 4.42 kB
"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function drawArcBy_S_T_E(e,t,r){var n=r.clone().sub(e),a=e.clone().add(n.clone().projectOnVector(t)),c=a.distanceTo(r),o=c<=.001*n.length()+.001;if(o)return{start:e,end:r};var l=r.clone().sub(a).normalize(),d=r.distanceToSquared(e)/(2*c),s=_three2.default.cross2d(l,t),i=l.clone().multiplyScalar(d).add(e);return{start:e,end:r,center:i,clockwise:s>0}}function drawArcBy_S_E_Ch(e,t,r,n){var a=t.clone().add(e).divideScalar(2),c=t.clone().sub(e),o=new _three2.default.Vector3((-c.y),c.x,0),l=r.clone().sub(a),d=l.clone().projectOnVector(o).add(a),s=l.dot(o),i=s<0!=!!n;return{start:e,end:t,center:d,clockwise:i}}function drawArcBy_S_E_CPh(e,t,r){var n=t.clone().add(e).divideScalar(2),a=t.clone().sub(e),c=new _three2.default.Vector3((-a.y),a.x,0),o=r.clone().sub(n),l=o.clone().projectOnVector(c),d=l.length();if(d<=.001)return{start:e,end:t};var s=a.length()/2,i=-(s*s)/(d*d),u=l.clone().multiplyScalar(i).add(n),_=o.dot(c),h=_>0;return{start:e,end:t,center:u,clockwise:h}}function drawArcBy_S_E_M(e,t,r){var n=e.distanceTo(t),a=e.distanceTo(r),c=t.distanceTo(r),o=_three2.default.cross2d(t.clone().sub(e),r.clone().sub(e))/2,l=Math.abs(o);if(l<=.001*n+.001)return{start:e,end:t};var d=n*a*c/(4*l);d=Math.max(d,(.5+1e-9)*n);for(var s,i=Math.sqrt(d*d-n*n/4),u=t.clone().add(e).divideScalar(2),_=t.clone().sub(e),h=new _three2.default.Vector3((-_.y),_.x,0).normalize(),y=1e50,p=0;p<2;p++){var f=h.clone().multiplyScalar(i*(p?1:-1)).add(u),w=Math.abs(f.distanceTo(r)-d);y>w&&(y=w,s=f)}var m=function(e){var t=e.clone().sub(s);return Math.atan2(t.y,t.x)},S=m(e),M=m(t),b=m(r);M<S&&(M+=2*Math.PI),b<S&&(b+=2*Math.PI);var v=b>M;return{start:e,end:t,center:s,clockwise:v}}function drawArcBy_Angle_M(e,t,r,n){var a=void 0,c=new _three2.default.Vector3(0,0,0),o=t.clone().add(r).multiplyScalar(.5).normalize(),l=n.clone().sub(e);if(l.length()<.01||l.dot(o)<0)return null;var d=r.angleTo(t),s=l.angleTo(t),i=l.angleTo(r),u=Math.max(s,i,d);if(u!==d&&(s===u?a=l.dot(r):i===u&&(a=l.dot(t))),a)return c=e.clone().add(o.clone().multiplyScalar(a/Math.cos(d/2))),{start:e.clone().add(t.clone().multiplyScalar(a)),end:e.clone().add(r.clone().multiplyScalar(a)),center:c,clockwise:!0};var _=n.clone().sub(e),h=Math.pow(Math.sin(d/2),2),y=1-h,p=_.lengthSq(),f=-2*_.x,w=-2*_.y;if(0===o.y){var m=o.dot(new _three2.default.Vector3(1,0,0)),S=Math.pow(f,2)-4*y*p,M=(-f+m*Math.sqrt(S))/(2*y);c.x=M,c.y=0}else{var m=o.dot(new _three2.default.Vector3(0,1,0)),b=o.x/o.y,v=(b*b+1)*y,g=f*b+w,A=p,S=Math.pow(g,2)-4*v*A,x=(-g+m*Math.sqrt(S))/(2*v);c.x=x*b,c.y=x}var a=c.length()*Math.cos(d/2);return c.add(e),{start:e.clone().add(t.clone().multiplyScalar(a)),end:e.clone().add(r.clone().multiplyScalar(a)),center:c,clockwise:!0}}function drawLineBy_Angle_M(e,t,r,n){var a=t.clone().add(r).multiplyScalar(.5).normalize(),c=n.clone().sub(e);if(c.length()<.01||c.dot(a)<0)return null;var o=r.angleTo(t),l=c.dot(a)/Math.cos(o/2);return{start:e.clone().add(t.clone().multiplyScalar(l)),end:e.clone().add(r.clone().multiplyScalar(l))}}function createGeomObject(e,t){var r=_geomobjects.Point;return e.center?r=_geomobjects.Arc:e.end&&(r=_geomobjects.Line),t instanceof r||(t=new r),r===_geomobjects.Point?t.position.copy(e.start):(t.points[0].position.copy(e.start),t.points[1].position.copy(e.end),r===_geomobjects.Arc&&(t.centerPoint.position.copy(e.center),t.clockwise=e.clockwise)),t.updateGeometry(),t}function intersectLines(e,t,r,n,a){if(a=a||1e-15,t=t.clone().normalize(),n=n.clone().normalize(),t.length()<.9||n.length()<.9)return null;var c=_three2.default.cross2d(t,n);if(Math.abs(c)<=a)return null;var o=_three2.default.cross2d(r.clone().sub(e),n),l=_three2.default.cross2d(r.clone().sub(e),t),d=o/c,s=l/c,i=t.clone().multiplyScalar(d).add(e),u=n.clone().multiplyScalar(s).add(r),_=i.clone().add(u).multiplyScalar(.5);return _}exports.__esModule=!0,exports.drawArcBy_S_T_E=drawArcBy_S_T_E,exports.drawArcBy_S_E_Ch=drawArcBy_S_E_Ch,exports.drawArcBy_S_E_CPh=drawArcBy_S_E_CPh,exports.drawArcBy_S_E_M=drawArcBy_S_E_M,exports.drawArcBy_Angle_M=drawArcBy_Angle_M,exports.drawLineBy_Angle_M=drawLineBy_Angle_M,exports.createGeomObject=createGeomObject,exports.intersectLines=intersectLines;var _geomobjects=require("../sketcher/geomobjects"),_three=require("three"),_three2=_interopRequireDefault(_three);_three2.default.cross2d=function(e,t){return e.x*t.y-e.y*t.x};