Я пытаюсь прикрепить профили 2d формы к сплайновой кривой. В определенных точках сплайна я получаю странные искажающие артефакты в моей геометрии, как показано на изображении. Как я могу избежать этого, используя уравнения Frenet-Frame?Избегайте скручивания артефактов в экструзии сплайнов [OpenGL, C++]
Мои текущие расчеты для нормальной, бинормалью и касательной:
forward_tangent_vector = glm::normalize(pointforward - pointmid);
backward_tangent_vector = glm::normalize(pointmid - pointback);
second_order_tangent = glm::normalize(forward_tangent_vector - backward_tangent_vector);
binormal = glm::normalize(glm::cross(forward_tangent_vector,second_order_tangent));
normal = glm::normalize(glm::cross(binormal, forward_tangent_vector));
//translation matrix
T = glm::translate(T, pointmid);
normal_axis = glm::vec3(0, 1, 0);
rotationAxis = glm::cross(normal_axis, forward_tangent_vector);
rotationAngle = glm::acos(glm::dot(normal_axis, forward_tangent_vector));
//rotation matrix
R = glm::rotate(R, glm::degrees(rotationAngle), rotationAxis);
Хорошо, проблема в том, что я не могу гарантировать, будет ли кривая непрерывной C2. Кривая генерируется алгоритмом, который может или не может обеспечивать непрерывную кривую C2. Когда у меня есть матрица 'tbn', как я могу изменить основу этих профилей окружностей (2d-формы). – jaykumarark
Просто умножьте вершины на эту матрицу. Также не забудьте перевести начало координат в начало фрейма. –