2014-09-19 4 views
0

Данный центр окружности: vectorA и другой вектор на периметре круга: vectorB, как вы можете определить более короткий маршрут для вектора B для перевода в другую точку периметра круга, которая является переменной : vectorC? Будет ли более короткий маршрут вращаться по часовой стрелке или против часовой стрелки?Определить направление вращения/направление/переменную точку на круге

Если это помогает думать о часах. Если время является случайной точкой на периметре часов, например. 6, а положение минутной стрелки известно, например. 4. Нужно ли вращать ручку вокруг центральной точки часов по часовой стрелке или против часовой стрелки, чтобы достичь случайной точки (6)?

Смотрите также:
Vec1 = Circle centre, Vec2 = mousepos, find the point on the circle between Vec1, Vec2

ответ

2

Просто вычислить направление намотки треугольника ABC

circle point dir

так что если вы вычислить нормальный n=(B-A)x(C-B) где x перекрестно продукт затем n.z знак определить направление.

n.z = ((B.x-A.x)*(C.y-B.y)) - ((B.y-A.y)*(C.x-B.x)) 
if (n.z<0.0) dir=CW else dir=CCW; 

, что все, что вам нужно (CW означает, по часовой стрелке и против часовой стрелки против часовой стрелки) из грубых, если ваша система координат отличается, то вращение может быть сведена на нет

[Примечания]

if (n.z==0) то точки B,C либо противоположны, либо идентичны, поэтому направление не имеет значения, поскольку в обоих направлениях угловое расстояние одинаковое

+0

Я не уверен, что такое n или z, или почему вы используете точечную нотацию. Ни на вашей диаграмме. –

+0

Я не уверен, что вы имеете в виду, когда говорите, что вычисляете «направление намотки». Что такое намотка и как вы это вычисляете? Вы вращаете треугольник? –

+0

@CodeHard_or_HardCode вам явно не хватает векторных математических приложений в векторном значении CG. полигональная обмотка - это порядок точек двумерного многоугольника CW или CCW, поэтому, если вы обрабатываете свои 2 точки и центр круга как треугольник и вычисляете обмотку, тогда вы знаете, будет ли следующая точка CW или CCW по кругу, что вы хотите. обмотка вычисляется просто, беря нормальный вектор (кросспроизведение 2-мерных полигонов в порядке, определяемом полигоном) на многоугольник и принимая знак его z-координаты. нотация 'nz' - это простой доступ к координате' z' вектора 'n' – Spektre

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