# Feature reference

Generated from the package declarations. Values below are defaults, not live node values. Short names are the normal interface. Existing `physics...` styles and `physics ...` key aliases remain supported.

Use `\physicshelp{wedge}` inside a `tikzpicture` to display the same reference. Use `show keys` or `show anchors` on a node; a name is optional for the overlay.

All objects support ordinary TikZ styling; see the manual for transformation and sizing limitations. Percentage families accept integers 0 through 100.

For ground, ceiling, walls, and platforms, see the [surface-anchor guide](surface-anchors.md) and its complete rendered `show anchors` gallery.

## platform-left (node)

| Key | Default |
| --- | --- |
| `minimum width` | 5cm |
| `minimum height` | 2cm |
| `strip width` | 0.25cm |
| `wall angle` | -90 degrees |
| `wall inset` | 0cm |
| `wall drop` | 0cm |
| `pulley edge` | off; preset uses 0.5cm inset and drop |

Size aliases: platform width = minimum width; platform depth = minimum height.

**Anchors:** center, north, south, east, west, north east, north west, south east, south west, surface, pulley-center, wall-root, floor-center, wall-center, text

**Families:** bottom-0..100, right-0..100, surface-0..100, left-0..100, transition-0..100, wall-surface-0..100, wall-back-0..100, wall-base-0..100, wall-tip-0..100

surface runs left to right across the floor; bottom, left, and right cover its other edges. wall-surface and wall-back run from root to tip; wall-base and wall-tip span the end caps. transition runs from pulley-center to wall-root. Upward walls require zero inset and drop. Use 50 for any edge midpoint.

Default hook: `every platform`.

## platform-right (node)

| Key | Default |
| --- | --- |
| `minimum width` | 5cm |
| `minimum height` | 2cm |
| `strip width` | 0.25cm |
| `wall angle` | -90 degrees |
| `wall inset` | 0cm |
| `wall drop` | 0cm |
| `pulley edge` | off; preset uses 0.5cm inset and drop |

Size aliases: platform width = minimum width; platform depth = minimum height.

**Anchors:** center, north, south, east, west, north east, north west, south east, south west, surface, pulley-center, wall-root, floor-center, wall-center, text

**Families:** bottom-0..100, right-0..100, surface-0..100, left-0..100, transition-0..100, wall-surface-0..100, wall-back-0..100, wall-base-0..100, wall-tip-0..100

surface runs left to right across the floor; bottom, left, and right cover its other edges. wall-surface and wall-back run from root to tip; wall-base and wall-tip span the end caps. transition runs from pulley-center to wall-root. Upward walls require zero inset and drop. Use 50 for any edge midpoint.

Default hook: `every platform`.

## platform (node)

| Key | Default |
| --- | --- |
| `minimum width` | 5cm |
| `minimum height` | 2cm |
| `strip width` | 0.25cm |
| `wall angle` | -90 degrees |
| `left wall angle` | -90 degrees |
| `right wall angle` | -90 degrees |
| `wall inset` | 0cm |
| `left wall inset` | 0cm |
| `right wall inset` | 0cm |
| `wall drop` | 0cm |
| `left wall drop` | 0cm |
| `right wall drop` | 0cm |
| `pulley edge` | off; shared preset uses 0.5cm inset and drop |
| `left pulley edge` | off; left-side preset uses 0.5cm inset and drop |
| `right pulley edge` | off; right-side preset uses 0.5cm inset and drop |
| `pulley edges` | off; both-side alias of pulley edge |

Size aliases: platform width = minimum width; platform depth = minimum height.

**Anchors:** center, north, south, east, west, north east, north west, south east, south west, surface, left-pulley-center, right-pulley-center, left-wall-root, right-wall-root, floor-center, left-wall-center, right-wall-center, text

**Families:** bottom-0..100, right-0..100, surface-0..100, left-0..100, left-transition-0..100, right-transition-0..100, left-wall-surface-0..100, left-wall-back-0..100, left-wall-base-0..100, left-wall-tip-0..100, right-wall-surface-0..100, right-wall-back-0..100, right-wall-base-0..100, right-wall-tip-0..100

surface runs left to right across the floor. Each wall has surface, back, base, and tip families with left-wall or right-wall prefixes; each transition runs from its pulley-center to wall-root. Upward walls require zero inset and drop. Use 50 for any edge midpoint.

Default hook: `every platform`.

## wedge (node)

| Key | Default |
| --- | --- |
| `minimum width` | 4cm |
| `wedge height` | derived |
| `wedge angle` | 30 degrees |
| `wedge right angle at` | br |
| `wedge top inset` | 0cm |
| `wedge top drop` | 0cm |
| `pulley edge` | off; preset uses 0.5cm inset and 1cm drop |
| `surface guide length` | 0.5cm |

Size aliases: wedge width = minimum width.

