0
0 комментариев

Здравствуйте! Скажите пожалуйста, каким образом правильно повернуть 2d объект? В данный момент есть код —

def rotate(self, teta, center=Point(0, 0)): # center - точка, вокруг которой происходит вращение
    ang = pi*teta/180
 
    self.x -= center.x
    self.y -= center.y
 
    self.x =  self.x*cos(ang)+self.y*sin(ang)
    self.y = -self.x*sin(ang)+self.y*cos(ang)
 
    self.x = self.x*cos(ang)-self.y*sin(ang)
    self.y = self.x*sin(ang)+self.y*cos(ang)
 
    self.x += center.x
    self.y += center.y

При попытке его применить (см. код ниже), вращение не только происходит только в промежутке от 90 до -90 градусов, но и с изменением длинны линии.

point1 = (Vector(0,0)+self.player.pos)
point1.rotate(self.player.angle, self.player.pos)
point1 = point1.turp() #turp - метод вектора, возвращающий его в формате (x, y)
 
point2 = (Vector(20,0)+self.player.pos)
point2.rotate(self.player.angle, self.player.pos)
point2 = point2.turp()
 
self.canv.create_line(point1, point2, fill = 'red')


Добавить комментарий