Вопрос
Я разрабатываю приложение в XNA, которое рисует случайные пути.К сожалению, я не разбираюсь в построении графиков, так что я немного застрял.Моему приложению необходимо выполнить следующее:
- Выберите случайный угол из моего начала координат (0,0), что очень просто.
- Нарисуйте круг относительно этой исходной точки на расстоянии 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 - расстояние от начала координат, а тета - угол.
Изучите Теорема Пифагора.Тогда этот поток должны быть более конкретные детали для вас.