概述
#include <iostream>
#include <GTEngine/Mathematics/GteConvertCoordinates.h>
using namespace gte;
int main(int argc, char const *argv[])
{
// // Affine change of basis.
ConvertCoordinates<4, double> convert;
Vector<4, double> X, Y, P0, P1, diff;
Matrix<4, 4, double> U, V;
bool isRHU, isRHV;
V.SetCol(0, Vector<4, double>{1.0, 0.0, 0.0, 0.0});
V.SetCol(1, Vector<4, double>{0.0, 1.0, 0.0, 0.0});
V.SetCol(2, Vector<4, double>{0.0, 0.0, 1.0, 0.0});
V.SetCol(3, Vector<4, double>{0.0, 0.0, 0.0, 1.0});
U.SetCol(0, Vector<4, double>{0.866, 0.5, 0.0, 0.0});
U.SetCol(1, Vector<4, double>{-0.5, 0.866, 0.0, 0.0});
U.SetCol(2, Vector<4, double>{0, 0, 1.0, 0.0});
U.SetCol(3, Vector<4, double>{10.0, 5.0, 0.0, 1.0});
convert(U, true, V, true);
// isRHU = convert.IsRightHandedU(); // false
// isRHV = convert.IsRightHandedV(); // true
X = { 3.0, 7.0, 0.0, 1.0 };
Matrix<4, 4, double> matrix;
matrix = convert.GetInverseC();
std::cout<<"transform matrix----------- " <<std::endl;
for(int i = 0; i <4 ; i++)
{
Vector<4,double > row = matrix.GetRow(i);
for(size_t j = 0; j < 4; j++)
{
std::cout<< row[j]<<" ";
}
std::cout<<std::endl;
}
std::cout<<"YY matrix * X ------------- " <<std::endl;
Vector<4, double> YY;
YY = matrix * X;
for(int i = 0; i < 4; i++)
{
std::cout<<"YY "<< i<<": " <<YY[i]<<std::endl;
}
std::cout<<"Y UToV----------------" <<std::endl;
Y = convert.UToV(X); //
for(int i = 0; i < 4; i++)
{
std::cout<<"Y "<< i<<": " <<Y[i]<<std::endl;
}
// std::cout<<"YY ------------- " <<std::endl;
// X = { 1.0, 0.0, 0.0, 1.0 };
// YY = matrix * X;
// for(int i = 0; i < 4; i++)
// {
// std::cout<<"YY "<< i<<": " <<YY[i]<<std::endl;
// }
}
// >> T
// T =
// 0.86600 -0.50000 0.00000 10.00000
// 0.50000 0.86600 0.00000 5.00000
// 0.00000 0.00000 1.00000 0.00000
// 0.00000 0.00000 0.00000 1.00000
// >> T * [1 0 0 0]'
// ans =
// 0.86600
// 0.50000
// 0.00000
// 0.00000
// >> T * [0 1 0 0]'
// ans =
// -0.50000
// 0.86600
// 0.00000
// 0.00000
// >> T * [0 0 1 0]'
// ans =
// 0
// 0
// 1
// 0
输出:
itfanr@itfanr-pc:test$ g++ gte_test.cpp -I/usr/local/include/GTEngine -std=c++11 -lgtengine -lX11 -lXext -lGL -lEGL -lpng -lpthread -lm
itfanr@itfanr-pc:test$ ./a.out
transform matrix-----------
0.866 -0.5 0 10
0.5 0.866 0 5
0 0 1 0
0 0 0 1
YY matrix * X -------------
YY 0: 9.098
YY 1: 12.562
YY 2: 0
YY 3: 1
Y UToV----------------
Y 0: 9.098
Y 1: 12.562
Y 2: 0
Y 3: 1
最后
以上就是美好小蚂蚁为你收集整理的已知两个坐标系下的坐标,求坐标系之间的转换矩阵(三)的全部内容,希望文章能够帮你解决已知两个坐标系下的坐标,求坐标系之间的转换矩阵(三)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复