Как мне правильно двигать точку на декартовых координатах по окружности?

Здравствуйте, я не понимаю как двигать точку по окружности на декартовых координатах, я делал так:
x = x*cos(a) - y*sin(a)
y = x*sin(a) + y*cos(a)

но этот способ вращает точку относительно начала координат. Как мне сделать так, чтоб точка вращалась относительно той точки, которую я сам задам?
  • Вопрос задан
  • 2860 просмотров
Решения вопроса 1
ManWithBear
@ManWithBear
Swift Adept, Prague
Просто передвиньте начало координат во вторую точку.

Для размышлений:
Начало координат это (0;0). Поворот это:
x = (x-0)*cos(a) - (y-0)*sin(a) + 0
y = (x-0)*sin(a) + (y-0)*cos(a) + 0

Дальше совсем чуть-чуть подумайте
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Я делал вращение Луны вокруг Земли, одновременно с вращением Земли вокруг Солнца, поэтому подскажу.

Вот вращение Луны относительно Земли. Разберитесь, вроде должно быть все понятно.

xx и yy - координаты Луны

// TrackBar1->Position — скорость вращения. Не обращайте внимания. Можете поставить 1.
xx = xx * cos(M_PI / 31.05819323 * TrackBar1->Position) + yy * sin(M_PI / 31.05819323 * TrackBar1->Position);

yy = -xx * sin(M_PI / 31.05819323 * TrackBar1->Position) + yy * cos(M_PI / 31.05819323 * TrackBar1->Position);

Image1->Canvas->Pen->Color = clGray;
Image1->Canvas->Brush->Color = clGray;

Image1->Canvas->Ellipse(
   width_window / 2 - earth_xx - xx - radius_moon, 
   height_window / 2 - earth_yy - yy - radius_moon, 
   width_window / 2 - earth_xx - xx + radius_moon, 
   height_window / 2 - earth_yy - yy + radius_moon
);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы