VTK 简单操作代码演示

来源:互联网 发布:便携咖啡杯 知乎 编辑:程序博客网 时间:2024/06/02 20:12

参考网址

第二小节的内容

#include <vtkAutoInit.h>VTK_MODULE_INIT(vtkRenderingOpenGL2);VTK_MODULE_INIT(vtkInteractionStyle);#include <vtkLine.h>#include <vtkMath.h>#include <vtkPlane.h>#include <vtkSmartPointer.h>#include <vtkMinimalStandardRandomSequence.h>int main(int, char *[]){// 点到直线的距离double linP0[3] = {0.0, -1.0, 0.0};double linP1[3] = {2.0, 1.0, 0.0};double p0[3] = {1.0, 0, 0};double p1[3] = {1.0, 2.0, 0};double dist0 = vtkLine::DistanceToLine(p0, linP0, linP1);std::cout << "Dist0: " << dist0 << std::endl;double dist1 = vtkLine::DistanceToLine(p1, linP0, linP1);std::cout << "Dist1: " << dist1 << std::endl;double t;double closest[3];double dist2 = vtkLine::DistanceToLine(p0, linP0, linP1, t, closest);std::cout << "Dist0: " << dist2 << " closest point: " << closest[0] << " " << closest[1] << " " << closest[2] << std::endl;double dist3 = vtkLine::DistanceToLine(p1, linP0, linP1, t, closest);std::cout << "Dist0: " << dist3 << " closest point: " << closest[0] << " " << closest[1] << " " << closest[2] << std::endl;// 点到点的距离double distanceSquared = vtkMath::Distance2BetweenPoints(linP0, linP1);double distancePointToPoint = sqrt(distanceSquared);// Output the results.std::cout << "SquaredDistance = " << distanceSquared << std::endl;std::cout << "Distance = " << distancePointToPoint << std::endl;// 随机数 均匀分布 + 高斯分布unsigned int numRand = 3;std::cout << "Generates uniform random numbers : " ;vtkMath::RandomSeed(time(NULL));for (unsigned int i = 0; i < numRand; i++){// 均匀分布 double a = vtkMath::Random(0.0, 2.0);std::cout<< a << " ";}std::cout << std::endl;std::cout << "Generates Gaussian random numbers : " ;vtkMath::RandomSeed(time(NULL));for (unsigned int i = 0; i < numRand; i++){// 均匀分布 double a = vtkMath::Gaussian(0.0, 2.0);std::cout<< a << " ";}std::cout << std::endl;// 随机序列std::cout << "This is the preferred way to generate random numbers. \n " ;vtkSmartPointer<vtkMinimalStandardRandomSequence> sequence = vtkSmartPointer<vtkMinimalStandardRandomSequence>::New();sequence->SetSeed(1);// You can also use seq->GetRangeValue(-1.0,1.0); //to set a range on the random values.double a1 = sequence->GetValue(); sequence->Next();double a2 = sequence->GetValue(); sequence->Next();double a3 = sequence->GetValue(); sequence->Next();std::cout << "a1 = " << a1 << " a2 = " << a2 << " a3 = " << a3 << std::endl;// 将点投影到面vtkSmartPointer<vtkPlane> plane = vtkSmartPointer<vtkPlane>::New();plane->SetOrigin(0.0, 0.0, 0.0);plane->SetNormal(0.0, 0.0, 1.0);double p[3] = {1.0, 1.0, 0.0};double origin[3] = {0.0, 0.0, 0.0};double normal[3] = {0.0, 0.0, 1.0};double projected[3];plane->ProjectPoint(p, origin, normal,projected);std::cout << "Projected: " << projected[0] << " " << projected[1] << " " << projected[2] << std::endl;return 1;}


0 0
原创粉丝点击