Вопрос

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

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

(Извините за мою ужасную фотосессию)

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

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

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

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

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

Спасибо, Джордж

Это было полезно?

Решение

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

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 пикселей.

Другие советы

private Point GetCoordinate(float angle, int distance)
{
  float x = cos(angle) * distance;
  float y = sin(angle) * distance;
  return new Point(x, y);
}

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

в целом:

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top