查看距切割平面一定距离处的截面

View the section at the distance from the cutting plane

我正在尝试创建裁剪平面以在 opentk glControl 中定义我的对象的不同点的部分,为此我定义了一个变量“elevActual”,它指示将创建裁剪平面的距离。通过单击一个按钮,我可以推进我的剪裁平面。问题是随着裁剪平面的前进,裁剪平面后面的对象仍然显示,我只想显示在“elevActual”距离处定义的部分。

double[] Elevyz = new double[] { -1, 0, 0, ElevActual };
        // Definir planos de recorte YZ
        if (tipVista == 2)// this indicate is in YZ plans
        {
            GL.PushMatrix();
            GL.ClipPlane(ClipPlaneName.ClipPlane2, Elevyz);
            GL.Enable(EnableCap.ClipPlane2);
        }
        ...
        GL.Disable(EnableCap.ClipDistance2);
        GL.PopMatrix();// Cierre de la funcion de plano de corte

如果只想查看几何的一部分,则必须定义两个剪裁平面。一个在节的开头,一个在节的末尾。下面的startto定义了section的范围。 start 必须小于 end:

double[] Elevyz_start = new double[] {  1, 0, 0, -start };
double[] Elevyz_end   = new double[] { -1, 0, 0, end };

GL.ClipPlane(ClipPlaneName.ClipPlane2, Elevyz_end);
GL.Enable(EnableCap.ClipPlane2);

GL.ClipPlane(ClipPlaneName.ClipPlane5, Elevyz_start);
GL.Enable(EnableCap.ClipPlane5);

裁剪平面的最大数量保证至少为 6。参见 GL_MAX_CLIP_PLANES respectively glClipPlane
裁剪平面的参数被解释为 Plane Equation。 平面方程的前 3 个分量是剪切平面的法向量。第 4 个分量是到原点的距离。因此距离的符号取决于法向量的方向。因此,start在建立平面方程时取反