2014-02-03 5 views
0

Я отчаянно пытаюсь создать инструмент сферы в моем мотеле вокселя. Я знаю общую функцию для создания сферы:Рисунок сферы с данным Origin (Voxel Engine)

public bool getPoint (int x, int y, int z) { 
    return (x*x+y*y+z*z < r*r) ? true : false; 
} 

Эта функция создает сферу, предполагая, происхождение находится в точке (0, 0, 0). Тем не менее, я хочу, чтобы создать сферу с пользовательским происхождением (или определяемым пользователем), говорят, что источник находится в (10, 10, 10). Как мне изменить эту функцию, чтобы переместить начало в другую позицию?

+1

Краткая версия: вычитайте 10 из ваших координат, прежде чем выполнять свою математику. Вы применяете негативный мировой перевод, чтобы компенсировать действительно движущийся объект. Это не имеет никакого отношения к «созданию» сфер, а также к теории вокселей. – Blindy

ответ

0

Позвольте ox, oy, oz быть центром вашей сферы. Тогда вы просто вычесть из центра x, y, z прежде чем делать вычисление:

public bool getPoint (int x, int y, int z, int ox, int oy, int oz) 
{ 
    x -= ox; 
    y -= oy; 
    z -= oz; 
    return (x*x+y*y+z*z < r*r); 
} 

Обратите внимание, что выражение expr ? true : false эквивалентно expr независимо от того, что expr есть.

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

  • Нет связанных вопросов^_^