c++ - vtk IntersectWithLine() 函数使用法线作为线

标签 c++ vtk

我有两个等值面(头骨和皮肤)。给定颅骨等面上的 A 点,我使用“double *pos = pickerCell->GetPickNormal()”计算 A 点的法线。 当我打印 pos 时,这就是我得到的:-6.2367、1.98263、-0.9823 有人可以向我解释这 3 个值的含义吗?

我想找到 A 点法线与皮肤等值面的交点。

我可以使用 IntersectWithLine() 函数来这样做吗?如果是,那么我的情况下的线路是正常的吗?法线的起点和终点是什么?

或者有更好的方法吗?

最佳答案

如您所见,您需要定义与两点相交的线。通常所做的是从您选择的点 P 开始(计算法线 v 的同一点)并计算两个点,A = P + v delta 和 B = P - v delta使用上下文设置增量(如果您的模型在单位立方体中,增量可能类似于 .01,如果您的模型的单位大小为 1000,增量可能为 1,等等)。

此外,我不确定为什么单元格选择器返回的法线没有被归一化,但我假设如果你对其进行归一化,它就是表面法线。为了避免混淆,我会称它为“pos”以外的其他名称(因为它是一个方向,而不是一个位置)。

关于c++ - vtk IntersectWithLine() 函数使用法线作为线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9704460/

相关文章:

c++ - 在vtk中翻转Y轴

c++ - 如何使用Makefile使用VTK库编译项目?

3d - 将 ASCII 中的 3D 数组转换为 Paraview 可以读取的文件

c++ - 如何从 vtk 数据中删除字形?

awk - 使用 AWK 将 MDF 转换为 VTK

python - 使用 python3.8 和 Ubuntu 20.04 设置 VTK

c++ - 在不安装 Visual Studio 的情况下获取 Windows 崩溃的堆栈跟踪? (C++)

c++ - C++ 中的自限制堆大小

c++ - 传递值作为引用和 "const"值

c++ - 使 C++ std::string 在指定字符处结束?