vtkTransform实例 1

 1. 4*4矩阵类vtkMatrix4x4

  接口函数:void SetElement(int i, int j, double value),i行、j列的值为value

 1 #ifndef INITIAL_OPENGL
 2 #define INITIAL_OPENGL
 3 #include <vtkAutoInit.h>
 4 VTK_MODULE_INIT(vtkRenderingOpenGL)
 5 VTK_MODULE_INIT(vtkInteractionStyle)
 6 VTK_MODULE_INIT(vtkRenderingFreeType)
 7 #endif
 8 #include <iostream>
 9 using namespace std;
10 #include<vtkSmartPointer.h>
11 #include<vtkPerspectiveTransform.h>
12 #include <vtkMatrix4x4.h>
13 #include <vtkTransform.h>
14 
15 int main()
16 {
17     vtkSmartPointer<vtkMatrix4x4> m=vtkSmartPointer<vtkMatrix4x4>::New();
18     double ma[4][4]={{1,2,3,4},
19                      {2,2,3,4},
20                      {3,2,3,4},
21                      {4,2,3,4}};
22     for(int i=0;i<4;i++)
23     {
24         for(int j=0;j<4;j++)
25         {
26             //void SetElement(int i, int j, double value),i行、j列的值为value
27             m->SetElement(i,j,ma[i][j]);
28         }
29     }
30     //普通变换
31     vtkSmartPointer<vtkTransform> transform=vtkSmartPointer<vtkTransform>::New();
32     transform->SetMatrix(m);
33     double p[3]={1,2,3};//原始点
34     double normalProjection[3];//投影变换后的点坐标
35     transform->TransformPoint(p,normalProjection);
36     cout<<"Original point     :"<<p[0]<<","<<p[1]<<","<<p[2]<<endl;
37     cout<<"Standard projection:"<<normalProjection[0]<<","<<normalProjection[1]<<","<<normalProjection[2]<<endl;
38     //透视投影变换
39     double perspectiveProjection[3];
40     vtkSmartPointer<vtkPerspectiveTransform>perspectiveTransform=vtkSmartPointer<vtkPerspectiveTransform>::New();
41     perspectiveTransform->SetMatrix(m);
42     perspectiveTransform->TransformPoint(p,perspectiveProjection);
43     cout<<"Perspective projection:"<<perspectiveProjection[0]<<","<<perspectiveProjection[1]<<","<<perspectiveProjection[2]<<endl;
44     return 0;
45 }
#ifndefINITIAL_OPENGL
#defineINITIAL_OPENGL
#include<vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL)
VTK_MODULE_INIT(vtkInteractionStyle)
VTK_MODULE_INIT(vtkRenderingFreeType)
#endif
#include<iostream>
usingnamespacestd;
#include<vtkSmartPointer.h>
#include<vtkPerspectiveTransform.h>
#include<vtkMatrix4x4.h>
#include<vtkTransform.h>

intmain()
{
vtkSmartPointer<vtkMatrix4x4>m=vtkSmartPointer<vtkMatrix4x4>::New();
doublema[4][4]={{1,2,3,4},
{2,2,3,4},
{3,2,3,4},
{4,2,3,4}};
for(inti=0;i<4;i++)
{
for(intj=0;j<4;j++)
{
//voidSetElement(inti,intj,doublevalue),i行、j列的值为value
m->SetElement(i,j,ma[i][j]);
}
}
//普通变换
vtkSmartPointer<vtkTransform>transform=vtkSmartPointer<vtkTransform>::New();
transform->SetMatrix(m);
doublep[3]={1,2,3};//原始点
doublenormalProjection[3];//投影变换后的点坐标
transform->TransformPoint(p,normalProjection);
cout<<"Originalpoint:"<<p[0]<<","<<p[1]<<","<<p[2]<<endl;
cout<<"Standardprojection:"<<normalProjection[0]<<","<<normalProjection[1]<<","<<normalProjection[2]<<endl;
//透视投影变换
doubleperspectiveProjection[3];
vtkSmartPointer<vtkPerspectiveTransform>perspectiveTransform=vtkSmartPointer<vtkPerspectiveTransform>::New();
perspectiveTransform->SetMatrix(m);
perspectiveTransform->TransformPoint(p,perspectiveProjection);
cout<<"Perspectiveprojection:"<<perspectiveProjection[0]<<","<<perspectiveProjection[1]<<","<<perspectiveProjection[2]<<endl;
return0;
}


原文地址:https://www.cnblogs.com/phoenixdsg/p/6168943.html