В моем raytracer все поверхности центрированы в начале координат и ориентированы по оси Y. Смещение, вращение и изменение размера получаются с помощью матрицы преобразования, примененной к лучам.
Недавно я отрисовал тор в моей трассировке лучей, используя ее декартовое уравнение:
(x ^ 2 + y ^ 2 + z ^ 2) ^ 2 - 2 * (r1 ^ 2 + r2 ^ 2) * (x ^ 2 + y ^ 2 + z ^ 2) + 4 * r1 ^ 2 * y ^ 2 + (r1 ^ 2 - r2 ^ 2) ^ 2
, для которого я заменил каждую точку уравнением луча:
ex: X = Ray.ori.x + T * Ray. dir.x;
Заменив компоненты луча в уравнении, я получил 5 коэффициентов моей функции кварти c, которую можно использовать для нахождения корней уравнения (пересечения Т) с Алгоритм полиномиального решения 4-й степени.
Мне было интересно, можно ли воспроизвести mobius strip таким же образом. Мои исследования не принесли много пользы, я нашел несколько кодов Raytracing, использующих уравнения cubi c, но копирование 4 коэффициентов привело меня к непонятным формам и артефактам.
Не могли бы вы помочь мне сделать это? Также приветствуется совет сделать его другим методом.
Спасибо!