Bagian aktif Geometry
21. Constraints
Status dokumen: Normative
Constraint digunakan untuk memvalidasi hubungan geometri.
Constraint tidak bertindak sebagai general constraint solver.
21.1 Syntax
constraints:
- equal:
left: line1.length
right: line2.length
21.2 Equal
Memastikan dua nilai identik.
constraints:
- equal:
left: line1.length
right: line2.length
Atau dengan scalar literal:
constraints:
- equal: [garisA.length, 10cm]
21.3 Parallel
Memastikan dua garis sejajar.
constraints:
- parallel: [garis1, garis2]
Argumen adalah array dua object ID bertipe line.
21.4 Perpendicular
Memastikan dua garis tegak lurus.
constraints:
- perpendicular: [garis_alas, garis_tinggi]
Argumen adalah array dua object ID bertipe line.
21.5 Tangent
Memastikan dua geometri saling tangent.
constraints:
- tangent: [line1, circle1]
Argumen adalah array dua object ID. Mendukung kombinasi line-circle, line-arc, dll.
[!NOTE] Constraint
tangentbersifat validasi (bukan konstruksi). Untuk membangun garis singgung secara konstruktif, gunakan modeline.tangentdi bab10.2 Line.
21.6 Constraint Failure
Constraint dievaluasi setelah geometri berhasil di-resolve. Resolver tidak diperbolehkan memodifikasi geometri untuk memenuhi constraint.
Pada kontrak aktif v0.5, constraint yang gagal tidak wajib menggagalkan seluruh dokumen sebagai validation error. Sebaliknya, resolver melaporkan hasilnya sebagai runtime diagnostics terstruktur pada output resolved scene, misalnya melalui koleksi violations.
Dengan kata lain:
- structural/schema/reference error tetap merupakan hard error
- constraint failure adalah hasil validasi geometri pasca-resolve
- caller dapat memutuskan sendiri apakah
violationsharus diperlakukan sebagai warning, failed check, atau hard failure di layer yang lebih tinggi
| Diagnostic | Kondisi |
|---|---|
CONSTRAINT_VIOLATION | Relasi geometri tidak terpenuhi |
OVER_CONSTRAINED | Object memiliki constraint yang saling bertentangan |