UNPKG

awv3

Version:
23 lines (20 loc) 973 B
import * as THREE from 'three'; import BaseGraphics from './base'; export default class Diametral extends BaseGraphics { constructor(...args) { super(...args, 2, 0, 2); } updateFromState(state, ...args) { const [center, dim] = ['center', 'dimPt'].map(x => new THREE.Vector3().fromArray(state.members[x].value)); const radius = state.members.radius.value; const start = dim.clone().sub(center).setLength(-radius).add(center); const end = dim.clone().sub(center).setLength(radius).add(center); const outside = (dim.distanceTo(center) > end.distanceTo(center)); const dir = end.clone().sub(center).normalize(); this.updateLine(0, start, dim); this.updateLine(1, dim, end); this.updateArrow(0, end, dir.clone().multiplyScalar(outside ? -1 : 1)); this.updateArrow(1, start, dir.clone().multiplyScalar(outside ? 1 : -1)); super.updateFromState(state, ...args); } }