3D Эллипсоид из дискретных единиц - PullRequest
1 голос
/ 21 марта 2012

Я пытаюсь нарисовать эллипсоид в трехмерном пространстве из отдельных блоков.

У меня нет проблем с 2D-эллипсами, но что касается 3D, у меня есть некоторые проблемы. Я использую алгоритм круга Брезенхэма для рисования 2D-эллипсов. Я пытаюсь нарисовать 2D-эллипсы в слоях с возрастающим (начиная снизу вверх, используя симметрию для другой половины) радиусом как по радиусу X, так и по радиусу Y.

Все это звучит так, как будто это будет работать, но когда я приступлю к его реализации, я не могу понять, как изменить радиус x и радиус y, чтобы сделать кривую эллипсоида.

1 Ответ

3 голосов
/ 22 марта 2012

Ваши 2D-срезы должны иметь одинаковую ориентацию и соотношение сторон.

Если ваш эллипсоид выровнен по оси, они также должны иметь одинаковый центр.

Ваши срезы должны масштабироваться пропорционально:

scale = sqrt(1 - ((center-z)/half_vsize)^2)

where:
  z = height of the current slice
  center = height of the largest slice
  half_vsize = half the vertical size of the ellipsoid

Если (x0, y0) - это ширина x и y самого большого среза, (x, y) = (scale*x0, scale*y0) - это ширина x и y среза на высоте z.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...