One angle measurement — three world-space anchors (origin, corner, target) plus the overlay DOM/SVG that shows the two arms and the angle at the corner.

Instances are created and owned by AngleMeasurementsTool; external callers should go through the tool's AngleMeasurementsTool.createMeasurement factory and call AngleMeasurementsTool.destroyMeasurement (or AngleMeasurementsTool.clear) to tear them down.

The measurement composes 2 arm wires, 3 anchor dots, 1 angle label, and a small arc that hints at which angle is being measured (always the interior angle ≤ 180° formed at the corner).

Element Goes from … to …
arm A origin → corner
arm B corner → target
arc small SVG path swept at corner between the two arms
label floats just outside the arc, in the angle bisector

Toggles visible, wireVisible, labelsVisible compose like CSS visibility — hiding the whole measurement (visible = false) overrides the others.

Constructors

Properties

id: string

Stable id for this measurement. Used as the registry key.

Accessors

Methods

  • Internal

    Recompute screen positions of all sub-elements. Called by the tool once per camera-update tick.

    project(worldPos, out) writes [canvasX, canvasY, w]; a non-positive w means "behind the camera" and the whole measurement is hidden for this frame.

    Parameters

    • project: (p: Vec3, out: [number, number, number]) => void

    Returns void