2014-12-11 2 views
7

Как найти точку (C (x, y, z)) между двумя точками (A (x, y, z), B (x, y, z)) в сценарии thgree.js?Найти конкретную точку между двумя точками - three.js

Я знаю, что с этим: mid point Я могу найти среднюю точку между ними, но мне не нужна средняя точка, я хочу найти точку, которая находится между ними, а также расстояние от точки А?

на этой картинке вы можете увидеть, что я имею в виду:

enter image description here

Спасибо.

+1

Много информации здесь: http://stackoverflow.com/questions/1250419/finding-points-on-a-line-with-a-given-distance – gaitat

ответ

23

В основном вам необходимо получить вектор направления между двумя точками (D), нормализовать его, и вы будете использовать его для получения новой точки в пути: NewPoint = PointA + D*Length.

Вы можете использовать нормированную длину (0..1) или как абсолютное значение от 0 до длины вектора направления.

Здесь вы можете увидеть некоторые примеры использования обоих методов:

Используя абсолютное значение:

function getPointInBetweenByLen(pointA, pointB, length) { 

    var dir = pointB.clone().sub(pointA).normalize().multiplyScalar(length); 
    return pointA.clone().add(dir); 

} 

И использовать с процентом (0..1)

function getPointInBetweenByPerc(pointA, pointB, percentage) { 

    var dir = pointB.clone().sub(pointA); 
    var len = dir.length(); 
    dir = dir.normalize().multiplyScalar(len*percentage); 
    return pointA.clone().add(dir); 

} 

Смотрите в действие: http://jsfiddle.net/0mgqa7te/

Надеюсь, что это поможет.

+2

Благодарю вас! –

+0

спасибо, это было именно то, что мне нужно;) – BasicSide