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
JavaScript
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