awv3
Version:
AWV client CAD framework
1 lines • 3.53 kB
JavaScript
;function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}function drawArcBy_S_T_E(e,t,r){var c=r.clone().sub(e),o=e.clone().add(c.clone().projectOnVector(t)),a=o.distanceTo(r),n=a<=.001*c.length()+.001;if(n)return{start:e,end:r};var l=r.clone().sub(o).normalize(),d=r.distanceToSquared(e)/(2*a),s=l.clone().cross(t).z,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,c){var o=t.clone().add(e).divideScalar(2),a=t.clone().sub(e),n=new _three2["default"].Vector3((-a.y),a.x,0),l=r.clone().sub(o),d=l.clone().projectOnVector(n).add(o),s=l.dot(n),i=s<0!=!!c;return{start:e,end:t,center:d,clockwise:i}}function drawArcBy_S_E_CPh(e,t,r){var c=t.clone().add(e).divideScalar(2),o=t.clone().sub(e),a=new _three2["default"].Vector3((-o.y),o.x,0),n=r.clone().sub(c),l=n.clone().projectOnVector(a),d=l.length();if(d<=.001)return{start:e,end:t};var s=o.length()/2,i=-(s*s)/(d*d),_=l.clone().multiplyScalar(i).add(c),u=n.dot(a),h=u>0;return{start:e,end:t,center:_,clockwise:h}}function drawArcBy_S_E_M(e,t,r){var c=e.distanceTo(t),o=e.distanceTo(r),a=t.distanceTo(r),n=t.clone().sub(e).cross(r.clone().sub(e)).z/2,l=Math.abs(n);if(l<=.001*c+.001)return{start:e,end:t};var d=c*o*a/(4*l);d=Math.max(d,(.5+1e-9)*c);for(var s,i=Math.sqrt(d*d-c*c/4),_=t.clone().add(e).divideScalar(2),u=t.clone().sub(e),h=new _three2["default"].Vector3((-u.y),u.x,0).normalize(),y=1e50,p=0;p<2;p++){var w=h.clone().multiplyScalar(i*(p?1:-1)).add(_),S=Math.abs(w.distanceTo(r)-d);y>S&&(y=S,s=w)}var f=function(e){var t=e.clone().sub(s);return Math.atan2(t.y,t.x)},m=f(e),b=f(t),v=f(r);b<m&&(b+=2*Math.PI),v<m&&(v+=2*Math.PI);var M=v>b;return{start:e,end:t,center:s,clockwise:M}}function drawArcBy_Angle_M(e,t,r,c){var o=void 0,a=new _three2["default"].Vector3(0,0,0),n=t.clone().add(r).multiplyScalar(.5).normalize(),l=c.clone().sub(e);if(l.length()<.01||l.dot(n)<0)return null;var d=r.angleTo(t),s=l.angleTo(t),i=l.angleTo(r),_=Math.max(s,i,d);if(_!==d&&(s===_?o=l.dot(r):i===_&&(o=l.dot(t))),o)return a=e.clone().add(n.clone().multiplyScalar(o/Math.cos(d/2))),{start:e.clone().add(t.clone().multiplyScalar(o)),end:e.clone().add(r.clone().multiplyScalar(o)),center:a,clockwise:!0};var u=c.clone().sub(e),h=Math.pow(Math.sin(d/2),2),y=1-h,p=u.lengthSq(),w=-2*u.x,S=-2*u.y;if(0===n.y){var f=n.dot(new _three2["default"].Vector3(1,0,0)),m=Math.pow(w,2)-4*y*p,b=(-w+f*Math.sqrt(m))/(2*y);a.x=b,a.y=0}else{var f=n.dot(new _three2["default"].Vector3(0,1,0)),v=n.x/n.y,M=(v*v+1)*y,A=w*v+S,g=p,m=Math.pow(A,2)-4*M*g,x=(-A+f*Math.sqrt(m))/(2*M);a.x=x*v,a.y=x}var o=a.length()*Math.cos(d/2);return a.add(e),{start:e.clone().add(t.clone().multiplyScalar(o)),end:e.clone().add(r.clone().multiplyScalar(o)),center:a,clockwise:!0}}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}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.createGeomObject=createGeomObject;var _geomobjects=require("sketcher/geomobjects"),_three=require("three"),_three2=_interopRequireDefault(_three);