[Python]

0664jester

Mitglied
hallo,

Code:
P1 = [1,3]
P2 = [3,2]
P3 = [2,1]

Ich versuche die drei punkte, die ich dann als Polygon verwende in einer Funktion zu
komplexen zahlen umzuwandeln und anschließend als neues Polygon auszugeben.

Dabei werden die komplexen zahlen mit e^alpha (alpha ist ein winkel in radiant) multiplitziert um, sie zu drehen.

Code:
def compl(X,Y):
    complex(X,Y)
    z =  (real(X)+imag(Y))* (math.e)^((math.pi/2))


Irgendwie funktioniert das nicht mit x, y parameter, mir fällt da nichts besseres ein.

Meine idee wäre:
ich mache einen String
P([x1,y1],[x2,y2],[x3,y3],...)

und greife mit eine art argc auf die elemente zu.
G[1] = P[0] ---> übergebe die parameter



Gruß,
jester
 
Zuletzt bearbeitet:
Code:
matrix = [[1,3],[2,-2],[1,1],[1,3]]                    //string

i=0                                                                  //zerlege den string
while i<len(matrix):
    print matrix[i][0]
    compl(matrix[i][0],matrix[i][1],30)              //zeige auf den unterschiedliche x und y werten...
    i=i+1

def compl(X,Y,alpha):                                                   //alpha ist ein winkel der 
    real = (real(X))* (math.e)^(math.radians(alpha))    //fehler: complex kann nicht mit den eckigen klammern umgehen
    imag = (imag(Y))* (math.e)^(math.radians(alpha))
    matrixnew = [real, imag]                             //weiß nicht ob das stimmt...

Bei der whileschleife verträgt er nicht [i][0] und [i][1].
Was kann ich anstattdessen tun?


wie kann ich ein eindimensionales array in ein 2-dimensionales umbauen?
 
Zuletzt bearbeitet:
Die loesung:


Code:
def rotate(X,Y,alpha):
    z = X + Y * i
    result = z * e^(i*math.radians(alpha))
    v=[real(result),imag(result)]

    return v



matrix = [[1,3],[2,-2],[1,1],[5,3]]

L=[]
n=0
while n<len(matrix):
    L.append(rotate(matrix[n][0],matrix[n][1],45))
    n=n+1

   
polygon(L)+polygon(matrix, color='red')

sage kommt mit i durcheinander da man es sonst als I fuer komplexe zahlen verwendet
 
Zuletzt bearbeitet:
Zurück