Ich versuche die Flächennormale zu berechnen. Aber irgendwie funktioniert das nicht. Ich denke, dass ich das Kreuzprodukt richtig berechnet habe. Die Normierung hab ich noch nicht durchgeführt. Erstmal suche ich einen Vektor der orthogonal zu Fläche steht. Wahrscheinlich hab ich einen Fehler in der Ableitungsberechnung. Kann mir jemand helfen? Gruß kame
Code: Alles auswählen
from visual import curve, scene, sphere, color
from math import *
xweite=9
zweite=9
ebene = []
for x in range(xweite):
ebene.append([])
for z in range(zweite):
ebene[x].append(sin(x)+sin(z)) #FUNKTION
for x in range(xweite-1):
for z in range(zweite-1):
curve(pos=[(x,ebene[x][z],z),(x+1,ebene[x+1][z],z)],radius=.1,color=color.green)
curve(pos=[(x,ebene[x][z],z),(x,ebene[x][z+1],z+1)],radius=.1,color=color.green)
stellex = 3
stellez = 2
stelley = sin(stellex)+sin(stellez)
#normalenvektor berechnen
#1. genauer Weg: durch Ableitung
#2. einfacher Weg: folgendes x und z-Glied betrachten
#Ich werde versuche Variante 1 zu programmieren
anfang = (stellex,stelley,stellez)
#Ableitung selbst berechnet
fu = [cos(stellex),0,0] #Funktion auch hier aendern
fw = [0,0,cos(stellez)] #Funktion auch hier aendern
fv = [0,0,0] #wird gleich veraendert
#Kreuzprodukt von fw und fu
fv[0] = fw[1]*fu[2]-fu[1]*fw[2]
fv[1] = fw[2]*fu[0]-fu[2]*fw[0]
fv[2] = fw[0]*fu[1]-fu[0]*fw[1]
ende = (fu[0],fv[1],fw[2])
print(ende)
normale = curve(pos=[anfang, ende],radius=.05)