Вероятно, было бы проще всего сохранить однородную матрицу, которая преобразует стандартный, выровненный по оси квадрат в нужное место, вместе с отдельной матрицей, определяющей способ наложения текстуры на нее.В матрице местоположения вы можете хранить матрицу 4x3, которая не влияет на w
-координату.Это только немного избыточно: он использует 12 значений, где для общего прямоугольника нужно 8, но, с другой стороны, будет гораздо проще преобразовать его обратно в форму, пригодную для рендеринга.
В качестве альтернативы вы можетесохранить местоположение точки (ребро или центр в зависимости от того, что наиболее удобно) и два вектора направления, описывающих направление и длину каждого ребра;Вы полагаетесь на свой генератор прямоугольников, чтобы убедиться, что векторы ребер ортогональны.Это примет 9 значений, что почти лучшее, что вы можете сделать.
Для отображения текстуры вы можете сохранить матрицу 3x2, которая определяет аффинное отображение координат (u, v), в координаты, определяемые каккрая прямоугольника.Вы можете выбрать отображение на основе нуля (0,1) x (0,1) или симметричное (-1,1) x (-1,1) в зависимости от того, что удобно для вашего приложения.В любом случае для этого потребуется 6 значений.