Поскольку индексы массива имеют только определенный уровень специфичности (т. Е. Вы можете разделить только до ширины, в данном случае 32), не существует единого идеального способа представления сферы в массиве.Вместо этого мы можем рассматривать каждый индекс массива как пространство кубической области, где индексы [x][y][z]
индекса представляют координаты центра кубической области.Чтобы создать сферу, мы оцениваем, соответствует ли присутствие сферы в этой области пространства определенным критериям.
Начнем с уравнения для сферы.От Википедия :
В аналитической геометрии сфера с центром ( x0 , y0 , z0 ) и радиус r - это местоположение всех точек ( x , y , z ), таких что
( x - x0 ) ^ 2 + ( y - y0 ) ^ 2 + ( z - z0 ) ^ 2 <= <em>r ^ 2.
Для массива измерений N центр будет иметь координату (N - 1) / 2 длявсе размеры.(поскольку для измерения с четным номером центр должен находиться между двумя центральными точками, а для измерения с нечетным номером центр должен быть целым числом.) Величина радиуса может варьироваться в зависимости от того, где вы определяете границысфера относительно нашего воображаемого представления кубического массива;перечитывая вопрос, я замечаю, что вы уже дали желаемый радиус: 4.
Есть два критерия оценки, о которых я могу думать:
Простой подход
В этом подходе, мы просто воспользуемся проверкой того, находится ли центр кубической области индекса массива в уравнении окружности.
Вы можете увидеть ответ Сиддхарта Сатпати для некоторого кода, использующего этот подход.
Сложный подход
В идеале для меня уравнение решит, находится ли индекс в сфере, путем оценки, превышает ли доля сферы для этой кубической области более 50%.Тем не менее, этот подход, к сожалению, выходит за рамки моих текущих рабочих математических знаний.
Что касается обсуждения, которое я провел в комментариях, ни один подход не лучше, чем другой, поскольку они представляют разные точки зрения: я лично представляюмассив фактически представляет кубическую область для каждого индекса, тогда как другие могут представить, что индексы являются центральными точками этих кубических областей.