Kúp az XY-síkban Alaplap (fan) + palást (fan a csúcsból)
01Az alakzat leírása
Egy R sugarú, H magasságú kúp, amelynek tengelye a Z-tengellyel esik egybe. Az alaplap középpontja z = −H/2-n, a csúcspont z = +H/2-n van. Két különálló geometriából épül fel:
Alaplap — kör fan-topológiával, z = −H/2, lefelé néző normálissal
Palást — N háromszög, mindegyik a csúcspontból indul (fan a csúcsból)
Paraméterek: R = 1.8, H = 3.5, N = 16 (default).
02Parametrikus egyenlet
Alaplap kerületi pont (i = 0…N−1):
P_base(i) = (
x = R · cos(i · 2π/N)
y = R · sin(i · 2π/N)
z = −H/2
)
Alaplap középpontja:
C_base = (0, 0, −H/2)
Csúcspont (apex):
A = (0, 0, +H/2)
Palást i-edik háromszöge:
A → P_base(i) → P_base((i+1) % N)
03Geometria felépítése
Alaplap — fan-topológia (mint a körlapnál), fordított CCW sorrend a lefelé néző normálishoz:
Index 0: C_base = (0, 0, −H/2) ← origó
Index 1…N: kerületi pontok
Hromszög i: 0 → (i+1)%N+1 → i+1 ← fordított CCW
Palást — fan a csúcspontból: minden háromszög az apex-ből (A) indul, és a kerület két szomszédos pontját köti össze:
// Palást csúcsok: N kerületi + 1 csúcspont// index 0…N-1: kerületi pontok (z = −H/2)// index N: csúcspont A (z = +H/2)for (let i = 0; i < N; i++) {
const θ = i * 2*Math.PI / N;
pos.push(R*cos(θ), R*sin(θ), -H/2);
}
pos.push(0, 0, H/2); // csúcspont, index N// Fan a csúcspontból: N háromszögfor (let i = 0; i < N; i++) {
idx.push(N, i, (i+1)%N); // A → Pᵢ → Pᵢ₊₁
}
04Anyagok & színek
Mély piros — alaplap
#8B0000
BOTTOM
Cián — palást
#00CCCC
SIDE
Komplementer:
Piros HSL(0°,100%,27%) ↔ Cián HSL(180°,100%,40%)
05Wireframe
A wireframe LineSegments-ként, négy részből:
Alaplap körél — N él, z = −H/2
Alaplap sugárélek — N él: C_base → kerületi pont
Alkotók — N él: csúcspont → kerületi pont
Alap körél (palástnál is) — közös a két résznél
Összesen: 3N él.
Fájl
Egyetlen önálló HTML fájl, offline is megnyitható.