**Anchors:** surface-start, surface-end, center, north, south, east, west, north east, north west, south east, south west, bl, br, top, pulley-center, wall-root, transition-mid, base-mid, right-mid, slope-mid, slope-right-mid, centroid, mid, text

**Families:** base-0..100, right-0..100, slope-0..100, transition-0..100, surface-0..100, tangent-before-0..100, tangent-after-0..100, normal-0..100, right-surface-0..100, right-tangent-before-0..100, right-tangent-after-0..100, right-normal-0..100

pulley edge keeps top as the pulley centre and uses a 0.5cm inset with a 1cm drop. wall-root and transition anchors expose the added nose. The preset supports br and bl right-angle modes. surface runs left to right on the usable incline; top mode uses the left face. right-surface selects the right face in top mode. Directions and normals are local to the node.

Default hook: `every wedge`.

## ground (node)

| Key | Default |
| --- | --- |
| `minimum width` | 6cm |
| `minimum height` | 0.3cm |

Size aliases: ground width = minimum width; ground depth = minimum height.

**Anchors:** center, north, south, east, west, north east, north west, south east, south west, top-left, top-right, bottom-left, bottom-right, surface, text

**Families:** bottom-0..100, right-0..100, surface-0..100, left-0..100

surface runs left to right on the top contact face; bottom, left, and right cover the other edges. Use 50 for an edge midpoint.

Default hook: `every ground`.

## ceiling (node)

| Key | Default |
| --- | --- |
| `minimum width` | 2cm |
| `minimum height` | 0.3cm |

Size aliases: ceiling width = minimum width; ceiling depth = minimum height.

**Anchors:** center, north, south, east, west, north east, north west, south east, south west, top-left, top-right, bottom-left, bottom-right, surface, text

**Families:** surface-0..100, right-0..100, top-0..100, left-0..100

surface runs left to right on the underside; top, left, and right cover the other edges. Use 50 for an edge midpoint.

Default hook: `every ceiling`.

## wall-left (node)

| Key | Default |
| --- | --- |
| `minimum width` | 0.3cm |
| `minimum height` | 3cm |

Size aliases: wall thickness = minimum width; wall height = minimum height.

**Anchors:** center, north, south, east, west, north east, north west, south east, south west, top-left, top-right, bottom-left, bottom-right, surface, text

**Families:** bottom-0..100, surface-0..100, top-0..100, left-0..100

surface runs bottom to top on the right contact face; top, bottom, and left cover the other edges. Use 50 for an edge midpoint.

Default hook: `every wall-left`.

## wall-right (node)

| Key | Default |
| --- | --- |
| `minimum width` | 0.3cm |
| `minimum height` | 3cm |

Size aliases: wall thickness = minimum width; wall height = minimum height.

**Anchors:** center, north, south, east, west, north east, north west, south east, south west, top-left, top-right, bottom-left, bottom-right, surface, text

**Families:** bottom-0..100, right-0..100, top-0..100, surface-0..100

surface runs bottom to top on the left contact face; top, bottom, and right cover the other edges. Use 50 for an edge midpoint.

Default hook: `every wall-right`.

## ramp (node)

| Key | Default |
| --- | --- |
| `minimum width` | 8.6cm |
| `ramp run` | 2.6cm |
| `ramp rise` | derived |
| `ramp angle` | 30 |
| `ramp depth` | 0.25cm |
| `ramp wall height` | 1.5cm |
| `ramp wall width` | 0.25cm |
| `ramp direction` | right |
| `ramp guide length` | 0.5cm |

**Anchors:** center, surface-start, surface-mid, surface-end, floor-start, floor-mid, floor-end, ramp-foot, ramp-mid, ramp-top, wall-top, wall-mid, wall-bottom, base-start, base-end, angle-baseline, angle-label, angle-first, angle-second, text

**Families:** surface-0..100, tangent-before-0..100, tangent-after-0..100, normal-0..100; legacy .0..100 shorthand also available

surface follows the whole contact path by distance. At the sharp joint the tangent uses the incline side.

Default hook: `every ramp`.

## curved-ramp (node)

| Key | Default |
| --- | --- |
| `curved ramp floor length` | 2.5cm |
| `curved ramp radius` | 4cm |
| `curved ramp angle` | 90 |
| `curved ramp back extension` | 1cm |
| `ramp depth` | 0.25cm |
| `ramp direction` | right |
| `ramp guide length` | 0.5cm |

**Anchors:** center, surface-start, surface-mid, surface-end, curve-center, curve-start, curve-mid, curve-end, floor-start, floor-mid, floor-end, base-start, base-end, back-top, back-bottom, text

**Families:** surface-0..100, curve-0..100, tangent-before-0..100, tangent-after-0..100, normal-0..100, curve-tangent-before-0..100, curve-tangent-after-0..100, curve-normal-0..100; legacy .0..100 shorthand also available

surface follows floor plus arc by distance; curve follows the arc only.

Default hook: `every curved-ramp`.

## block (node)

