代码效果
本代码编译运行均在如下链接文章生成的库执行成功,若无VTK库则请先参考如下链接编译vtk源码:
VTK —— 一、Windows10下编译VTK源码,并用Vs2017代码测试(附编译流程、附编译好的库、vtk测试源码)
教程描述
本示例演示计算从3d点到直线的距离。
三维坐标点到直线的距离公式:x/m=y/n=z/l,点到直线的距离,即过这一点做目标直线的垂线,由这一点至垂足的距离。三维空间是日常生活中可指由长、宽、高三个维度所构成的空间。
完整源码
#include <vtkLine.h>
#include <vtkNew.h>
// #include <vtkPoints.h>
#include <iostream>
#include <string>
int main(int, char*[])
{
double lineP0[3] = { 0.0, 0.0, 0.0 };
double lineP1[3] = { 2.0, 0.0, 0.0 };
double p0[3] = { 1.0, 0, 0 };
double p1[3] = { 1.0, 2.0, 0 };
/*
vtkNew<vtkLine> line;
line->GetPoints()->SetPoint(0, lineP0);
line->GetPoints()->SetPoint(0, lineP1);
*/
{
// 确定当前顶点p0到由提供的顶点定义的边的距离,返回距离的平方
double dist0 = vtkLine::DistanceToLine(p0, lineP0, lineP1);
std::cout << "p0与线距离: " << dist0 << std::endl;
// 确定当前顶点p1到由提供的顶点定义的边的距离,返回距离的平方
double dist1 = vtkLine::DistanceToLine(p1, lineP0, lineP1);
std::cout << "p1与线距离: " << dist1 << std::endl << std::endl;
}
{
double t;
double closest[3];
// 该方法计算参数坐标t和直线上的点位置,返回距离的平方
double dist0 = vtkLine::DistanceToLine(p0, lineP0, lineP1, t, closest);
std::cout << "p0与线距离: " << dist0 << " \t\t最近点: " << closest[0] << " " << closest[1] << " " << closest[2] << std::endl;
// 该方法计算参数坐标t和直线上的点位置,返回距离的平方
double dist1 = vtkLine::DistanceToLine(p1, lineP0, lineP1, t, closest);
std::cout << "p1与线距离: " << dist1 << " \t\t最近点: " << closest[0] << " " << closest[1] << " " << closest[2] << std::endl;
}
system("pause");
return EXIT_SUCCESS;
}
笔者
笔者 - jxd