2010-03-26 3 views
2

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

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

(Простите мой ужасный photoshoping)

alt text http://www.refuctored.com/coor.png

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

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

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

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

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

ответ

5

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

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

0

в целом:

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

где d представляет собой расстояние от начала координат и тета угол.

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

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

Смежные вопросы