ОТРЕДАКТИРОВАНО:
У меня есть набор текстурных координат и декартовых координат реального мира («мировое пространство») (в метрах) для формы, и из этих координат я хотел бы найти длину мирового пространства одной единицы каждого из s
и t
координаты текстуры, когда линия, соответствующая этой длине, ориентирована горизонтально и вертикально соответственно в пространстве текстуры. Но я изо всех сил пытаюсь вычислить это, когда у меня нет хотя бы одного края, ориентированного горизонтально, и одного края, ориентированного вертикально в пространстве текстуры.
По сути, я хотел бы иметь возможность узнать, чему равна 1 s
единица в метрах и чему равна 1 t
единица в метрах. Чтобы проиллюстрировать это, используя пример формы треугольника - см. ниже список значений координат - я хочу найти длину вертикальных и горизонтальных линий с красными стрелками в метрах...
(Я также хотел бы, чтобы решение работало для любого треугольника или многоугольника, учитывая эквивалентный набор координат)
Отображение текстур здесь непараметрическое, все 3D-точки также компланарны, и, следовательно, поверхность можно разворачивать. Отображение в мировом пространстве на плоскости является изометрическим (глобальное масштабирование), поэтому интерполяция в 2D может быть линейной.
(так как я работаю в MATLAB - я накладываю текстуру и хочу иметь возможность преобразовывать любую координату текстуры на моей разрабатываемой поверхности с глобальным масштабированием в декартовы координаты)
В качестве примера у меня есть треугольник с набором текстурных координат (s, t)
следующим образом...
ОТРЕДАКТИРОВАННЫЕ ЗНАЧЕНИЯ (дважды):
(1) 1.7942553649452966 0.8511551466745527
(2) 1.756240725743247 0.8674815156738774
(3) 1.730892921329496 0.8328561344213196
(1) 1.7942553649452966 0.8511551466745527
... который имеет соответствующие реальные (декартовы) координаты (x, y, z)
с единицами измерения метров ...
ОТРЕДАКТИРОВАННЫЕ ЗНАЧЕНИЯ (дважды):
(1) 660050.0702952344 5868605.033820355 20.442670747055647
(2) 660050.3347344951 5868606.121563466 20.574639679143946
(3) 660050.4376411334 5868606.55473629 19.53932546324279
(1) 660050.0702952344 5868605.033820355 20.442670747055647
К вашему сведению, это от CityGML, который использует метод COLLADA для наложения текстур.
Поскольку фигура всегда образует плоскость, я могу легко сгенерировать уравнение плоскости и уравнения линий, представленных каждой парой вершин. Но я не понимаю, как это поможет мне, не зная вращения линий на плоскости относительно того, что является горизонтальным и вертикальным в текстурном пространстве. Итак, начать с использования Pythagoras на краю невозможно...?
Я думаю, что это должна быть проблема, которая была решена много лет назад теми программами просмотра объектов кодирования, которые отображают текстуру и показывают мировое пространство, но пока я не могу найти решение...
К вашему сведению, это связано с моим текущим вопросом здесь.
Спасибо