Как найти дополнительные точки на линии между двумя точками в 3D? - PullRequest
0 голосов
/ 29 октября 2018

Есть ли в C # функция, которая может дать мне все точки на прямой линии между двумя точками в 3D?

Чтобы вычислить расстояние между этими двумя точками, я использую это:

public class Position {
    public float x;
    public float y;
    public float z;
}

public void CalculateDistance(Position position1, Position position2, int mapId){
    float deltaX = position1.x - position2.x;
    float deltaY = position1.y - position2.y;
    float deltaZ = position1.z - position2.z;

    float distance = (float)Math.Sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ);
    Console.WriteLine("Distance is: " + distance);
}

Пример координат:

Position pos1 = new Position();
pos1.x = 141.6586f;
pos1.y = 0.6852107f;
pos1.z = 153.2231f; 

Position pos2 = new Position();
pos2.x = 142.336f;
pos2.y = 0.8685942f;
pos2.z = 130.8394f;

Допустим, расстояние в линии между этими двумя трехмерными координатами можно пройти за 5 секунд. Как я могу напечатать текущую координату за каждую 1 секунду?

1 Ответ

0 голосов
/ 29 октября 2018

что вы хотите сделать, хорошо описано в этом ответе

А вот пример кода, как вы можете напечатать свои значения:

var mx = pos2.x - pos1.x;
var my = pos2.y - pos1.y;
var mz = pos2.z - pos1.z;
for(var t=0; t < 10; t++) {
    var x = pos1.x + mx * t;
    var y = pos1.y + my * t;
    var z = pos1.z + mz * t;
    //TODO: use you 3D point
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...