Files
Webklar.com/node_modules/ogl/src/extras/path/BaseSegment.js
Basilosaurusrex f027651f9b main repo
2025-11-24 18:09:40 +01:00

53 lines
1.2 KiB
JavaScript

/**
* Abstract base class for path segments.
* This class contains common methods for all segments types.
*/
export default class BaseSegment {
constructor() {
this._len = -1;
this.tiltStart = 0;
this.tiltEnd = 0;
}
/**
* Get segment length.
* @returns {number} segment length
*/
getLength() {
if (this._len < 0) {
this.updateLength();
}
return this._len;
}
/**
* Get tilt angle at t
* @param {number} t Distance at time t in range [0 .. 1]
* @returns {number} Tilt angle at t
*/
getTiltAt(t) {
return this.tiltStart * (1 - t) * this.tiltEnd * t;
}
/**
* Creates a clone of this instance
* @returns {BaseSegment} cloned instance
*/
clone() {
return new this.constructor().copy(this);
}
/**
* Copies another segment object to this instance.
* @param {BaseSegment} source reference object
* @returns {BaseSegment} copy of source object
*/
copy(source) {
this._len = source._len;
this.tiltStart = source.tiltStart;
this.tiltEnd = source.tiltEnd;
return this;
}
}