Spaces:
Sleeping
Sleeping
File size: 1,047 Bytes
2b7aae2 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | import { Vector3 } from '../../math/Vector3.js';
import { Curve } from '../core/Curve.js';
class LineCurve3 extends Curve {
constructor(v1 = new Vector3(), v2 = new Vector3()) {
super();
this.type = 'LineCurve3';
this.isLineCurve3 = true;
this.v1 = v1;
this.v2 = v2;
}
getPoint(t, optionalTarget = new Vector3()) {
const point = optionalTarget;
if (t === 1) {
point.copy(this.v2);
} else {
point.copy(this.v2).sub(this.v1);
point.multiplyScalar(t).add(this.v1);
}
return point;
}
// Line curve is linear, so we can overwrite default getPointAt
getPointAt(u, optionalTarget) {
return this.getPoint(u, optionalTarget);
}
copy(source) {
super.copy(source);
this.v1.copy(source.v1);
this.v2.copy(source.v2);
return this;
}
toJSON() {
const data = super.toJSON();
data.v1 = this.v1.toArray();
data.v2 = this.v2.toArray();
return data;
}
fromJSON(json) {
super.fromJSON(json);
this.v1.fromArray(json.v1);
this.v2.fromArray(json.v2);
return this;
}
}
export { LineCurve3 };
|