@openhps/core
Version:
Open Hybrid Positioning System - Core component
76 lines (73 loc) • 2.55 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.AxesHelper = void 0;
var _LineSegments = require("../objects/LineSegments.js");
var _LineBasicMaterial = require("../materials/LineBasicMaterial.js");
var _BufferAttribute = require("../core/BufferAttribute.js");
var _BufferGeometry = require("../core/BufferGeometry.js");
var _Color = require("../math/Color.js");
/**
* An axis object to visualize the 3 axes in a simple way.
* The X axis is red. The Y axis is green. The Z axis is blue.
*
* ```js
* const axesHelper = new THREE.AxesHelper( 5 );
* scene.add( axesHelper );
* ```
*
* @augments LineSegments
*/
class AxesHelper extends _LineSegments.LineSegments {
/**
* Constructs a new axes helper.
*
* @param {number} [size=1] - Size of the lines representing the axes.
*/
constructor(size = 1) {
const vertices = [0, 0, 0, size, 0, 0, 0, 0, 0, 0, size, 0, 0, 0, 0, 0, 0, size];
const colors = [1, 0, 0, 1, 0.6, 0, 0, 1, 0, 0.6, 1, 0, 0, 0, 1, 0, 0.6, 1];
const geometry = new _BufferGeometry.BufferGeometry();
geometry.setAttribute('position', new _BufferAttribute.Float32BufferAttribute(vertices, 3));
geometry.setAttribute('color', new _BufferAttribute.Float32BufferAttribute(colors, 3));
const material = new _LineBasicMaterial.LineBasicMaterial({
vertexColors: true,
toneMapped: false
});
super(geometry, material);
this.type = 'AxesHelper';
}
/**
* Defines the colors of the axes helper.
*
* @param {number|Color|string} xAxisColor - The color for the x axis.
* @param {number|Color|string} yAxisColor - The color for the y axis.
* @param {number|Color|string} zAxisColor - The color for the z axis.
* @return {AxesHelper} A reference to this axes helper.
*/
setColors(xAxisColor, yAxisColor, zAxisColor) {
const color = new _Color.Color();
const array = this.geometry.attributes.color.array;
color.set(xAxisColor);
color.toArray(array, 0);
color.toArray(array, 3);
color.set(yAxisColor);
color.toArray(array, 6);
color.toArray(array, 9);
color.set(zAxisColor);
color.toArray(array, 12);
color.toArray(array, 15);
this.geometry.attributes.color.needsUpdate = true;
return this;
}
/**
* Frees the GPU-related resources allocated by this instance. Call this
* method whenever this instance is no longer used in your app.
*/
dispose() {
this.geometry.dispose();
this.material.dispose();
}
}
exports.AxesHelper = AxesHelper;