Мне удалось рассчитать радиус ограничивающей сферы двумя способами, но ни один из них не дает мне именно то, что я хочу. Мне не нужна «пиксельная» идеальная ограничивающая сфера, но я бы хотел что-то лучше, чем то, что у меня сейчас есть.
Я использую модели Wavefront .obj и для вычисления радиуса ограничивающей сферы для этих моделей извлекаю размеры текущей модели (я использую библиотеку GLM от Нейта Роббинса), которая даст мне размер по каждой оси.
Первый подход:
Разделите каждую ось на 2, и это даст мне радиус на каждой оси. Самый большой - тот, который я буду использовать для моей ограничивающей сферы. Это будет работать для большинства объектов, характерных для моего проекта. Это не будет работать для некоторых, как кубовидные. По сути, если у меня есть куб и я рассчитал радиус с этим подходом, сфера оставит углы куба снаружи.
Второй подход:
Разделите каждую ось на 2, и это даст мне радиус на каждой оси. Затем я делаю это, чтобы вывести радиус для ограничивающей сферы:
r = SQRT(x*x + y*y + z*z)
Но это дает мне довольно большой радиус. Объект будет полностью заключен в сферу, но сфера довольно большая, больше, чем должна быть.
Я не понимаю, что я делаю неправильно в формуле выше, насколько я знаю, это должно работать. Но я явно не прав ...