我正在使用QGLWidget
绘制三维对象,我程序的输入是形状的面。
这意味着当我想绘制一个立方体时,我得到了6个元素的列表,每个元素代表一个面,每个面包含4个点,(x,y,z)为每个点。
绘图已完成,但我正在尝试实现横截面特征,到目前为止横截面后的结果形状是空心对象,如何获得横截面结果,好像形状没有被挖空?
答案 0 :(得分:9)
OpenGL不知道“对象”。它不知道“固体”或“空心”。所有OpenGL都知道是点,线和三角形。如果要使对象看起来是实体,则必须计算切除对象的几何图形,从而生成一个新网格,用作绘图的输入数据。
切割过程是一组称为“布尔几何运算”的操作的一部分,也称为“建设性实体几何”。如果你谷歌那么,你会发现很多信息。
答案 1 :(得分:2)
我相信你想要实现的是2个几何对象上的boolean operation。为此,Boost中有一个完美的几何库,您需要以下算法之一:diff或intersection。 给出这些示例,可以很容易地为特定的对象结构修改它们。