У меня есть глобальная система координат (X, Y, Z) и треугольник с точками (A, B, C и Center). Я знаю все координаты этих точек.Преобразование системы координат, 3d-проекция на плоскость 2d
- нужно перенести глобальную систему координат из (0; 0; 0) в треугольнике центра, так что все точки: A, B, C и Центр будет иметь новые координаты, где Z = 0. После этого Мне нужно знать новые координаты этих точек в связи с новой системой координат. Ориентация новой системы координат не важна.
- Кроме того, если есть возможность конвертировать 3D-точки (точки треугольника) в 2D-плоскость, не теряя геометрии (размера). Это не должно быть проекцией на двумерную плоскость.
>> A=[10.63307; -7.72528; 21.26636];
B=[4.06139; -12.49988; 21.26636];
C=[-6.57172; -20.22529; 13.14344];
Centr=[-4.38113; -13.48349; 18.55872];
>> V1=(B-A)/(norm(B-A))
V1 =
-0.8090
-0.5878
0
>> V2=((C-A)-(dot((C-A),V1)*V1))/(norm((C-A)-(dot((C-A),V1)*V1)))
V2 =
0.0000
-0.0000
-1.0000
>> V3=cross(V1,V2)
V3 =
0.5878
-0.8090
0.0000
>> M=[V1,V2,V3]
M =
-0.8090 0.0000 0.5878
-0.5878 -0.0000 -0.8090
0 -1.0000 0.0000
>> Anew=inv(M)*(A-Centr)
Anew =
-15.5313
-2.7076
4.1666
>> Bnew=inv(M)*(B-Centr)
Bnew =
-7.4083
-2.7076
4.1666
>> Cnew=inv(M)*(C-Centr)
Cnew =
5.7350
5.4153
4.1666
Это то, что я получил: From this
это вопрос только по математике и имеет мало общего с C++ или matlab (если вам не нужен код для любого из двух, в этом случае вы должны показать, что вы уже пробовали) – user463035818
btw это очень простая геометрия. z нормальна к треугольнику и двум другим направлениям, которые вы просто выбираете, чтобы лежать на треугольнике. В чем проблема? – user463035818
Установите 'Z' на' 0' на всех, и вы получите преобразование из 3D в 2D. И если вы хотите преобразовать координаты в новую (0,0) систему, которая находится на (2, 2), например, тогда вам нужно вычесть (2,2) из всех и всех других координат. Тогда результатом будет новая (0,0) система. Не могли бы вы сейчас показать некоторые [MCVE]? –