2010-01-29 5 views
0

У меня есть начальная точка (x1, y1) и желаемая длина и угол линии.Ограничение рисунка линии до 45 градусов углов

Если углы были направлениями, 0 градусов - W, 90 - N, 180 - E и 270 - S. Я могу изменить это, если необходимо.

Как использовать начальную точку, длину и угол для определения конечной точки (x2, y2)?

+0

В каком направлении увеличиваются x и y? Я предполагаю, что x увеличивается на восток, а y увеличивается на юг, как на экране? Или y увеличивается на север, как в математике? –

+0

Да, это на экране, поэтому ваше первое предположение верно. – knuckfubuck

+1

Характерно, что E равно 0 и увеличивается против часовой стрелки. –

ответ

4

Для экрана:

Для W = 0, N = 90, Е = 180, S = 270:

x2 = x1 - length * cos(angle) 
y2 = y1 - length * sin(angle) 

При Е = 0, N = 90, W = 180, S = 270:

x2 = x1 + length * cos(angle) 
y2 = y1 - length * sin(angle) 

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

+0

Я изменил свои углы, чтобы начать с 0, равным E, и увеличивая против часовой стрелки, как указано выше. Так ли это должно работать с этим уравнением для экрана? – knuckfubuck

+0

Я добавил ответ для обоих способов. –

+0

Если вы определяете E как 0 и идите по часовой стрелке, вы можете использовать 'abc' ответ. –

7

x2 = x1 + длина сов (угол)
у2 = у1 + длина
Sin (угол)

В этом случае угол находится против часовой стрелки, увеличивается с 0, указывая к положительному х. Ось x возрастает вправо, а ось y - вверх.

+0

+1 для указания осей. –