5

QGLWidget用来绘制 3D 对象,我的程序的输入是形状的面。

这意味着当我想绘制一个立方体时,我得到了 6 个元素的列表,每个元素代表一个面,每个面包含 4 个点,每个点 (x,y,z)。

绘图已完成,但我正在尝试实现横截面功能,到目前为止横截面后的结果形状是空心物体,我怎样才能获得横截面结果,就好像形状没有被挖空一样?

4

2 回答 2

9

OpenGL 不知道“对象”。它不知道“实心”或“空心”。OpenGL 所知道的只有点、线和三角形。如果你想让你的对象看起来是实心的,你必须计算被切除的对象的几何形状,从而产生一个新的网格,你可以将它用作绘图的输入数据。

切割过程是称为“布尔几何运算”的一组运算的一部分,也称为“构造立体几何”。如果你用谷歌搜索,你会发现很多信息。

于 2013-10-23T14:28:52.673 回答
2

我相信您要实现的是对 2 个几何对象的一些布尔运算。为此,Boost 中有一个完美的几何库,您需要其中一种算法:diffintersection。给定示例,很容易为您的特定对象结构修改它们。

于 2013-11-08T05:14:39.590 回答