Под эллипсом с толщиной вы подразумеваете разницу между двумя эллипсами: один, где две оси были удлинены на 1/2 толщины, а другой - где он был укорочен на 1/2 толщины?
Если это так, то вы можете адаптировать связанный алгоритм в алгоритм заполнения линии сканирования. Одна вещь, которую вы хотите сделать, это работать только вдоль более короткой оси. (работа вдоль более длинной оси тоже работает, но требует избыточных вычислений).
Скажем, он шире, чем высокий. (Если наоборот, просто переворачивайте оси при рисовании.) В этом случае вы будете рисовать один или два горизонтальных отрезка для каждой позиции y.
- Для каждого значения y от вершины внешнего эллипса до центра эллипсов:
- Если у выше внутреннего эллипса:
- Нарисуйте один горизонтальный отрезок прямой от верхней левой точки квадранта на внешнем эллипсе до верхней правой точки квадранта на внешнем эллипсе.
- Остальное (у не выше внутреннего эллипса):
- Нарисуйте два горизонтальных отрезка:
- Один от верхней левой квадрантной точки внешнего эллипса до верхней левой квадрантной точки внутреннего эллипса.
- Еще одна точка от верхнего правого квадранта внутреннего эллипса до верхнего правого квадранта внешнего эллипса.
- В любом случае, зеркально отразите весь рисунок по оси X эллипсов, чтобы
визуализировать два нижних квадранта.