Nessuna mesh, nessun triangolo, nessun dato geometrico salvato. Un solido e una funzione
f(x,y,z): il segno decide pieno o vuoto, lo zero e la superficie, il gradiente e la normale.
Il raggio non cerca: la funzione dichiara dove viene colpita, in forma chiusa.
Nessun server calcola immagini. Il rendering avviene sul dispositivo di chi visita: il sito e una cartella statica.
window.AICAD espone le stesse operazioni di openapi.yaml: due porte sulla stessa stanza, una per il codice, una per le AI.
Sfera, piano e cubo rispondono con t in forma chiusa. Nessun passo a tentoni, nessuna approssimazione di ricerca.
La pagina Prestazioni misura raggi/secondo e ms/frame sul tuo dispositivo, in tempo reale.
Trascina = orbita. Rotella sopra un punto = quel punto resta fermo. Shift+trascina = spostamento. Mouse fermo su un solido = sonda.
La libreria e una sola: geometry.js. Espone window.AICAD (e window.GEOMETRY come alias).
// 1. costruisci la scena
const sc = AICAD.scene([
AICAD.sphere(0, 1.6, 0, 1.6, [0.36,0.62,0.95]),
AICAD.planeY(0, [0.17,0.20,0.25])
]);
// 2. definisci la camera
const cam = AICAD.camera({ dist: 9.5, fov: 0.84 });
// 3. chiedi al solido dove lo colpisci
const r = cam.ray(0, 0, 1.6);
const hit = sc.trace(r.o, r.d);
// hit = { t, p, obj, normal }
// La superficie e il livello zero:
// f(punto) = 0 -> sei sulla superficie
// f(punto) < 0 -> pieno
// f(punto) > 0 -> vuoto
// La normale non si stima: si calcola.
// Per la sfera e il raggio dal centro.
// Perfino il colore, in futuro, sara
// una funzione g(punto, normale).