Пересчет координат при повороте изображения - PullRequest
0 голосов
/ 08 апреля 2019

Представьте себе картину (ссылка на изображения находятся в верхнем левом углу, на картинке, которую я загрузил, это около 0,0 угла). С разными библиотеками легко вращать изображение. Теперь, связанный с изображением, у вас есть конкретная точка, для которой вы должны пересчитать ее координаты относительно поворота, которое вы применили к изображению. Итак, допустим, ваше изображение квадратное, и вы применяете поворот на 90 градусов по часовой стрелке. Ваша точка изначально имеет координаты x = 4, y = 1 и после Вращение должно иметь 3,4.

Правильн ли следующий код для пересчета координат такой точки (или любой другой точки?)? Я сильно сомневаюсь в условиях «если». Интересно, должен ли я применить еще одну операцию, которая включает по модулю.

import numpy as np

def rot(x,y, ang):
  xn=np.cos(ang)*x + np.sin(ang)*y
  yn=-np.sin(ang)*x + np.cos(ang)*y
  return [xn,yn]


x=4
y=1
mpx=4 # width of the image
mpy=4 # height of the image

# 3 rotations of 90 degrees
a=np.arange(2.0*np.pi, 0, -np.pi/2.0) 
print(a)
for i in a:
  xn,yn=rot(x,y,i)

  if(xn<0):
    xn+=mpx
  if(yn<0):
    yn+=mpy

  print("%f %f" %(xn,yn))

enter image description here

1 Ответ

1 голос
/ 08 апреля 2019

После операции поворота вы можете применить эти два шага и удалить условия if:

xn = mpx - xn
yn = abs(yn)

Это должно дать вам правильные результаты для поворотов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...