3D Nyíl – lapos, sík lapokból Extrudált nyílprofil, X+ irány
01Az alakzat leírása
A nyíl kizárólag sík lapokból áll — síkra fektethető és csúsztatható. Az alap nyílprofil a YZ-síkban van definiálva (7 sarokpont), majd ez Z irányban ki van tolva T vastagságra.
A nyíl X+ irányba mutat. A talp középpontja az origóban van (z = 0 és z = T között, y = 0 magasságban).
02Parametrikus egyenlet
A nyílprofil 7 sarokpontja az XY-síkban (z = 0 és z = T lapok):
Szár félmagasság: hs = H_SHAFT / 2
Hegy félmagasság: hh = H_HEAD / 2
P0 = (0, −hs) ← talp bal-alsó
P1 = (L_SHAFT,−hs) ← szár-hegy határ alsó
P2 = (L_SHAFT,−hh) ← hegy váll alsó
P3 = (L_TOTAL, 0 ) ← hegycsúcs
P4 = (L_SHAFT,+hh) ← hegy váll felső
P5 = (L_SHAFT,+hs) ← szár-hegy határ felső
P6 = (0, +hs) ← talp bal-felső
Paraméterek:
H_SHAFT = szár magassága = 0.6
H_HEAD = hegy magassága = 1.4
L_SHAFT = szár hossza = 2.5
L_TOTAL = teljes hossz = 3.7
T = vastagság (z) ← csúszkával
03Geometria felépítése
Az extrudált nyíl 3 lap-típusból áll:
Előlap — a profil z = 0 síkban, 5 háromszögre bontva (fülháromszög triangulációval)
Hátlap — ugyanaz z = T síkban, fordított normálissal
Oldallapok — 7 téglalap (minden profil-él egy oldallap), mindegyik 2 háromszög
A profil triangulációja (fülháromszögek, CCW sorrendben):
Előlap (z=0, normális: −Z):
[0] P0→P1→P6 (szár alsó téglalapja, bal fele)
[1] P1→P5→P6 (szár alsó téglalapja, jobb fele)
[2] P2→P4→P3 (hegy háromszöge)
[3] P1→P2→P5 (szár-hegy összekötő alsó)
[4] P2→P4→P5 (szár-hegy összekötő felső)
Htlap (z=T, normális: +Z): fordított sorrend
Minden lapnak saját normálisa van — ez a flat shading feltétele. Ezért minden oldallaphoz külön 4 csúcsot veszünk fel (nem osztjuk meg a szomszéd lapokkal), így a normális minden csúcsnál az adott lap síkjára merőleges.
flatShading: true a MeshPhongMaterial-ban, és computeVertexNormals() helyett computeFaceNormals() + saját normális-buffer.
Fájl
Egyetlen önálló HTML fájl, offline is megnyitható.