Найти координату по углу - PullRequest
2 голосов
/ 26 марта 2010

Я разрабатываю приложение в XNA, которое рисует случайные пути. К сожалению, я не в курсе графиков, поэтому я немного застрял. Мое приложение должно сделать следующее:

  1. Выберите случайный угол из моего источника (0,0), что просто.
  2. Нарисуйте окружность относительно этого источника на расстоянии 16 пикселей (или любое расстояние, которое я укажу) под углом, указанным выше.

(извините за мой ужасный фотошоп)

альтернативный текст http://www.refuctored.com/coor.png

Второй круг в (16,16) будет представлять собой угол 45 градусов в 16 пикселях от моего источника.

Я хотел бы иметь метод, в котором я передаю свое расстояние и угол, который возвращает точку на графике. т.е. * * 1 016

private Point GetCoordinate(float angle, int distance)
{
   // Do something.
   return new Point(x,y);
}

Я знаю, что это просто, но, черт возьми, я совершенно не в курсе графиков. Любая помощь?

Спасибо, George

Ответы [ 4 ]

5 голосов
/ 26 марта 2010

Если угол в градусах, сначала выполните:

angle *= Math.PI / 180;

Тогда:

return new Point(distance * Math.Cos(angle), distance * Math.Sin(angle));

Кстати, точка в (16, 16) находится не на 16 пикселей от начала координат, а sqrt (16 ^ 2 + 16 ^ 2) = sqrt (512) = ~ 22,63 пикселей.

1 голос
/ 26 марта 2010
private Point GetCoordinate(float angle, int distance)
{
  float x = cos(angle) * distance;
  float y = sin(angle) * distance;
  return new Point(x, y);
}

Обратите внимание, что тригонометрические функции, вероятно, принимают радианы. Если ваш угол в градусах, разделите на 180 / Pi.

0 голосов
/ 26 марта 2010

Изучите теорему Пифагора . Тогда эта тема должна иметь более подробную информацию для вас.

0 голосов
/ 26 марта 2010

в целом:

x = d * cos(theta)
y = d * sin(theta)

Где d - расстояние от начала координат, а тета - угол.

...