| Key | Default |
| --- | --- |
| `minimum width` | 1cm |
| `minimum height` | 1cm |

Size aliases: block width = minimum width; block height = minimum height.

**Anchors:** center, north, south, east, west, north east, north west, south east, south west, base, base east, base west, mid, mid east, mid west, text

**Families:** Numeric anchors are angles in degrees, as in ordinary TikZ.

Default hook: `every block`.

## pulley (node)

| Key | Default |
| --- | --- |
| `minimum size` | 1cm |
| `pulley axle radius` | 1.5pt |
| `pulley axle color` | black |

Size aliases: pulley diameter = minimum size.

**Anchors:** center, north, south, east, west, north east, north west, south east, south west, base, base east, base west, mid, mid east, mid west, text

**Families:** Numeric anchors are angles in degrees, as in ordinary TikZ.

Use a circular pulley with external rope endpoints. Set pulley axle radius=none to hide the axle.

Default hook: `every pulley`.

## particle (node)

| Key | Default |
| --- | --- |
| `minimum size` | 3mm |

**Anchors:** center, north, south, east, west, north east, north west, south east, south west, base, base east, base west, mid, mid east, mid west, text

**Families:** Numeric anchors are angles in degrees, as in ordinary TikZ.

Default hook: `every particle`.

## disk (node)

| Key | Default |
| --- | --- |
| `minimum size` | 15mm |

**Anchors:** center, north, south, east, west, north east, north west, south east, south west, base, base east, base west, mid, mid east, mid west, text

**Families:** Numeric anchors are angles in degrees, as in ordinary TikZ.

Default hook: `every disk`.

## ring (node)

| Key | Default |
| --- | --- |
| `minimum size` | 15mm |

**Anchors:** center, north, south, east, west, north east, north west, south east, south west, base, base east, base west, mid, mid east, mid west, text

**Families:** Numeric anchors are angles in degrees, as in ordinary TikZ.

Default hook: `every ring`.

## spring (path)

| Key | Default |
| --- | --- |
| `pre length` | 5pt |
| `post length` | 5pt |
| `amplitude` | 4.5pt |
| `segment length` | 4.5pt |
| `aspect` | 0.5 |

**Anchors:** No private anchors; use path endpoints and nodes along the path.

**Families:** None

Use draw[spring] (A)--(B). No private anchors. Lead lengths may be zero; amplitude and segment length must be positive.

Default hook: `every spring`.

## rope (path)

| Key | Default |
| --- | --- |
| `line width` | 0.5pt |
| `over pulley` | required node name |
| `string route` | surface-right |
| `string start solution` | 2 |
| `string end solution` | 1 |
| `string wrap` | clockwise |

**Anchors:** No private anchors; use path endpoints and nodes along the path.

**Families:** None

Use draw[rope] (A) to[over pulley=P] (B). Endpoints must lie outside a circular pulley. Labels on to sit on the final straight segment. shortest changes wrap only, not the tangent pair.

Default hook: `every rope`.

## force (path)

| Key | Default |
| --- | --- |
| `line width` | 0.7pt |

**Anchors:** No private anchors; use path endpoints and nodes along the path.

**Families:** None

Default hook: `every force`.

## velocity (path)

| Key | Default |
| --- | --- |
| `line width` | 0.6pt |

**Anchors:** No private anchors; use path endpoints and nodes along the path.

**Families:** None

Default hook: `every velocity`.

## acceleration (path)

| Key | Default |
| --- | --- |
| `line width` | 0.6pt |

**Anchors:** No private anchors; use path endpoints and nodes along the path.

**Families:** None

Default hook: `every acceleration`.

## torque (path)

| Key | Default |
| --- | --- |
| `line width` | 0.7pt |

**Anchors:** No private anchors; use path endpoints and nodes along the path.

**Families:** None

Default hook: `every torque`.

## rod (path)

| Key | Default |
| --- | --- |
| `line width` | 2pt |

**Anchors:** No private anchors; use path endpoints and nodes along the path.

**Families:** None

Default hook: `every rod`.

## pin-support (pic)

| Key | Default |
| --- | --- |
| `support size` | 6mm |

**Anchors:** pivot, base, left, right

**Families:** None

Use pic (S) {pin-support}; anchors are coordinates (S-pivot), (S-base), (S-left), (S-right).

Default hook: `every support`.

## roller-support (pic)

| Key | Default |
| --- | --- |
| `support size` | 6mm |

**Anchors:** pivot, base, left, right

**Families:** None

Use pic (S) {roller-support}; anchors are coordinates (S-pivot), (S-base), (S-left), (S-right).

Default hook: `every support`.

## pendulum (pic)

| Key | Default |
| --- | --- |
| `pendulum length` | 2cm |
| `pendulum angle` | 30 degrees |

**Anchors:** pivot, bob (node)

**Families:** None

