2010-07-31 2 views
0

У меня есть две точки, и мне нужно создать линию, перпендикулярную линии, которую они образуют. Также пересечение должно быть на расстоянии 5 (единиц) от первой точки. Я знаю, как получить перпендикулярную линию, но не как получить точку на первой линии, которая находится на расстоянии 5 единиц от первой точки.Если у меня есть уравнение линии, как мне найти точку на этой линии, которая является определенным расстоянием от другого?

ответ

0

используйте уравнение окружности, центрированное на первой точке, и решите для x и y.

первая точка = x_0, y_0

уравнение окружности радиуса 5 вокруг первой точки

(х - x_0)^2 + (у - y_0)^2 = 25

использования уравнение линии для замены y и решить для x. Осторожно, что вы получите 2 очка, выберите правильный. Используйте уравнение линии снова для решения для y.

3
public static function distanceFromPoint(a:Point, b:Point, dist:Number):Point { 
    var tmp:Point = b.subtract(a); 
    tmp.normalize(dist); 
    return a.add(tmp); 
} 

Как это работает:
Вы вычитать a из b, чтобы получить вектор между двумя точками. Вы нормализуете этот вектор и умножаете его на dist, чтобы получить линию dist единиц, указывающих в направлении от a до b. Добавьте этот вектор в точку a, и результатом будет новая точка, которая равна dist единиц от a в направлении b.

+1

+1. Небольшая заметка. Вы должны использовать временную переменную для хранения нормализованной точки, так как 'normalize' возвращает' void'. Что-то вроде этого: 'public static function distanceFromPoint (a: Point, b: Point, dist: Number): Point {var tmp: Point = b.subtract (a); tmp.normalize (расстояние); return a.add (tmp);} ' –

+0

Спасибо @Juan. Я изменил [один из ваших недооцененных ответов] (http://stackoverflow.com/questions/3217212/key-value-pairs-in-as3/3217584#3217584) взамен. – Gunslinger47

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