Я предполагаю, что это простой вопрос, но я получаю некоторые странные результаты с моим текущим кодом, и у меня нет математического фона, чтобы полностью понять, почему. Моя цель проста, как указано в названии: я просто хочу найти точку на некотором расстоянии и в углу от центральной точки.
Мой текущий код:
Point centerPoint = new Point ( 0, 0 );
Point result = new Point ( 0, 0 );
double angle = 0.5; //between 0 and 2 * PI, angle is in radians
int distance = 1000;
result.Y = centerPoint.Y + (int)Math.Round( distance * Math.Sin( angle ) );
result.X = centerPoint.X + (int)Math.Round( distance * Math.Cos( angle ) );
В целом, это работает довольно разумно, но я получаю проблемы в разных точках, особенно когда угол соответствует точкам отрицательной оси x и y. Ясно, что я делаю что-то не так - мысли о том, что это такое?
ОБНОВЛЕНИЕ: Это была моя ошибка, этот код работает отлично - некоторые выбросы, которые не работали, были на самом деле из-за ошибки в том, как вычисляется угол для 1.5PI. Я думал, что проверил это достаточно хорошо, но, очевидно, этого не сделал. Спасибо всем за их время, надеюсь, что рабочий код выше окажется полезным для кого-то еще.