【问题标题】:View the section at the distance from the cutting plane查看距剖切面一定距离的剖面
【发布时间】:2020-10-30 17:35:23
【问题描述】:

我正在尝试创建剪切平面以在 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

【问题讨论】:

  • “我只希望显示在“elevActual”距离处定义的部分。” elevActual 是距离而不是部分。部分的大小是多少?部分如何限制?

标签: c# opengl opentk


【解决方案1】:

如果您只想查看几何的一部分,则必须定义两个剪切平面。一个在该部分的开头,一个在该部分的末尾。在下面的startto 中定义了该部分的范围。 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 glClipPlane
剪裁平面的参数被解释为Plane Equation。 平面方程的前 3 个分量是剪切平面的法向量。第 4 个分量是到原点的距离。因此,距离的符号取决于法向量上的方向。因此,在建立平面方程时,start是倒置的。

【讨论】:

    猜你喜欢
    • 2020-10-15
    • 2020-07-01
    • 2021-02-08
    • 2021-11-16
    • 2020-08-13
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 2019-08-21
    相关资源
    最近更新 更多