Benutzer-Werkzeuge

Webseiten-Werkzeuge


ws1920:arbeitstermin_08

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
ws1920:arbeitstermin_08 [2020/02/09 20:49]
Zetraeder
ws1920:arbeitstermin_08 [2020/04/02 15:36] (aktuell)
Zetraeder [Achter Arbeitstermin]
Zeile 4: Zeile 4:
 **30.01.2020** **30.01.2020**
  
-[[ws1920:​update_01|<<​]] | [[ws1920:​scutoids|Home]] | [[ws1920:​update_02|>>​]]+[[ws1920:​update_01|<<​]] | [[ws1920:​scutoids|Home]] | [[ws1920:​cd_08|Code]] | [[ws1920:​update_02|>>​]]
  
 Heute haben wir versucht, grundlegende Strukturen in Blender zu implementieren. Hierfür haben wir uns mit der Erstellung von Meshes durch Python in Blender informiert und eine Methode generateObj geschrieben,​ mit der wir Objekte einfach erstellen können, ohne uns jedes Mal mit den spezifischen Blender Python Befehlen herumschlagen zu müssen. Heute haben wir versucht, grundlegende Strukturen in Blender zu implementieren. Hierfür haben wir uns mit der Erstellung von Meshes durch Python in Blender informiert und eine Methode generateObj geschrieben,​ mit der wir Objekte einfach erstellen können, ohne uns jedes Mal mit den spezifischen Blender Python Befehlen herumschlagen zu müssen.
 +
 Die Parameter machen hierbei eine reibungslose Benutzung möglich: Die Parameter machen hierbei eine reibungslose Benutzung möglich:
   *name  - Namen des Objektes   *name  - Namen des Objektes
-  *verts - die Punkte, die das Objekt beschreiben (in Blender werden diese vertecies ​genannt)+  *verts - die Punkte, die das Objekt beschreiben (in Blender werden diese vertices ​genannt)
   *faces - eine Liste von verschiedenen Punktmengen,​ die die Flächen des Objektes beschreiben   *faces - eine Liste von verschiedenen Punktmengen,​ die die Flächen des Objektes beschreiben
   *loc   - die Position des Objektes als xyz - Koordinate   *loc   - die Position des Objektes als xyz - Koordinate
  
-<code python>​ +{{ :ws1920:blender_first_try.jpg?144|}}
- +
-import bpy +
-from random import * +
-from math import * +
- +
- +
- +
-class Sphere    +
-    def __init__(self,​ pos, radius): +
-        self.pos = pos +
-        self.radius = radius +
-     +
-    def punktInKugel(self,​ p): +
-        if (abstandPunkte(self.pos,​p) < self.radius):​ print(">>​ Punkt in Kugel"​) +
-        else: print(">>​ Punkt außerhalb Kugel"​) +
-         +
-def abstandPunkte(p1,​p2):​ +
-    a = sqrt(((p1[0]-p2[0])**2) + ((p1[1]-p2[1])**2) + ((p1[2]-p2[2])**2)) +
-    return a +
- +
-def genPunkt(pos):​ +
-    verts = [(0.1,​0.1,​0.1),​(-0.1,​0.1,​0.1),​(-0.1,​-0.1,​0.1),​(0.1,​-0.1,​0.1) +
-            ,​(0.1,​0.1,​-0.1),​(-0.1,​0.1,​-0.1),​(-0.1,​-0.1,​-0.1),​(0.1,​-0.1,​-0.1)] +
-    faces = [(0,​1,​2,​3),​(4,​5,​6,​7),​(0,​1,​4,​5),​(1,​2,​4,​5),​(2,​3,​6,​7),​(3,​0,​7,​4)] +
-    generateObj("​Punkt",​verts,​faces,​pos) +
- +
-def generateObj(name,​verts,​faces,​loc):​ +
-    mymesh = bpy.data.meshes.new(name) +
-    myobject = bpy.data.objects.new(name,​mymesh) +
- +
-    myobject.location = loc #(0,0,0) #​bpy.context.scene.cursor.location +
-    bpy.context.collection.objects.link(myobject) +
- +
-    mymesh.from_pydata(verts,​[],​faces) +
-    mymesh.update(calc_edges=True) +
-     +
-     +
- +
-#v = [(-10,​0,​0),​(10,​10,​0),​(10,​-10,​0),​(0,​0,​10)] ​    +
-     +
-#f = [(0,​1,​2),​(1,​2,​3),​(2,​3,​0),​(3,​0,​1)] +
-     +
-#​generateObj("​tetraeder",​ v, f) +
- +
- +
-#   ​Variablen +
-anzahlKerne = 10    #   ​anzahl der Kerne, die generiert werden sollen +
-ker = []            #   Liste mit zufälligen Kernen drin +
- +
- +
- +
-#   Setup Kerne +
-for i in range(0, anzahlKerne):​ +
-    x = randint(0,​10);​ +
-    y = randint(0,​10);​ +
-    z = randint(0,​10);​ +
-     +
-    ker.append((x,​y,​z)) +
-     +
-print(ker) +
-for i in ker: +
-    genPunkt(i) +
- +
-#   ​Überprüfung,​ ob Kerne auf einem Kreis -> dann diese Tetraeder bauen +
-for i in range(0, len(ker)):​ +
-    for j in range(i+1, len(ker)):​ +
-        for k in range(j+1, len(ker)):​ +
-            for l in range(k+1, len(ker)):​ +
-                 +
-                verts = (ker[i], ker[j], ker[k], ker[l]) +
-                faces = [(0,​1,​2),​(1,​2,​3),​(2,​3,​0),​(3,​0,​1)] +
-                 +
-                generateObj("​Tetraeder",​ verts, faces, (0,0,0))+
  
-</​code>​+Außerdem haben wir einen ersten Versuch getätigt, eine Delaunay-Tetraedisierung zu generieren. Dies klappt insofern, dass es von außen recht überzeugend aussieht. Leider klassifiziert das Programm noch nicht, sondern zeichnet lediglich alle Möglichkeiten der Bildung von Tetraeder aus der gegebenen Punktmenge.\\ (Klicke das Bild für die Originalgröße an)
  
 ---- ----
  
ws1920/arbeitstermin_08.1581277744.txt.gz · Zuletzt geändert: 2020/02/09 20:49 von Zetraeder