Use pic (P) {pendulum}. Angle is measured from downward vertical; positive swings right. Length is pivot to bob centre. Use (P-pivot) and (P-bob.center).

Default hook: `every pendulum`.

## polar element (node)

| Key | Default |
| --- | --- |
| `element inner radius` | 1.8cm |
| `element outer radius` | 2cm |
| `element radial thickness` | derived |
| `element start angle` | 30 degrees |
| `element delta angle` | 30 degrees |
| `element dimension offset` | 4mm |
| `element radius label` | r |
| `element radial label` | dr |
| `element angular label` | d theta |
| `element arc label` | r d theta |
| `show dimensions` | off |

**Anchors:** center, text, north, south, east, west, north east, north west, south east, south west, centroid, inner-start, inner-mid, inner-end, outer-start, outer-mid, outer-end, start-mid, end-mid

**Families:** inner-0..100, outer-0..100, start-0..100, end-0..100

An annular sector from inner-start to outer-end. Set inner radius to zero for a sector or delta angle to 360 degrees for a full ring.

Default hook: `every polar element`.

## differential sector (node)

| Key | Default |
| --- | --- |
| `element inner radius` | 0cm |
| `element outer radius` | 2cm |
| `element radial thickness` | derived |
| `element start angle` | 30 degrees |
| `element delta angle` | 30 degrees |
| `element dimension offset` | 4mm |
| `element radius label` | r |
| `element angular label` | d theta |
| `element arc label` | r d theta |
| `show dimensions` | off |

**Anchors:** center, text, north, south, east, west, north east, north west, south east, south west, centroid, inner-start, inner-mid, inner-end, outer-start, outer-mid, outer-end, start-mid, end-mid

**Families:** inner-0..100, outer-0..100, start-0..100, end-0..100

A polar-element preset with zero inner radius. The outer arc represents r d theta and numeric families follow every boundary.

Default hook: `every differential sector`.

## differential ring (node)

| Key | Default |
| --- | --- |
| `element inner radius` | 1.8cm |
| `element outer radius` | 2cm |
| `element radial thickness` | derived |
| `element delta angle` | 360 degrees |
| `element radius label` | r |
| `element radial label` | dr |
| `show dimensions` | off |

**Anchors:** center, text, north, south, east, west, north east, north west, south east, south west, centroid, inner-start, inner-mid, inner-end, outer-start, outer-mid, outer-end, start-mid, end-mid

**Families:** inner-0..100, outer-0..100, start-0..100, end-0..100

A polar-element preset with a 360-degree sweep. Use source element on an unwrapped ring to copy its radii.

Default hook: `every differential ring`.

## unwrapped ring (node)

| Key | Default |
| --- | --- |
| `element inner radius` | 1.8cm |
| `element outer radius` | 2cm |
| `element radial thickness` | derived |
| `source element` | optional named element |
| `element circumference label` | 2 pi r |
| `element radial label` | dr |
| `show dimensions` | off |

**Anchors:** center, text, centroid, north, south, east, west, north east, north west, south east, south west, top-left, top-right, bottom-left, bottom-right

**Families:** bottom-0..100, right-0..100, top-0..100, left-0..100

A differential approximation with width 2 pi times the inner reference radius and height equal to the radial thickness. source element copies both radii from a named polar element.

Default hook: `every unwrapped ring`.

## spherical shell (node)

| Key | Default |
| --- | --- |
| `element inner radius` | 1cm |
| `element outer radius` | derived |
| `element radial thickness` | 1.5mm |
| `element delta angle` | 360 degrees |
| `element radius label` | r |
| `element radial label` | dr |
| `show dimensions` | off |

**Anchors:** center, text, north, south, east, west, north east, north west, south east, south west, centroid, inner-start, inner-mid, inner-end, outer-start, outer-mid, outer-end, start-mid, end-mid

**Families:** inner-0..100, outer-0..100, start-0..100, end-0..100

A concentric differential shell shown in section. Its full-sweep anchors and radial geometry match the spherical-shell construction.

Default hook: `every spherical shell`.

## hollow sphere (node)

| Key | Default |
| --- | --- |
| `element inner radius` | 1cm |
| `element outer radius` | 2cm |
| `element radial thickness` | derived |
| `element delta angle` | 360 degrees |
| `element cavity radius label` | a |
| `element body radius label` | R |
| `show dimensions` | off |

**Anchors:** center, text, north, south, east, west, north east, north west, south east, south west, centroid, inner-start, inner-mid, inner-end, outer-start, outer-mid, outer-end, start-mid, end-mid

**Families:** inner-0..100, outer-0..100, start-0..100, end-0..100

A finite spherical wall shown in section, with independent inner and outer radii.

Default hook: `every hollow sphere`.

## rectangular element (node)

| Key | Default |
| --- | --- |
| `element width` | 8mm |
| `element height` | 6mm |
| `element width label` | dx |
| `element height label` | dy |
| `show dimensions` | off |

