2016-04-12 43 views
0

Oyunda bir 2D oyun yapmak istiyorum ve bunu yapmak için matematiksel Matrisleri kullanmak istiyorum. Düşünüyorum doğru düşünüyorum ama bir sorunum var. İşte bu yüzden: Rastgele bir nokta yapıp, vektörün uzunluğunu (0,0'dan) sayıyorum, sonra matris transplasyon denklemini kullanarak (2D), bu noktayı taşımak istiyorum, diyelim ki +1 derecesine. Ve sonuç aldım, ama bekle, transplated vektörün uzunluğu neden diğerinden farklı? u görebileceğiniz gibiSayısal python'da matris dönüşü, farklı vektörlerin uzunluğu

import numpy 
import math 
import random 

#length of wector  
def R(w0): 
    #start point coordinates 
    x0 = y0 = 0 
    #new point coordinates  
    x1 = w0[0][0] 
    y1 = w0[1][0] 
    r = math.sqrt((x1 - x0)**2 + (y1-y0)**2) 
    return r 

#matrix rotation by 1 deg 
rad = math.pi/180 
Tm = numpy.matrix([[math.acos(rad),-math.asin(rad)], [math.asin(rad), math.acos(rad)]]) 

#w0 
x0 = random.randint(1, 5) 
y0 = random.randint(1, 5) 

w0 = numpy.matrix([[x0],[y0]]) 
r0 = R(w0) 

print "x0: ",w0[0][0], "y0: ",w0[1][0], "r0: ", r0 
#w0' 

w1 = Tm * w0 
r1 = R(w1) 
print "x1: ",w1[0][0], "y1: ",w1[1][0], "r1: ", r1 

, r0 ve r1 diffrent şunlardır:/

cevap

1

Sen arccos ve arcsin yerine kullandığınız tüm cevaplar thx :) İşte

benim kodudur, takdir edilecektir döndürme matrisinizde cos ve sin. Bunu düzeltin ve iki vektörün olması gerektiği gibi aynı uzunlukta.

Ayrıca vektör uzunluğu için np.linalg.norm kullanabilirsiniz.

+0

thx! şimdi iyi çalışıyor: D –