Первая величина, которую вы должны вычислить - это радиус сферы. Это просто, используя вашу запись radius = sqrt((x1-x0)^2+(y1-yo)^2+(z1-z0)^2)
.
Затем, чтобы «закрасить» всю сферу, вы можете просто перебрать каждый воксель в вашем 100 x 100 x 100
пространстве и проверить, находится ли он внутри сферы, или раскрасить его соответствующим образом. Есть много способов сделать эту операцию более эффективной, например, вы можете сначала определить выравнивающий ось ограничивающий прямоугольник для сферы и выполнять итерации только по точкам в этом блоке. Вы можете сделать все свои вычисления в одном октанте пространства, а затем использовать отражение для раскраски в других октантах.
Рисовать полую сферу будет гораздо сложнее, радиус вашей сферы, как правило, будет действительным числом, а не целым числом, поэтому вокруг центра вокселей не будет хорошо расположенной воксельной толстой оболочки вокселей , Вместо этого наивный алгоритм (проверка того, что воксел находится точно на указанном расстоянии от центра сферы) может привести к тому, что воксели не будут включены в оболочку. Вы должны будете допустить некоторую терпимость в своих тестах относительно того, находится ли воксель в оболочке, внутри нее или вне ее. Я ожидаю, что вам будет довольно сложно определить допуск так, чтобы у вас никогда не было оболочки в два вокселя толщиной в любой точке, и в то же время равной нулю вокселей в других точках.
Если вы находите концептуализацию всего этого немного изнурительной, отработайте все для круга в 2D, прежде чем заняться 3-м измерением.