**Anchors:** center, text, centroid, north, south, east, west, north east, north west, south east, south west, top-left, top-right, bottom-left, bottom-right

**Families:** bottom-0..100, right-0..100, top-0..100, left-0..100

A Cartesian differential area with independent width and height, complete boundary anchors, and optional dimension labels.

Default hook: `every rectangular element`.

## rectangular strip (node)

| Key | Default |
| --- | --- |
| `element width` | 4cm |
| `element height` | 2mm |
| `element width label` | b |
| `element height label` | dx |
| `show dimensions` | off |

**Anchors:** center, text, centroid, north, south, east, west, north east, north west, south east, south west, top-left, top-right, bottom-left, bottom-right

**Families:** bottom-0..100, right-0..100, top-0..100, left-0..100

A full-width strip preset. Change its width and differential thickness independently.

Default hook: `every rectangular strip`.

## rectangular sheet (node)

| Key | Default |
| --- | --- |
| `element width` | 5cm |
| `element height` | 3cm |

**Anchors:** center, text, centroid, north, south, east, west, north east, north west, south east, south west, top-left, top-right, bottom-left, bottom-right

**Families:** bottom-0..100, right-0..100, top-0..100, left-0..100

A finite unshaded sheet node used alone or as the body in a sheet element diagram.

Default hook: `every rectangular sheet`.

## differential ring diagram (pic)

| Key | Default |
| --- | --- |
| `element inner radius` | 1cm |
| `element outer radius` | 1.2cm |
| `element radial thickness` | derived |
| `element body radius` | 2cm |
| `element diagram gap` | 5mm |
| `element center dot radius` | 1.2pt |
| `show dimensions` | on for both parts |

**Anchors:** center, body-north, body-south, body-east, body-west, ring (node), strip (node)

**Families:** None

Use pic (D) {differential ring diagram={...}}. It keeps the body circle, ring, centre mark, and unwrapped strip together. Components are (D-ring) and (D-strip).

Default hook: `every differential ring diagram`.

## sphere shell diagram (pic)

| Key | Default |
| --- | --- |
| `element body radius` | 2cm |
| `element inner radius` | 1cm |
| `element radial thickness` | 1.5mm |
| `element formula label` | dV = 4 pi r squared dr |

**Anchors:** center, body (node), shell (node), formula-anchor

**Families:** None

A solid sphere with a highlighted spherical shell. Components are (S-body) and (S-shell); (S-center) marks the common centre.

Default hook: `every sphere shell diagram`.

## sphere slice diagram (pic)

