Seite 1 von 1

DOT Produkt berechnen

Verfasst: Mittwoch 2. September 2015, 10:46
von sublist
Hi Leute.

Kann mir jemand erklären wie ich ein DOT Produkt in Python berechne? Numpy?

Code: Alles auswählen

def Barycentric(p, a, b, c):
    v0 = [0, 0, 0]
    v1 = [0, 0, 0]
    v2 = [0, 0, 0]

    v0[0] = b[0] - a[0]
    v0[1] = b[1] - a[1]
    v0[2] = b[2] - a[2]

    v1[0] = c[0] - a[0]
    v1[1] = c[1] - a[1]
    v1[2] = c[2] - a[2]

    v2[0] = p[0] - a[0]
    v2[1] = p[1] - a[1]
    v2[2] = p[2] - a[2]

    d00 = dot(v0, v0)
    d01 = dot(v0, v1)
    d11 = dot(v1, v1)
    d20 = dot(v2, v0)
    d21 = dot(v2, v1)
    denom = d00*d11 - d01*d01

    result = []
    result[0] = (d11*d20 - d01*d21) / denom
    result[1] = (d00*d21 - d01*d20) / denom
    result[2] = 1.0 - result[0] - result[1]
    return result

Re: DOT Produkt berechnen

Verfasst: Mittwoch 2. September 2015, 11:32
von MagBen
sublist hat geschrieben:Kann mir jemand erklären wie ich ein DOT Produkt in Python berechne? Numpy?
numpy.dot

Code: Alles auswählen

import numpy as np

a = np.array([ 1., 2., 3.])
b = np.array([-1., 0., 0.5])

s = np.dot(a,b)
print(s) # Ausgabe 0.5
Mit Numpy kannst Du mit Vektoren rechnen und musst nicht alles komponentenweise machen. Wenn p, a, b, c Numpy-Arrays sind, dann kann man die Funktion Barycentric kürzer und übersichtlicher schreiben

Code: Alles auswählen

def Barycentric(p, a, b, c):
    v0 = b - a
    v1 = c - a
    v2 = p - a
 
    d00 = np.dot(v0, v0)
    d01 = np.dot(v0, v1)
    d11 = np.dot(v1, v1)
    d20 = np.dot(v2, v0)
    d21 = np.dot(v2, v1)
    denom = d00*d11 - d01*d01
 
    result = np.empty((3,), dtype=np.float64)
    result[0] = (d11*d20 - d01*d21) / denom
    result[1] = (d00*d21 - d01*d20) / denom
    result[2] = 1.0 - result[0] - result[1]
    return result

Re: DOT Produkt berechnen

Verfasst: Mittwoch 2. September 2015, 11:45
von sublist
Danke.

Ich sehe gerade ich kann Numpy gar nicht importen. Ich muss mit einer Software arbeiten, bei der ich keine externen Module importieren kann.

Sonst mach ich das Dot Produkt einfach selbst?

Code: Alles auswählen

def dotPrd(v0, v1):
    d = v0[0] * v1[0] + v0[1] * v1[1] + v0[2] * v1[2]
    return d