Bagian aktif Geometry
20. Geometry Queries
Status dokumen: Normative
Geometry Query menghasilkan informasi geometri tanpa menciptakan object baru.
20.1 distance
Menghasilkan jarak antara dua point.
distance(A, B)
Hasil:
length
20.2 length
Menghasilkan panjang geometri.
length(line1)
length(path1)
Hasil:
length
length(...) adalah query panjang lintasan umum.
Ia tetap sah dipakai untuk geometri terbuka maupun tertutup yang memiliki surface lintasan.
20.3 perimeter
Menghasilkan keliling ClosedShape.
perimeter(panel)
perimeter(slot)
Hasil:
length
Boundary v0.5:
perimeter(...)sah untuk targetClosedShape- nilainya boleh bersifat pendekatan deterministik bila shape memang tidak memiliki bentuk keliling eksak sederhana
- untuk
ellipse, hasil query ini sepadan dengan kontrakellipse.perimeter
20.4 bbox
Menghasilkan world-space bounding box target sebagai record khusus.
bbox(panel)
bbox(slot)
Hasil:
bbox2d
Field minimum:
minX
maxX
minY
maxY
width
height
Boundary v0.5:
bbox(...)menghasilkan record bbox minimum, bukan object geometri biasa- hasilnya tidak otomatis menjadi
PlaceableObject - hasilnya tidak otomatis memiliki anchors kaya seperti object biasa
20.5 width / height
Menghasilkan ukuran world-space bounding box dari target.
width(panel)
height(slot)
Hasil:
length
Boundary v0.5:
width(...)danheight(...)dibaca terhadap world-space bounding box target- query umum ini melengkapi property object yang sudah ada, bukan menggantikannya
20.6 minX / maxX / minY / maxY
Menghasilkan batas world-space bounding box dari target.
minX(panel)
maxX(panel)
minY(slot)
maxY(slot)
Hasil:
length
Makna:
minX(...)adalah batas kiri bboxmaxX(...)adalah batas kanan bboxminY(...)adalah batas atas bboxmaxY(...)adalah batas bawah bbox
20.7 midpoint
Menghasilkan titik tengah antara dua point.
midpoint(A, B)
Hasil:
point
20.8 area
Menghasilkan luas ClosedShape.
area(panel)
area(slot)
Hasil:
area
area(...) sah dipakai untuk object tertutup seperti rect, circle, ellipse, polygon, boolean, dan path tertutup.
20.9 polar
Menghasilkan point dari pusat, radius, dan sudut.
polar(centerPoint, 25mm, 45deg)
Hasil:
point
Semantik:
- argumen pertama harus
point - argumen kedua harus
length - argumen ketiga harus
angle - hasil dibaca sebagai titik pada jarak radius dari pusat ke arah sudut yang diberikan
20.10 angleBetween
Menghasilkan arah dari point pertama ke point kedua.
angleBetween(A, B)
Hasil:
angle
Boundary v0.5:
angleBetween(...)hanya sah untuk dua point- fungsi ini tidak membuka overload vector-to-vector pada nama yang sama
20.11 pointAt
Menghasilkan point pada lintasan.
pointAt(path1, 0.5)
pointAt(ellipse1, 0.25)
Hasil:
point
pointAt(...) sah dipakai untuk object yang kompatibel dengan path-ref, termasuk line, arc, circle, ellipse, rect, path, polygon, dan result geometry operation yang tetap path-like.
20.12 tangentAt
Menghasilkan vektor tangent.
tangentAt(path1, 0.5)
tangentAt(ellipse1, 0.25)
Hasil:
vector
20.13 normalAt
Menghasilkan vektor normal.
normalAt(path1, 0.5)
normalAt(ellipse1, 0.25)
Hasil:
vector
20.14 closestPoint
Menghasilkan point terdekat pada geometri.
closestPoint(path1, P)
Hasil:
point
20.15 project
Menghasilkan proyeksi ortogonal sebuah point ke line acuan.
project(P, guideLine)
Hasil:
point
Boundary v0.5:
- argumen pertama harus
point - argumen kedua harus object bertipe
line - fungsi ini tidak berlaku untuk
path-refumum - untuk target lintasan umum, gunakan
closestPoint(...)
20.16 reflect
Menghasilkan refleksi sebuah point terhadap point atau line acuan.
reflect(P, centerPoint)
reflect(P, mirrorLine)
Hasil:
point
Boundary v0.5:
- argumen pertama harus
point - argumen kedua hanya sah untuk target
pointatauline - target
segment,path-ref, danframe2dtidak didukung pada tahap ini
20.17 toWorld / toLocal
Mengonversi titik abstrak antar-ruang koordinat.
toWorld(point, object): Mengonversi koordinat lokal objek ke koordinat dunia.toLocal(point, object): Mengonversi koordinat dunia ke koordinat lokal objek.
Hasil:
point
20.18 intersection
Menghasilkan titik perpotongan.
intersection(circle1, line1, first)
Pilihan selector:
first
last
nearest(...)
farthest(...)
index
Contoh:
intersection(circle1, line1, farthest(anchorA))
Hasil:
point
atau:
collection<point>
bergantung pada konteks.
20.19 frameAt
Menghasilkan frame lokal pada lintasan.
Query ini menjadi fondasi orientasi untuk on.frame dan repeat.along.
frameAt(path1, 0.25)
frameAt(ellipse1, 0.25)
Hasil:
frame2d
Field minimum hasil frame2d:
point
angle
tangent
normal
Catatan:
frame2dadalah hasil query orientasi, bukan object geometri biasa- field di atas bersifat read-only
- query ini adalah surface normatif untuk orientasi pada
on.framedanrepeat.along
20.20 tAtLength
Mengubah panjang lintasan menjadi parameter t.
Query ini menjadi fondasi distribusi berbasis panjang pada repeat.along, terutama untuk mode uniform-length dan fixed-distance.
tAtLength(path1, 50mm)
tAtLength(ellipse1, 25mm)
Hasil:
number