vbstreets conferințe - Vezi subiect - calcularea normală

Nadybal Sunt la discul vechi, cu o traducere în limba engleză, nu este foarte clar, dar este clar: Avionul are o normală și în mod normal la nodurile. Înainte de a putea calcula normală pentru primele trei în avion, avem nevoie pentru a calcula fața normală prima. Facem acest lucru prin intermediul unui punct de multiplicare a valorilor diferență x, y și z. Ar fi ca acest lucru în codul:

Returneaza un punct în spațiu 3D, care exprimă direcția. Această direcție de la început (0,0,0) până la punctul de normal. Această linie, care ar putea fi realizate din aceste puncte este direcția noastră. Această valoare este normală pe care le-am găsit acum, pot fi folosite în codul nostru, dar nu este foarte convenabil. Deoarece în mod normal - este doar direcția, indiferent unde în spațiul 3D este plasat punctul normal, și cât de departe este de la (0,0,0). Exemplu - punctul normal (1000,0,0). Acest punct are aceeași direcție ca punct normal (1,0,0). De fapt, în timpul depozitării lungimii noastre normale egală cu o mai confortabil, atunci când vrem să calculeze unghiul dintre normalele. Dar cum putem obține lungimea noastră vector astfel încât să fie egal cu unitatea? Simplu, vom împărți prin lungimea. Acum, ne găsim valorile noastre lungi și se divid, spunând:

lungime = Sqr ((nx * nx) + (ny * ny) + (nz * nz))
nx = nx / lungime
ny = ny / lungime
nz = nz / lungime

Acest lucru este atât pentru normalele faciale normale, dar relativ vertex, noi încă nu am învățat încă. Ei bine, acum avem un ecran cu vectorul normal de la un unghi de 90 de grade. Prin urmare, în cele din urmă, Vertex normale trebuie să moștenesc aceeași regulă. Dar cum putem determina în cazul în care punctul de 90 de grade, etofakticheski orice direcție, la toate. Ceea ce avem nevoie aici, în clădire, în care sunt calculate toate suprafețele normale. Apoi, pentru fiecare nod, vom rula prin întreaga suprafață, și de a afla, „utilizare“ în cazul în care nodul curent de suprafață. Dacă da, adăugați suprafața normală la vârful normală, face același lucru cu următorul, și așa mai departe. Atunci când se face acest lucru, împărțiți vârful normal la numărul de „hit-uri“ pe care le-ați avut înainte (cât de multe avioane utilizate de sus). Aceasta înseamnă că, ca urmare a valorii normale - echipamente destinate normalele normale din care stau la 90 de grade față de planul, și, prin urmare, rezultatul normal ar avea un unghi drept. De fapt, poți vorbi doar despre un unghi drept, nu există nici o modalitate de a raporta dacă există sau nu, punctele vectoriale normale koorektno, deoarece fiecare direcție - direcție inversă. Cu toate acestea, suprafața normală poate fi specificată în două moduri, care se opun. Acest lucru duce doar la opusul normal, adică, (0,0, -1) - opus (0,0,1) și așa mai departe. Ea nu face nici un rău mare, și nu fericit foarte des.