Найдите все координаты между двумя точками (в 3d)

Point 1: 0, 0, 0
Point 2: 10, 10, 3

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

0, 0, 0
0, 0, 1
0, 0, 2
0, 0, 3
0, 1, 0
0, 1, 1
0, 1, 2
0, 1, 3
1, 0, 0
1, 1, 0
1, 0, 1
1, 1, 1

ЭСТ. и так далее... вы поняли... пока у вас не будет ВСЕХ координат между ними.

используя java, так что любой способ сделать это с помощью математики поможет мне!

как вы можете видеть, все они будут целыми числами без десятичных знаков, поэтому количество точек НЕ бесконечно.


person Liam Mingione    schedule 17.05.2013    source источник
comment
Вы не можете получить каждую точку между двумя точками, так как между этими двумя точками есть бесконечное количество точек. вам нужна какая-то детализация.   -  person Prodigga    schedule 17.05.2013
comment
Количество точек не бесконечно. Это видеоигра, и на самом деле в ней нет десятичных знаков, поэтому в координатах только целые числа.   -  person Liam Mingione    schedule 17.05.2013


Ответы (1)


Псевдокод:

for (x from p1.x to p2.x)
    for (y from p1.y to p2.y)
        for (z from p1.z to p2.z)
            new_point = (x, y, z) // do what you will with this

Убедитесь, что когда вы конвертируете псевдокод в Java, ваши for-циклы будут иметь шаги +1 или -1 в зависимости от того, имеет ли p1 или p2 меньшую координату, вам придется сделать это явным.

Однако обратите внимание, что, хотя эти точки соответствуют описанию вашей проблемы, они не находятся «между» заданными p1 и p2. Как показывает ваш пример, вы получите куб, два противоположных угла которого являются заданными точками. Может быть, это то, чего вы на самом деле хотите?

Если вы обнаружите, что на самом деле вам нужны точки на линии между p1 и p2 или вокруг нее, то это более сложная задача (просто потому, что вам нужны целые числа).

person Rohit Chatterjee    schedule 19.05.2013