Felbontás (N) 30
Amplitúdó (a) 1.0
Tartomány (L) 2.0
Bal egér: forgat  |  Jobb: pásztáz  |  Görgő: zoom
Three.js · Tananyag

Nyeregfelület
Hiperbolikus paraboloid: z = a(x² − y²)

01Az alakzat leírása

A hiperbolikus paraboloid (közismert nevén nyeregfelület) egy másodfokú felület, amelynek minden pontja egy nyereg alakú görbületet mutat: az egyik irányban domború, a másikban homorú. Az origó egy nyeregpont — sem minimum, sem maximum.

Jellemző tulajdonság: minden X = const és Y = const metszet parabolát ad, amelyek ellentétes irányban nyílnak.

02Parametrikus egyenlet
z = a · (x² − y²) ahol: x ∈ [−L, +L] u paraméter: x = u y ∈ [−L, +L] v paraméter: y = v Tehát: P(u, v) = ( u, v, a·(u² − v²) ) Paraméterek (csúszkával állítható): a — amplitúdó (görbület mértéke) L — tartomány ([-L, L] × [-L, L]) N — felbontás (N×N rács)

Speciális metszetek:

x = 0 → z = −a·y² (lefelé nyíló parabola) y = 0 → z = +a·x² (felfelé nyíló parabola) z = 0 → x² = y² (két egyenes: x = ±y)
03Geometria felépítése

Az N×N rácson (N+1)² csúcspont, 2N² háromszög. Indexelés: vertex(j,i) = j·(N+1) + i

u(i) = −L + i · 2L/N, i = 0…N v(j) = −L + j · 2L/N, j = 0…N P(j,i) = ( u(i), v(j), a·(u(i)² − v(j)²) ) Quad → 2 háromszög (ugyanaz mint a gömbhöz): a = j·(N+1)+i, b = a+1 c = (j+1)·(N+1)+i, d = c+1 [0]: a→b→c [1]: b→d→c
// (N+1)² csúcs for (let j = 0; j <= N; j++) { const v = -L + j * 2*L/N; for (let i = 0; i <= N; i++) { const u = -L + i * 2*L/N; pos.push(u, v, a*(u*u - v*v)); } } // 2N² háromszög for (let j = 0; j < N; j++) { for (let i = 0; i < N; i++) { const a = j*(N+1)+i, b = a+1; const c = (j+1)*(N+1)+i, d = c+1; idx.push(a,b,c, b,d,c); } }
04Anyagok & színek
Mély piros — előlap
#8B0000
FRONT
Cián — hátlap
#00CCCC
BACK
05Felületi rács

A felület rácsozata az N×N négyszögcellák éleinek LineSegments-ként kirajzolva — minden cellából vízszintes + függőleges él (az átló nélkül, hogy tiszta rács legyen). Külön ki/be kapcsolható az alap GridHelper-től.

Fájl

Egyetlen önálló HTML fájl, offline is megnyitható.

⬇ Letöltés: saddlesurface3d.html