Benutzer-Werkzeuge

Webseiten-Werkzeuge


ws1920:cd_02

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
ws1920:cd_02 [2020/03/25 17:05]
Zetraeder angelegt
ws1920:cd_02 [2020/03/25 17:09] (aktuell)
Zetraeder
Zeile 2: Zeile 2:
  
 ====== Code: Arbeitstermin 02 ====== ====== Code: Arbeitstermin 02 ======
-**12.12.2019**+**05.12.2019**
  
 [[ws1920:​cd_01|<<​]] | [[ws1920:​scutoids|Home]] | [[ws1920:​arbeitstermin_02|Text]] | [[ws1920:​cd_03|>>​]] [[ws1920:​cd_01|<<​]] | [[ws1920:​scutoids|Home]] | [[ws1920:​arbeitstermin_02|Text]] | [[ws1920:​cd_03|>>​]]
  
 Aktuelle Programmversion Aktuelle Programmversion
 +
 +<code python>
 +
 +# -*- coding: utf-8 -*-
 +"""​
 +Created on Thu Nov 05 14:16:13 2019
 +
 +@author: Lukas
 +"""​
 +
 +import numpy as np
 +import math
 +from math import *
 +import turtle
 +import random as rn
 +from scipy.spatial import distance
 +
 +turtle.speed(100)
 +turtle.ht()
 +#
 +
 +anzahlKerne = 10
 +
 +class Gerade(object):​
 +    ovekt = (0,0,0)
 +    rvekt = (0,0,0)
 +    ​
 +
 +
 +
 +
 +
 +###   ​Zuerst sollen n mal random punkte (x,y) in einem Feld maxx*maxy generiert werden und einer Liste zugewiesen werden
 +
 +def generiereKernListe(n,​maxx,​maxy,​abstand):​
 +    ​
 +    liste=[]
 +    for c in range(n):
 +        x = rn.randint(-maxx,​maxx)#​rn.uniform(0,​maxx)
 +        y = rn.randint(-maxy,​maxy)#​rn.uniform(0,​maxy)
 +        ​
 +        #if (len(liste) > 0):            ​
 +        #    try:
 +        #        for x in len(liste):
 +        #            if (distance.euclidean(liste[x],​(x,​y)) < abstand == True):
 +        #                print("​good"​)
 +        #            else:
 +        #                raise Exception("​Fehler"​)
 +        #        liste.append((x,​y))
 +        #    except:
 +        #        x = rn.uniform(0,​maxx)
 +        #        y = rn.uniform(0,​maxy)
 +        #        continue
 +        #    break
 +        #else: liste.append((x,​y))
 +        liste.append((x,​y))
 +    return liste
 +
 +ker = generiereKernListe(anzahlKerne,​300,​300,​0.1)
 +print("​Kerne : ",ker)
 +
 +###   ​Zunächst werden Funktionen deklariert, mit deren Hilfe das Programm Linien zwischen den Punkten untersucht
 +
 +def zeichneLinie(start,​ende):​
 +    #   ​zeichnet eine Linie zwischen start und ende mithilfe einer turtle
 +    ​
 +    turtle.penup()
 +    turtle.goto(start)
 +    turtle.pendown()
 +    turtle.goto(ende)
 +
 +    ​
 +def richtungLinie(start,​ende):​
 +    #   gibt den Richtungsvektor von start nach ende aus
 +    ​
 +    richtung ​ = np.subtract(ende,​start)
 +    return richtung
 +
 +def schnittTest(g1,​g2):​
 +    return np.linalg.solve([[g2.rv[0],​-g1.rv[0]],​[g2.rv[1],​-g1.rv[1]]],​[[g1.ov[0]-g2.ov[0]],​[g1.ov[1]-g2.ov[1]]])
 +
 +
 +z = np.zeros(2)
 +#​print(np.array([1,​2]))
 +
 +a = (0,0)
 +b = (30,30)
 +c = (50,0)
 +d = (50,70)
 +
 +#Linien = [a,b,c,d]
 +
 +#​zeichneLinie(a,​b)
 +#​zeichneLinie(c,​d)
 +#​print(richtungLinie(c,​b))
 +
 +listeGeraden = []
 +
 +for i in range(anzahlKerne):​
 +    for k in range(anzahlKerne):​
 +        if (i!=k):
 +            zeichneLinie(ker[i],​ker[k])
 +        ​
 +            #name = str(i)+"​ und "​+str(k)
 +            eineGerade = Gerade()
 +            eineGerade.ovekt = np.array(ker[i])
 +            eineGerade.rvekt = np.subtract(ker[k],​ker[i])
 +            ​
 +            listeGeraden.append(eineGerade)
 +            #​print(name)
 +
 +
 +print(listeGeraden)
 +print(listeGeraden[0].ovekt)
 +print(listeGeraden[0].rvekt)
 +print(listeGeraden[0].rvekt[0])
 +
 +print(schnittTest(listeGeraden[0],​listeGeraden[1]))
 +
 +#​zeichneLinie(ker[0],​ker[1])
 +#​zeichneLinie(ker[1],​ker[2])
 +#​zeichneLinie(ker[2],​ker[0])
 +
 +#​zeichneLinie((10,​40),​(50,​150))
 +
 +
 +
 +
 +###     das eigentlihe programm
 +
 +
 +
 +
 +
 +
 +turtle.done()
 +
 +</​code>​
 +
 +----
ws1920/cd_02.1585152302.txt.gz · Zuletzt geändert: 2020/03/25 17:05 von Zetraeder