2014-02-11 3 views
0

У меня есть линия, начало Vector2 (4,5) end Vector2 (10,10), например. я затем вычислить точку на этой линии с конкретным местом на линии (предположу, 0.4F на данный момент):Получите третью точку вдоль линии

float x = start.x + location * (end.x - start.x); 
float y = start.y + location * (end.y - start.y); 
return new Vector2 (x,y); 

Теперь у меня есть место, и я хочу, чтобы поместить эту точку на смещении от линии , Итак, если линия находится в 45Angle, я хочу, чтобы можно было разместить точку на расстоянии X +90 или -90 градусов от существующей строки. Однако сохранение нового местоположения параллельно на существующей линии.

Есть ли у кого-нибудь идеи о том, как это сделать? Я работаю в Unity3D, если это позволяет вам делать некоторые вещи Vector2 или нет.

Большое спасибо заранее, Smiley

+0

Связанный: [Найдите линию, пересекающую известную линию под прямым углом, учитывая точку] (http://stackoverflow.com/questions/6630596/find-a-line-intersecting-a-known-line-at- правый угол с учетом-а-точка). –

+0

В документации [Unity] (http://docs.unity3d.com/Documentation/Manual/ComputingNormalPerpendicularVector.html) есть статья о вычислении нормалей. –

ответ

1

Вы можете получить перпендикулярную вектору вектор, соединяющий start и end, используя следующую х и у компонентов

float x2 = -(end.y - start.y); 
float y2 = (end.x - start.x); 

и создать 2D вектор из них. Это даст вам вектор направления, который вы можете масштабировать соответствующим образом и добавить к точкам на вашей линии, чтобы генерировать другие точки в этом перпендикулярном направлении.

+0

Это именно то, что мне нужно. Я использую Vector2 для координат X и Y весь день, я полностью забыл, что вы можете использовать их как направление. Я создал новый вектор и нормализовал его, чтобы затем добавить его в среднюю точку, которую я уже вычислил. Это решает проблему! – Smileynator

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