Dies ist eine alte Version des Dokuments!
Wir haben versucht, eine Funktion zu schreiben, die eine ihr übergebene Box in das bereits erwähnte Dreiecksmodell übersetzt.
Unser bisheriger Code lautet wie folgt:
Da die Position „pos“ den Mittelpunkt der Box beschreibt, wird hier jeder Eckpunkt vom Mittelpunkt aus berechnet:
A = mybox.pos.x + 1/2 * mybox.size.x, mybox.pos.y + 1/2 * mybox.size.y, mybox.pos.z + 1/2 * mybox.size.z B = mybox.pos.x + 1/2 * mybox.size.x, mybox.pos.y - 1/2 * mybox.size.y, mybox.pos.z + 1/2 * mybox.size.z C = mybox.pos.x - 1/2 * mybox.size.x, mybox.pos.y + 1/2 * mybox.size.y, mybox.pos.z + 1/2 * mybox.size.z D = mybox.pos.x - 1/2 * mybox.size.x, mybox.pos.y - 1/2 * mybox.size.y, mybox.pos.z + 1/2 * mybox.size.z E = mybox.pos.x + 1/2 * mybox.size.x - mybox.size.z, mybox.pos.y + 1/2 * mybox.size.y, mybox.pos.z - 1/2 * mybox.size.z F = mybox.pos.x + 1/2 * mybox.size.x - mybox.size.z, mybox.pos.y - 1/2 * mybox.size.y, mybox.pos.z - 1/2 * mybox.size.z G = mybox.pos.x - 1/2 * mybox.size.x + mybox.size.z, mybox.pos.y + 1/2 * mybox.size.y, mybox.pos.z - 1/2 * mybox.size.z H = mybox.pos.x - 1/2 * mybox.size.x + mybox.size.z, mybox.pos.y - 1/2 * mybox.size.y, mybox.pos.z - 1/2 * mybox.size.z I = mybox.pos.x, mybox.pos.y - 1/2 * mybox.size.y, mybox.pos.z + 1/2 * mybox.size.z J = mybox.pos.x, mybox.pos.y + 1/2 * mybox.size.y, mybox.pos.z + 1/2 * mybox.size.z
Hier erstellen wir Listen, die je drei Punkte vereinigen, die später die Eckpunkte der Dreiecke bilden:
# Listen von je drei Punkten, aus denen ein Dreieck gemacht werden soll punkte_draufsicht =[[F,B,I],[H,F,I],[D,H,I]] punkte_Rechtecke =[[A,B,D],[A,C,D]] punkte_Rechtecke_innen =[[E,F,G],[F,G,H]] punkte_Boden = [[A,E,J],[E,J,G],[J,G,C]]
Hier benutzen wir eine Funktion, die Dreiecke mit den ihr übergebenen Eckpunkten graphisch darstellt:
def zeichne_Dreieck(x,y,z): tri = faces(pos = [x,y,z],color=color.red) tri.make_twosided() tri.make_normals() for Dreieck in punkte_draufsicht: zeichne_Dreieck(Dreieck[0],Dreieck[1],Dreieck[2]) for Dreieck in punkte_Rechtecke: zeichne_Dreieck(Dreieck[0],Dreieck[1],Dreieck[2]) for Dreieck in punkte_Rechtecke_innen: zeichne_Dreieck(Dreieck[0],Dreieck[1],Dreieck[2]) for Dreieck in punkte_Boden: zeichne_Dreieck(Dreieck[0],Dreieck[1],Dreieck[2])