Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

ws1617:dreieckologie_12.01.17

12.01.2017

Heute, wie auch in der letzten Woche beschäftigten wir uns weiter mit der Optimierung der Triangulierung der Boxen. Statt wie anfänglich die Flächen in drei Dreiecke zu teilen, änderten wir den Code in der letzten Woche so, dass wir nun lediglich die Eckpunkte miteinander verbinden und somit zwei gleich große Dreiecke entstehen. Außerdem werden nun die Wände mit rechten Winkeln generiert und nicht wie zuvor mit abgeschnittenen Ecken.

Heute haben wir im Besonderen mit dem stl-Format beschäftigt, das nötig ist, damit der 3d-Drucker unser Modell drucken kann. Wir versuchten unseren Code dahingehend anzupassen. Im Folgenden sind die geänderten Codestellen zu sehen. Der Code funktioniert noch nicht.

 
import numpy as np
import stl
from stl import mesh
 
mesh = stl.mesh.Mesh
 
def box_in_dreiecke(mybox):
 
    e = mybox.pos.x + 1/2 * mybox.size.x, mybox.pos.y + 1/2 * mybox.size.y, mybox.pos.z + 1/2 * mybox.size.z
    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
    h = 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
    f = mybox.pos.x + 1/2 * mybox.size.x, 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.pos.y + 1/2 * mybox.size.y, mybox.pos.z - 1/2 * mybox.size.z
 
    # Listen von je drei Punkten, aus denen ein Dreieck gemacht werden soll
    punkte_draufsicht =[[e,g,h],[f,e,g]]
    punkte_Rechtecke =[[f,g,c],[f,c,b]]
    punkte_Rechtecke_innen =[[d,a,h],[a,h,e]]
    punkte_Boden = [[a,b,c],[a,c,d]]
    punkte_Seite1 = [[c,d,g],[d,g,h]]
    punkte_Seite2 = [[a,b,e],[b,e,f]]
 
    alledreiecke= [punkte_draufsicht, punkte_Rechtecke, punkte_Rechtecke_innen, punkte_Seite1, punkte_Seite2]
    zaehler = 12
    np.zeros(zaehler, dtape = mesh.Mesh.dtype)
    q = 0
    while q < len(alledreiecke):
        for Dreieck in alledreiecke[q]:
            mesh.vector[Dreieck] = np.array([[alledreiecke[q].x.x, alledreiecke[q].x.y, alledreiecke[q].x.z],
                                             [alledreiecke[q].y.x, alledreiecke[q].y.y, alledreiecke[q].y.z],
                                             [alledreiecke[q].z.x, alledreiecke[q].z.y, alledreiecke[q].z.z]])
        q += 1
ws1617/dreieckologie_12.01.17.txt · Zuletzt geändert: 2017/01/12 17:13 von SoenkeRoos96