当前位置: 首页 > news >正文

(9)VTK C++开发示例 --- 计算两点之间的距离

文章目录

    • 1. 概述
    • 2. CMake链接VTK
    • 3. main.cpp文件
    • 4. 演示效果


更多精彩内容
👉内容导航 👈
👉VTK开发 👈

1. 概述

使用vtkMath.h中函数计算两个3D点的距离。

vtkMath::Distance2BetweenPoints 是 VTK 库中用于计算两个三维点之间 平方欧几里得距离 的函数。其核心目的是通过避免耗时的平方根运算,提升计算效率(尤其适用于仅需比较距离大小,无需实际距离值的场景)。

  • 参数:
    • p0[3]: 第一个点的三维坐标 [x0, y0, z0]
    • p1[3]: 第二个点的三维坐标 [x1, y1, z1]
  • 返回值: 两点间欧几里得距离的平方 (double 类型)

🔍 典型应用场景

  1. 快速比较距离:当需要判断哪个点更近时(如碰撞检测、最近邻搜索),直接比较平方距离可节省计算资源。
  2. 优化性能:在频繁计算距离的循环中,避免 sqrt 调用能显著提升速度。
  3. 避免浮点误差:平方根运算可能引入微小误差,平方距离保留整数精度。

⚠️ 注意事项

  • 输入点必须是 三维坐标,确保数组长度为 3。
  • 若需实际距离,记得对结果取平方根。
  • 单位一致性:若坐标单位为米,平方距离单位为平方米。
环境说明
系统ubuntu22.04、windows11
cmake3.22、3.25
Qt5.14.2
编译器g++11.4、msvc2017
VTK9.4.1

2. CMake链接VTK

cmake_minimum_required(VERSION 3.20 FATAL_ERROR) # 设置CMake最低版本
project(vtk2) # 设置项目名称
# 查找VTK库
find_package(VTK COMPONENTS
CommonCore
) 
if(NOT VTK_FOUND)
message("VTK not found")
return()
endif()add_executable(vtk2 main.cpp) # 添加可执行文件target_link_libraries(vtk2 PRIVATE ${VTK_LIBRARIES}) # 链接VTK库
vtk_module_autoinit(TARGETS vtk2 MODULES ${VTK_LIBRARIES}) # 初始化VTK模块

3. main.cpp文件

/********************************************************************************
* 文件名:   main.cpp
* 创建时间: 2025-03-11 22:49:29
* 开发者:   MHF
* 邮箱:     1603291350@qq.com
* 功能:     
*********************************************************************************/
#include<iostream>
#include<vtkMath.h>
using namespace std;int main()
{double p0[3] = {0.0, 0.0, 0.0}; // 三维坐标double p1[3] = {2.0, 0.0, 0.0}; // 三维坐标// 求两点之间距离的平方。double sd = vtkMath::Distance2BetweenPoints(p0, p1);double distance = sqrt(sd); // 求两点之间距离的平方根。cout << "两点之间距离的平方根为:" << distance << endl;cout << "两点之间距离的平方为:" << sd << endl;return 0;
}

4. 演示效果

两点之间距离的平方根为:2
两点之间距离的平方为:4


相关文章:

  • 分享一个DeepSeek+自建知识库实现人工智能,智能回答高级用法。
  • 精益数据分析(4/126):开启数据驱动的创业之旅
  • Leakcanary框架分析:他是如何检测内存泄漏的?四大引用;Heap Dump的实现,设计原则
  • 深度学习在语音识别中的应用
  • 性能比拼: Deno vs. Node.js vs. Bun (2025版)
  • LLM做逻辑推理题 - 如何找出不标准的球?
  • Rabbitmq集群重启操作
  • 交易系统的构建与实战法则
  • 《解锁图像“高清密码”:超分辨率重建之路》
  • leetcode 674. Longest Continuous Increasing Subsequence
  • LLM MCP模型上下文协议快速入门(for Java)
  • B端管理系统:企业运营的智慧大脑,精准指挥
  • FPGA——DDS信号发生器设计
  • Qt UDP 通信的详细实现步骤和示例代码
  • 系统思考:危机中的转型机遇
  • JVM虚拟机--JVM的组成
  • PyTorch深度学习框架60天进阶学习计划 - 第46天:自动化模型设计(一)
  • 虚拟现实(VR)技术在教育领域的创新应用
  • 某局部三层休闲娱乐中心建筑设计与结构设计
  • 【GlobalMapper精品教程】094:GlobalMapper26简体中文版安装教程(附安装包下载)
  • 接续驰援,中国政府援缅卫生防疫队出发赴缅
  • 法官颁布紧急临时禁止令,中国留学生诉美国政府“首战胜利”
  • 经济日报:从三个变化看外贸破局之道
  • 绝境逆转晋级世界杯四强,王楚钦再爆金句:能抽死我就给你了
  • 人民日报和音:开启中马关系新的“黄金五十年”
  • 特朗普称美联储主席鲍威尔“应该尽早下台”