Schemas / Geometry / paint
rig.geometry.polygon
v0.31.0 · draft 3 fields 1 required
Fields
| Field | Type | Meaning | |
|---|---|---|---|
points |
array<vec2>min 3 items | required | Vertices in order; at least 3. Winding is this order - no winding field |
closed |
bool | optional | Optional. Absent means closed |
fillRule |
enumnonzero · evenodd | optional | Optional. nonzero, evenodd; absent = nonzero. Self-intersecting rings only |
Freeform polygon with explicit vertices. Format when present.
This is a single ring. Compound shapes with holes use rig.geometry.path (extra move-to ... close subpaths). A lone ring used as a CAD boolean / extrude operand still has orientation: reverse points to flip it.
2D page space (+X right, +Y down): clockwise shoelace = outer / solid; counter-clockwise = hole (boolean difference or profile cutout). Under fillRule: nonzero, opposite winding punches a hole. Under evenodd, overlap toggles.
Do not put fillRule on paint. Do not add a winding field here or on rectangle / ellipse / star / ring.
For an n-gon defined by a radius and a side count rather than by vertices, use rig.geometry.regular_polygon - it survives editing as a parametric shape, where this one has already been resolved to points.
Curved contours use rig.geometry.path.
Appearance: rig.paint.fill_stroke.
JSON Schema
Resolves at https://rig.works/schemas/rig.geometry.polygon.schema.json —
raw file.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://rig.works/schemas/rig.geometry.polygon.schema.json",
"title": "rig.geometry.polygon",
"type": "object",
"additionalProperties": false,
"properties": {
"points": {
"type": "array",
"items": {
"$ref": "./_defs.schema.json#/$defs/vec2"
},
"minItems": 3
},
"closed": {
"$ref": "./_defs.schema.json#/$defs/bool"
},
"fillRule": {
"type": "string",
"enum": [
"nonzero",
"evenodd"
]
}
},
"required": [
"points"
]
}