| Key | Default |
| --- | --- |
| `element body radius` | 2cm |
| `element axial thickness` | 2mm |
| `element position` | 0.35 in (-1 |
| `element projection ratio` | 0.24 |
| `element axial label` | dx |
| `element formula label` | dV = pi y squared dx |

**Anchors:** center, body (node), slice (node), formula-anchor

**Families:** None

A solid sphere with a projected disk slice at a signed normalized axial position. Components are (S-body) and (S-slice).

Default hook: `every sphere slice diagram`.

## hollow sphere diagram (pic)

| Key | Default |
| --- | --- |
| `element inner radius` | 9mm |
| `element outer radius` | 2cm |
| `element cavity radius label` | a |
| `element body radius label` | R |
| `element formula label` | V = 4 pi over 3 times (R cubed - a cubed) |

**Anchors:** center, body-north, body-south, wall (node), formula-anchor

**Families:** None

A hollow sphere in section. Component (H-wall) exposes the inner and outer boundaries.

Default hook: `every hollow sphere diagram`.

## cylinder shell diagram (pic)

| Key | Default |
| --- | --- |
| `element body radius` | 1.6cm |
| `element body height` | 3.4cm |
| `element inner radius` | 9mm |
| `element radial thickness` | 1.5mm |
| `element projection ratio` | 0.25 |
| `element formula label` | dV = 2 pi r h dr |

**Anchors:** center, body (node), shell or slice (node), formula-anchor

**Families:** None

A projected cylinder with a radial cylindrical shell. Components are (C-body) and (C-shell).

Default hook: `every cylinder shell diagram`.

## cylinder slice diagram (pic)

| Key | Default |
| --- | --- |
| `element body radius` | 1.6cm |
| `element body height` | 3.4cm |
| `element axial thickness` | 2mm |
| `element position` | 0.55 |
| `element projection ratio` | 0.25 |
| `element axial label` | dz |
| `element formula label` | dV = pi R squared dz |

**Anchors:** center, body (node), shell or slice (node), formula-anchor

**Families:** None

A projected cylinder with an axial disk slice. Components are (C-body) and (C-slice).

Default hook: `every cylinder slice diagram`.

## cone slice diagram (pic)

| Key | Default |
| --- | --- |
| `element body radius` | 1.8cm |
| `element body height` | 4cm |
| `element axial thickness` | 2mm |
| `element position` | 0.58 from apex |
| `element projection ratio` | 0.24 |
| `element axial label` | dx |
| `element formula label` | dV = pi r(x) squared dx |

**Anchors:** center, apex, base, body (node), slice (node), formula-anchor

**Families:** None

A projected cone with a thin disk slice. element position is measured from apex to base. Components are (K-body) and (K-slice).

Default hook: `every cone slice diagram`.

## sheet element diagram (pic)

| Key | Default |
| --- | --- |
| `element body width` | 5cm |
| `element body height` | 3cm |
| `element width` | 8mm |
| `element height` | 6mm |
| `element position` | 0.58 |
| `element transverse position` | 0.58 |
| `element formula label` | dA = dx dy |

**Anchors:** center, body (node), element (node), formula-anchor

**Families:** None

A rectangular sheet with a named Cartesian element. Components are (A-body) and (A-element).

Default hook: `every sheet element diagram`.

## u tube diagram (pic)

| Key | Default |
| --- | --- |
| `fluid width` | 2cm |
| `fluid height` | 4cm |
| `fluid tube width` | .3cm |
| `fluid left level` | .75 |
| `fluid right level` | .55 |
| `fluid level` | .65 |

**Anchors:** origin, center, bottom, top, left, right, left-surface, right-surface, interface, upper-surface

**Families:** None

Two-liquid U tube. level adds a second liquid only above left level. Use (F-origin), (F-center), and the listed (F-...) coordinates; these are pic coordinates, not node anchors.

Default hook: `every u tube`.

## gas manometer (pic)

| Key | Default |
| --- | --- |
| `fluid width` | 1.8cm |
| `fluid height` | 3.8cm |
| `fluid tube width` | .3cm |
| `fluid left level` | .45 |
| `fluid right level` | .8 |

**Anchors:** origin, center, bottom, top, left, right, left-surface, right-surface, gas

**Families:** None

Gas reservoir connected to a U tube. body label names the gas. Use (F-origin), (F-center), and the listed (F-...) coordinates; these are pic coordinates, not node anchors.

Default hook: `every gas manometer`.

## hydraulic press (pic)

| Key | Default |
| --- | --- |
| `fluid width` | 4cm |
| `fluid height` | 3.5cm |
| `fluid tube width` | .3cm |
| `fluid left level` | .4 |
| `fluid right level` | .8 |

**Anchors:** origin, center, bottom, top, left, right, large-piston, small-piston

**Families:** None

Large piston width is 0.32 times width; tube width sets the small piston. Use (F-origin), (F-center), and the listed (F-...) coordinates; these are pic coordinates, not node anchors.

Default hook: `every hydraulic press`.

## fluid cylinder diagram (pic)

| Key | Default |
| --- | --- |
| `fluid width` | 1.6cm |
| `fluid height` | 3.2cm |
| `fluid level` | .65 |

**Anchors:** origin, center, bottom, top, left, right, surface

**Families:** None

Projected cylinder with an elliptical liquid surface. width is the diameter. Use (F-origin), (F-center), and the listed (F-...) coordinates; these are pic coordinates, not node anchors.

Default hook: `every fluid cylinder`.

## fluid tank diagram (pic)

| Key | Default |
| --- | --- |
| `fluid width` | 3cm |
| `fluid height` | 3cm |
| `fluid left level` | .7 |
| `fluid right level` | .7 |

**Anchors:** origin, center, bottom, top, left, right, left-surface, right-surface, surface

**Families:** None

Open vessel. Equal endpoint levels give a horizontal free surface. Use (F-origin), (F-center), and the listed (F-...) coordinates; these are pic coordinates, not node anchors.

Default hook: `every fluid tank`.

## pressure element diagram (pic)

| Key | Default |
| --- | --- |
| `fluid width` | 2cm |
| `fluid height` | .65cm |

**Anchors:** origin, center, bottom, top, left, right

**Families:** None

Projected horizontal fluid element with inward pressure forces. Use (F-origin), (F-center), and the listed (F-...) coordinates; these are pic coordinates, not node anchors.

Default hook: `every pressure element`.

## rotating tube (pic)

| Key | Default |
| --- | --- |
| `fluid width` | 5cm |
| `fluid height` | .5cm |
| `fluid tube width` | .3cm |
| `fluid level` | .48 |

**Anchors:** origin, center, bottom, top, left, right, element-left, element-right

**Families:** None

Horizontal tube with a differential section. level locates its left face along width. Use (F-origin), (F-center), and the listed (F-...) coordinates; these are pic coordinates, not node anchors.

Default hook: `every rotating tube`.

## rotating fluid diagram (pic)

| Key | Default |
| --- | --- |
| `fluid width` | 3cm |
| `fluid height` | 3.5cm |
| `fluid level` | .5 |
| `fluid bend` | .35 |

**Anchors:** origin, center, bottom, top, left, right, vertex, rim-surface

**Families:** None

Parabolic surface. level is the vertex height; bend is the wall-to-vertex rise divided by height. Use (F-origin), (F-center), and the listed (F-...) coordinates; these are pic coordinates, not node anchors.

Default hook: `every rotating fluid`.

## buoyancy (pic)

| Key | Default |
| --- | --- |
| `fluid width` | 3cm |
| `fluid height` | 3cm |
| `fluid left level` | .8 |
| `fluid right level` | .8 |

**Anchors:** origin, center, bottom, top, left, right, left-surface, right-surface, surface, body

**Families:** None

Immersed body with schematic inward pressure arrows. Arrow lengths do not encode pressure magnitude. Use (F-origin), (F-center), and the listed (F-...) coordinates; these are pic coordinates, not node anchors.

Default hook: `every buoyancy`.

## flow tube diagram (pic)

| Key | Default |
| --- | --- |
| `fluid width` | 5cm |
| `fluid height` | 1.3cm |
| `fluid bend` | .45 |

**Anchors:** origin, center, bottom, top, left, right, inlet, outlet

**Families:** None

Curved flow tube; outlet height is 0.55 times inlet height. bend controls vertical curvature. Use (F-origin), (F-center), and the listed (F-...) coordinates; these are pic coordinates, not node anchors.

Default hook: `every flow tube`.

## meniscus diagram (pic)

| Key | Default |
| --- | --- |
| `fluid width` | 1.2cm |
| `fluid height` | 2.7cm |
| `fluid level` | .7 |
| `fluid bend` | .2 |

**Anchors:** origin, center, bottom, top, left, right, contact-left, contact-right, surface

**Families:** None

Positive bend is concave; negative bend is convex. Contact angle is measured through the liquid. Use (F-origin), (F-center), and the listed (F-...) coordinates; these are pic coordinates, not node anchors.

Default hook: `every meniscus`.

## capillary (pic)

| Key | Default |
| --- | --- |
| `fluid width` | 4cm |
| `fluid height` | 3cm |
| `fluid level` | .35 |
| `fluid left level` | .7 |
| `fluid bend` | .12 |

**Anchors:** origin, center, bottom, top, left, right, contact-left, contact-right, reservoir

**Families:** None

Capillary rise. level is the reservoir surface and left level is the contact-line height. Use (F-origin), (F-center), and the listed (F-...) coordinates; these are pic coordinates, not node anchors.

Default hook: `every capillary`.

## surface tension ring (pic)

| Key | Default |
| --- | --- |
| `fluid width` | 3cm |
| `fluid height` | 1cm |

**Anchors:** origin, center, bottom, top, left, right

**Families:** None

Projected circular contact line. width and height are the ellipse diameters. Use (F-origin), (F-center), and the listed (F-...) coordinates; these are pic coordinates, not node anchors.

Default hook: `every surface tension ring`.

## liquid ring diagram (pic)

| Key | Default |
| --- | --- |
| `fluid width` | 3.5cm |
| `fluid tube width` | .4cm |
| `fluid angle` | 225 |
| `fluid sweep` | 70 |

**Anchors:** origin, center, bottom, top, left, right, liquid-start, liquid-end

**Families:** None

Annular liquid sector. width is outer diameter, tube width is radial thickness. Angles use degrees counterclockwise from right. Use (F-origin), (F-center), and the listed (F-...) coordinates; these are pic coordinates, not node anchors.

Default hook: `every liquid ring`.

## fluid tank (node)

| Key | Default |
| --- | --- |
| `fluid width` | 3cm |
| `fluid height` | 3cm |
| `fluid left level` | .7 |
| `fluid right level` | .7 |

**Anchors:** center, north, south, east, west, north east, north west, south east, south west, left-surface, right-surface, surface, text, base, base east, base west, mid, mid east, mid west

**Families:** None

Default hook: `every fluid tank`.

## meniscus (node)

| Key | Default |
| --- | --- |
| `fluid width` | 1.2cm |
| `fluid height` | 2.7cm |
| `fluid level` | .7 |
| `fluid bend` | .2 |

**Anchors:** center, north, south, east, west, north east, north west, south east, south west, left-surface, right-surface, surface, text, base, base east, base west, mid, mid east, mid west

**Families:** None

Default hook: `every meniscus`.

## rotating fluid (node)

| Key | Default |
| --- | --- |
| `fluid width` | 3cm |
| `fluid height` | 3.5cm |
| `fluid level` | .5 |
| `fluid bend` | .35 |

**Anchors:** center, north, south, east, west, north east, north west, south east, south west, left-surface, right-surface, surface, text, base, base east, base west, mid, mid east, mid west

**Families:** None

Default hook: `every rotating fluid`.

## fluid cylinder (node)

| Key | Default |
| --- | --- |
| `fluid width` | 1.6cm |
| `fluid height` | 3.2cm |
| `fluid level` | .65 |

**Anchors:** center, north, south, east, west, north east, north west, south east, south west, left-surface, right-surface, surface, text, base, base east, base west, mid, mid east, mid west

**Families:** None

Default hook: `every fluid cylinder`.

## pressure element (node)

| Key | Default |
| --- | --- |
| `fluid width` | 2cm |
| `fluid height` | .65cm |

**Anchors:** center, north, south, east, west, north east, north west, south east, south west, inlet, outlet, text, base, base east, base west, mid, mid east, mid west

**Families:** None

Default hook: `every pressure element`.

## flow tube (node)

| Key | Default |
| --- | --- |
| `fluid width` | 5cm |
| `fluid height` | 1.3cm |
| `fluid bend` | .45 |

**Anchors:** center, north, south, east, west, north east, north west, south east, south west, inlet, outlet, text, base, base east, base west, mid, mid east, mid west

**Families:** None

Default hook: `every flow tube`.

## liquid ring (node)

| Key | Default |
| --- | --- |
| `fluid width` | 3.5cm |
| `fluid tube width` | .4cm |
| `fluid angle` | 225 |
| `fluid sweep` | 70 |

**Anchors:** center, north, south, east, west, north east, north west, south east, south west, liquid-start, liquid-end, text, base, base east, base west, mid, mid east, mid west

**Families:** None

Default hook: `every liquid ring`.

## u tube (node)

| Key | Default |
| --- | --- |
| `fluid width` | 2cm |
| `fluid height` | 4cm |
| `fluid tube width` | .3cm |
| `fluid left level` | .75 |
| `fluid right level` | .55 |

**Anchors:** center, north, south, east, west, north east, north west, south east, south west, left-surface, right-surface, surface, text, base, base east, base west, mid, mid east, mid west

**Families:** None

Default hook: `every u tube`.

## concave-mirror (node)

| Key | Default |
| --- | --- |
| `mirror radius` | 5cm |
| `mirror thickness` | 0.25cm |
| `mirror aperture angle` | 30 degrees |

**Anchors:** center, north, south, east, west, north east, north west, south east, south west, vertex, arc-mid, surface-mid, front-mid, back-mid, front-top, front-bottom, surface-top, surface-bottom, back-top, back-bottom, top, bottom, text

**Families:** surface-0..100, front-0..100, back-0..100; legacy .0..100 shorthand also available

Default hook: `every concave-mirror`.

## convex-mirror (node)

| Key | Default |
| --- | --- |
| `mirror radius` | 5cm |
| `mirror thickness` | 0.25cm |
| `mirror aperture angle` | 30 degrees |

**Anchors:** center, north, south, east, west, north east, north west, south east, south west, vertex, arc-mid, surface-mid, front-mid, back-mid, front-top, front-bottom, surface-top, surface-bottom, back-top, back-bottom, top, bottom, text

**Families:** surface-0..100, front-0..100, back-0..100; legacy .0..100 shorthand also available

Default hook: `every convex-mirror`.

## convex-lens (node)

| Key | Default |
| --- | --- |
| `convex lens radius` | 5cm |
| `convex lens thickness` | 0.2cm |
| `convex lens aperture angle` | 25 degrees |

**Anchors:** center, north, south, east, west, north east, north west, south east, south west, front-mid, back-mid, front-top, front-bottom, back-top, back-bottom, top, bottom, text

**Families:** front-0..100, back-0..100; legacy .0..100 shorthand also available

Default hook: `every convex-lens`.

## concave-lens (node)

| Key | Default |
| --- | --- |
| `concave lens radius` | 5cm |
| `concave lens thickness` | 0.2cm |
| `concave lens aperture angle` | 25 degrees |

**Anchors:** center, north, south, east, west, north east, north west, south east, south west, front-mid, back-mid, front-top, front-bottom, back-top, back-bottom, top, bottom, text

**Families:** front-0..100, back-0..100; legacy .0..100 shorthand also available

Default hook: `every concave-lens`.

## slab (node)

| Key | Default |
| --- | --- |
| `minimum width` | 1.2cm |
| `minimum height` | 3cm |

Size aliases: slab width = minimum width; slab height = minimum height.

**Anchors:** center, north, south, east, west, north east, north west, south east, south west, front, back, front-top, front-bottom, back-top, back-bottom, top, bottom, text

**Families:** front-0..100, back-0..100, top-0..100, bottom-0..100; legacy .0..100 shorthand also available

Default hook: `every slab`.

## prism (node)

| Key | Default |
| --- | --- |
| `minimum width` | 3cm |
| `minimum height` | 2.6cm |
| `prism apex angle` | derived |

Size aliases: prism width = minimum width; prism height = minimum height.

**Anchors:** center, centroid, north, south, east, west, north east, north west, south east, south west, apex, base-left, base-right, base-mid, left-mid, right-mid, entry-mid, exit-mid, text

**Families:** base-0..100, right-0..100, left-0..100; legacy .0..100 shorthand also available

Default hook: `every prism`.
