Current Section Core
3. Scene
Status dokumen: Normative
Section scene mendefinisikan perilaku global dokumen.
scene bukan kantong metadata umum. Informasi tambahan yang tidak memengaruhi geometri atau viewport harus ditulis di <root>.meta, bukan di scene.meta.
3.1 Syntax
scene:
unit: mm
orientation: y-down
autoSize: true
padding: 20
3.2 Fields
Field yang valid di dalam scene terbatas pada:
unit
origin
orientation
autoSize
padding
[!WARNING]
scene.metabukan bagian dari kontrak bahasa aktif.
unit
Menentukan satuan panjang default dokumen.
Nilai yang didukung:
mm
cm
m
in
px
Jika tidak ditentukan:
px
digunakan sebagai default.
Semua nilai panjang pada dokumen dinormalisasi terhadap scene.unit selama proses resolve. Satuan eksplisit tetap diperbolehkan dan harus dikonversi ke unit scene sebelum dipakai oleh runtime geometri.
[!NOTE] Angka tanpa unit di konteks yang mengharapkan panjang dibaca menggunakan
scene.unit, kecuali aturan field tertentu menyatakan lain.
origin
Lokasi titik (0,0) pada viewport. Bersifat visual (viewport shift).
Nilai:
top-left
Default:
top-left
[!IMPORTANT]
originmengatur posisi titik (0,0) di layar, tetapi tidak mengubah sistem koordinat internal. Gunakanorientation: y-upjika ingin membalik sumbu Y (Cartesian).
orientation
Menentukan arah sumbu Y global.
Nilai:
y-down
y-up
Default:
y-down
autoSize
Menentukan apakah ukuran viewport gambar (viewBox) dihitung otomatis dari batas geometri. RelGeo menghitung Recursive Bounding Box dari semua elemen terlihat setelah transformasi untuk menjamin seluruh objek termuat (zoom-to-fit). Jika padding didefinisikan, ia akan ditambahkan di sekeliling area tersebut.
Tipe:
boolean
Default:
true
padding
Margin tambahan di sekitar batas geometri.
Contoh:
padding: 20
menggunakan satuan scene.unit.
padding: 10mm
menggunakan satuan eksplisit.
Jika tidak ditentukan, sistem menerapkan padding visual sebesar:
20px
yang dikonversi ke satuan scene.
3.3 Coordinate Space
RelGeo menggunakan satu ruang koordinat dunia (world space).
Transformasi objek, clone, dan placement menghasilkan koordinat dunia final yang dapat diakses melalui anchor dan query.
[!NOTE] Post-Transform Access: Secara otomatis, mengakses anchor dari objek yang berada di dalam
groupataucloneakan mengembalikan koordinat dunia hasil transformasi (Post-Transform). Sebaliknya, komponen internal di dalam group yang sama akan tetap berkomunikasi secara geometris menggunakan keadaan asli objek (Pre-Transform) untuk menjamin modularitas.
3.4 Unit Normalization
Resolver wajib menerapkan normalisasi satuan secara deterministik:
- nilai panjang eksplisit seperti
10mmatau2mdikonversi kescene.unit - angka tanpa unit yang berada di konteks panjang diperlakukan sebagai panjang dalam
scene.unit - nilai numerik murni tetap bertipe
numberjika konteksnya memang mengharapkan skalar
Contoh:
scene.unit = cm
1m → 100cm
10cm → 10cm
5mm → 0.5cm
3.5 Unit and Coercion Baseline
scene.unit adalah baseline untuk seluruh panjang default dokumen.
Implikasinya:
- angka tanpa unit yang masuk ke field atau ekspresi bertipe
lengthdibaca dalamscene.unit - angka tanpa unit yang tidak berada di konteks panjang tetap
number - satuan eksplisit seperti
mm,cm,m,in, danpxharus selalu menang atas baselinescene.unit
Contoh:
scene.unit = mm
width: 25 -> 25mm
radius: 2cm -> 20mm
count: 25 -> number, bukan 25mm
Catatan:
- kontrak coercion lengkap tetap dijelaskan di ../syntax/07-type-system.md
- bab
sceneini hanya menetapkan baseline globalnya