UNPKG

gs-json

Version:

gs-JSON is a domain agnostic unifying 3D file format for geometric and semantic modelling (hence the 'gs').

94 lines 3.16 kB
import { Obj } from "./entity_obj"; import { Point } from "./entity_point"; import * as threex from "./libs/threex/threex"; /** * Class ConicCurve. */ export class Hyperbola extends Obj { /** * Get the object type: "hyperbola". * @return ConicCurve object type. */ getObjType() { return 6 /* hyperbola */; } /** * Get the origin of the hyperbola. * @return Plane object type. */ getOrigin() { return new Point(this._kernel, this._kernel.objGetOnePoint(this._id)); } /** * Returns the x and y vectors of this curve. The length of the x vector * defines the a,b parameters of the hyperbola. * @return The x and y vectors. */ getVectors() { return [this._kernel.objGetParams(this._id)[1], this._kernel.objGetParams(this._id)[2]]; } /** * Sets the x and y vectors of this curve. The length of the x,y vectors * defines the a,b parameters of the hyperbola. * @return The x and y vectors. */ setVectors(x_vec, y_vec) { // param are [type, x_vec, y_vec, z_vec, angles] this._kernel.objGetParams(this._id)[1] = x_vec; this._kernel.objGetParams(this._id)[2] = y_vec; this._kernel.objGetParams(this._id)[3] = threex.crossXYZs(x_vec, y_vec, true); } /** * Returns the Alpha and Beta angles of this curve. * @return The Alpha and Beta angles. */ getAngles() { return this._kernel.objGetParams(this._id)[4]; } /** * Returns the Alpha and Beta angles of this curve. * @return The Alpha and Beta angles. */ setAngles(angles) { this._kernel.objGetParams(this._id)[4] = angles; } /** * Returns the radii of this curve (the lengths of the x,y vectors). * @return The radii. */ getRadii() { return [threex.lengthXYZ(this._kernel.objGetParams(this._id)[1]), threex.lengthXYZ(this._kernel.objGetParams(this._id)[2])]; } /** * Get the length of the circle or arc. * @return The length. */ length() { throw new Error("method not implemented"); // return math_conics.hyperbolaLength(this); } /** * Get a point located at t% of the hyperbola length. * @return A Point. */ evalParam(t) { throw new Error("method not implemented"); // const xyz: XYZ = math_conics.hyperbolaEvaluate(this, t); // return this._kernel.getGeom().addPoint(xyz); } /** * Get a set of equidistant points along the arc of hyperbola. * @return An array of points. */ equiPoints(num_points) { throw new Error("method not implemented"); // const length: number = math_conics.hyperbolaLength(this); // const xyzs: XYZ[] = []; // for (let i = 0; i < num_points; i++) { // xyzs.push(math_conics.hyperbolaEvaluate(this, i/(num_points - 1))); // } // return this._kernel.getGeom().addPoints(xyzs); } } //# sourceMappingURL=entity_obj_hyperbola.js.map