starry / backend /libs /three /extras /curves /LineCurve3.js
k-l-lambda's picture
feat: add Python ML services (CPU mode) with model download
2b7aae2
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 };