You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
9 lines
3.0 KiB
9 lines
3.0 KiB
// All material copyright Esri, All Rights Reserved, unless otherwise specified. |
|
// See https://js.arcgis.com/4.30/esri/copyright.txt for details. |
|
//>>built |
|
define("exports ../../core/libs/gl-matrix-2/factories/vec2f64 ../../chunks/vec32 ../../core/libs/gl-matrix-2/factories/vec3f64 ../3d/state/utils/navigationUtils ./FilteredFiniteDifference ./FilteredValue ./Momentum".split(" "),function(k,r,g,h,n,l,p,t){class q extends t.Momentum{constructor(a,b,d,c,e,f=0,m){super(a,b,d);this._angularVelocity1=c;this.axis1=e;this.angularVelocity2=f;this.axis2=m}value1(a){return super.valueFromInitialVelocity(this._angularVelocity1,a)}value2(a){return super.valueFromInitialVelocity(this.angularVelocity2, |
|
a)}}class u{constructor(a=300,b=12,d=.84){this._minimumInitialVelocity=a;this._stopVelocity=b;this._friction=d;this.enabled=!0;this._tmpAxis1=h.create();this._tmpAxis2=h.create();this._tmpAngles=r.create();this._time=new l.FilteredFiniteDifference(.3);this._screen=[new l.FilteredFiniteDifference(.4),new l.FilteredFiniteDifference(.4)];this._angle1=new p.FilteredValue(.6);this._angle2=new p.FilteredValue(.6);this._axis1=h.create();this._axis2=h.create();this._lastScene=h.create()}addMomentumDirectRotation(a, |
|
b,d,c,e,f){if(this.enabled){if(this._time.hasLastValue()){if(.01>this._time.computeDelta(d))return;c=n.rotationAngleAndAxisDirectRotation(this._lastScene,b,this._tmpAxis2,c,e,f);this._angle2.update(0);1E-5>g.squaredLength(this._tmpAxis2)?c=0:g.normalize(this._axis1,this._tmpAxis2);this._angle1.update(c);g.copy(this._lastScene,b)}this._screen[0].update(a[0]);this._screen[1].update(a[1]);this._time.update(d)}}addMomentumPreserveHeading(a,b,d,c,e,f,m){if(this.enabled){if(this._time.hasLastValue()){if(.01> |
|
this._time.computeDelta(d))return;n.rotationAnglesAndAxesHeadingPreserving(this._lastScene,b,this._tmpAxis2,this._tmpAxis1,this._tmpAngles,c,e,f,m,!1);1E-5>g.squaredLength(this._tmpAxis2)?(this._angle1.update(0),this._angle2.update(0)):(this._angle1.update(this._tmpAngles[1]),this._angle2.update(this._tmpAngles[0]),g.normalize(this._axis1,this._tmpAxis1),g.normalize(this._axis2,this._tmpAxis2));g.copy(this._lastScene,b)}this._screen[0].update(a[0]);this._screen[1].update(a[1]);this._time.update(d)}}reset(){this._screen[0].reset(); |
|
this._screen[1].reset();this._angle1.reset();this._angle2.reset();this._time.reset()}evaluateMomentum(){if(!this.enabled||!this._screen[0].hasFilteredDelta())return null;var a=this._screen[0].filteredDelta,b=this._screen[1].filteredDelta;a=null==a||null==b?null:Math.sqrt(a*a+b*b);b=this._time.filteredDelta;a=null==a||null==b?0:a/b;return Math.abs(a)<this._minimumInitialVelocity?null:this.createMomentum(a,this._stopVelocity,this._friction)}createMomentum(a,b,d){const c=this._time.filteredDelta,e=this._angle1.filteredValue, |
|
f=this._angle2.filteredValue;return new q(a,b,d,null==c||null==e?0:e/c,this._axis1,null==c||null==f?0:f/c,this._axis2)}}k.PanSphericalMomentum=q;k.PanSphericalMomentumEstimator=u;Object.defineProperty(k,Symbol.toStringTag,{value:"Module"})}); |