Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 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 | import { Vector3, CatmullRomCurve3 } from "three";
import Line from "./Line";
import { ENTITY_TYPES } from "../constants";
const DEFAULT_CURVE_LINE_DIVISIONS = 20;
export default class CurveLine extends Line {
constructor(points = [], options = {}) {
const { divisions = DEFAULT_CURVE_LINE_DIVISIONS } = options;
const curve = CurveLine.genereateCurve(points, divisions);
super(curve, options);
this.curve = curve;
this.setEntitySubtype(ENTITY_TYPES.MESH.SUBTYPES.CURVE_LINE);
}
static genereateCurve(points, divisions) {
return new CatmullRomCurve3(points.map(({ x, y, z }) => new Vector3(x, y, z))).getPoints(
divisions,
);
}
static create(data = {}) {
return new CurveLine(data.points, data.options);
}
}
|