Я использую OpenGL. Прямо сейчас я программирую загрузчик 3D-модели, используя алгоритм закрепления ушей.
Моя главная проблема в том, какую ось я должен использовать. У меня есть 3 варианта: (X Y), (Z Y), (X Z).
Например, если у меня есть четверка — 4 балла — (1, 1, 0) (-1, 1, 0) (-1, -1, 0) (1, -1, 0) мне нужно (XY) ось, потому что все Z одинаковы.
Поэтому я пытался запрограммировать некоторый код, который может знать, какие 2 оси мне нужны. Он проверяет, совпадает ли одна из осей с другими.
Но этот код работает только тогда, когда одна ось совпадает. При многоугольном наклоне код не работает. Поэтому я добавил в код функцию проверки, которая проверяет, все ли вершины находятся в одной строке, затем я получил этот многоугольник, и мой код не прошел:
Вы можете видеть, что сверху это вершина, справа одна вершина, а внизу три вершины. Как вы можете видеть (X Z) — это правильная ось, которую я должен исправить.
Если вы посмотрите на ось (Z Y), вы можете увидеть это:
одна вершина слева, одна посередине и 3 вершины справа. Не все вершины находятся на одной линии, и я не могу проверить, какую ось я должен использовать. Потому что, если я буду использовать ось (Z Y), алгоритм ограничения уха не будет работать.
Как я могу узнать, какие 2 оси я должен использовать? Я использую C ++.
Задача ещё не решена.