Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

ws1920:cd_02

Code: Arbeitstermin 02

05.12.2019

<< | Home | Text | >>

Aktuelle Programmversion

# -*- 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()

ws1920/cd_02.txt · Zuletzt geändert: 2020/03/25 17:09 von Zetraeder