Fő tartalom
Programozás
3D alakzatok leírása
Kezdhetjük a munkát egy egyszerű alakzattal: a kockával. Habár a tetraédernek kevesebb oldala van, az oldalai nem ortogonálisak, így ez egy kicsit trükkössé teszi. Készítsünk egy 200×200×200 pixeles kockát, aminek a közepe az origó (0, 0, 0).
Nem állunk neki rögtön rajzolni, hanem számokból álló tömböket készítünk, melyek 3D alakzatként írják le az alakzatainkat – ezek a tömbök konkrétan a csúcsainkat és az éleinket írják le.
Csúcsok
A csúcsok tömbjeinek definiálásával kezdjük, ahol minden csúcs egy három számból álló tömb, a csúcsok x, y és z koordinátája:
var node0 = [-100, -100, -100];
var node1 = [-100, -100, 100];
var node2 = [-100, 100, -100];
var node3 = [-100, 100, 100];
var node4 = [ 100, -100, -100];
var node5 = [ 100, -100, 100];
var node6 = [ 100, 100, -100];
var node7 = [ 100, 100, 100];
var nodes = [node0, node1, node2, node3, node4, node5, node6, node7];
Talán észrevetted, hogy a csúcsok a 100 és -100, három helyre történő összes lehetséges sorba rendezését adják ki, és ilyenből összesen 8 van.
Az alábbi vizualizáció egy 2x2x2-es origó középpontú kockának a csúcsait mutatja. Forgasd az egereddel:
Élek
A következő lépésben az éleket definiáljuk, ahol minden él két számból álló tömb lesz. Például, az
edge0
olyan él lesz, ami a node0
és a node1
között van. Azért 0-tól számozunk, mert a tömbök indexelése is nullánál kezdődik. (Az első csúcs értékét úgy kapjuk meg, hogy azt írjuk le, hogy nodes[0]
.)var edge0 = [0, 1];
var edge1 = [1, 3];
var edge2 = [3, 2];
var edge3 = [2, 0];
var edge4 = [4, 5];
var edge5 = [5, 7];
var edge6 = [7, 6];
var edge7 = [6, 4];
var edge8 = [0, 4];
var edge9 = [1, 5];
var edge10 = [2, 6];
var edge11 = [3, 7];
var edges = [edge0, edge1, edge2, edge3, edge4, edge5, edge6, edge7, edge8, edge9, edge10, edge11];
A trükkös rész az, hogy megtaláld melyik csúcsot melyikkel kell összekötni. Itt egy vizualizációja azoknak az éleknek, amik összekötésével egy kockát kapunk:
Szeretnél részt venni a beszélgetésben?
Még nincs hozzászólás.