jsketcher/modules/engine/data/primitiveData.ts
Val Erastov (xibyte) c9b1d3d292 engine api work
2020-07-20 02:25:34 -07:00

35 lines
No EOL
719 B
TypeScript

import {Vec3} from "math/vec";
import {NurbsCurveData} from "geom/curves/nurbsCurveData";
export enum PRIMITIVE_TYPES {
SEGMENT = 1,
B_SPLINE,
CIRCLE,
ARC
}
export interface CirclePrimitiveData {
TYPE: PRIMITIVE_TYPES.CIRCLE;
c: Vec3;
r: number;
dir: Vec3;
}
export interface ArcPrimitiveData {
TYPE: PRIMITIVE_TYPES.ARC;
a: Vec3;
b: Vec3;
tangent: Vec3;
}
export interface BSplinePrimitiveData extends NurbsCurveData {
TYPE: PRIMITIVE_TYPES.B_SPLINE;
}
export interface SegmentPrimitiveData extends NurbsCurveData {
TYPE: PRIMITIVE_TYPES.SEGMENT;
a: Vec3;
b: Vec3;
}
export type PrimitiveData = SegmentPrimitiveData | CirclePrimitiveData | ArcPrimitiveData | BSplinePrimitiveData;