如何使用Nurbs与OpenGL了解特定的值位置?

时间:2012-11-26 20:42:11

标签: c opengl nurbs

我正在使用OpenGL创建一个nurbs曲面(gluNurbSurface(...)),我想知道如何将控制点(黑点)的正常值作为红点到达表面市场。有了这些信息,我就可以计算它们之间的距离。

Nurbs

加 为了获得另一个答案或改进受试者我想写一部分代码,希望能得到更多的帮助:

在这部分中,您可以观察我如何初始化nurbs。

init_surface();

   theNurb = gluNewNurbsRenderer();
   gluNurbsProperty(theNurb, GLU_SAMPLING_TOLERANCE, 50.0);
   gluNurbsProperty(theNurb, GLU_DISPLAY_MODE, GLU_FILL);
   gluNurbsCallback(theNurb, GLU_ERROR, 
                    (GLvoid (*)()) nurbsError);

接下来,使用参数创建曲面。

gluBeginSurface(theNurb);
    gluNurbsSurface(theNurb,
            U+ordenU, knotsU,
            V+ordenV, knotsV,
            V * 3,
            3,
            &ctlpoints[0][0][0],
            ordenU, ordenV,
            GL_MAP2_VERTEX_3);

   gluEndSurface(theNurb);

请记住我正在使用C.而且在这一刻我试图将nurbs的值引入到第一个答案中由 genpfault 提出的函数的向量中但我不知道在哪个部分我必须添加它们。

1 个答案:

答案 0 :(得分:2)

通过gluNurbsCallback()设置GLU_NURBS_NORMAL_DATA回调。 GLU_NURBS_VERTEX_DATA回调也很有用。

*userData(通过gluNurbsCallbackData())在某种动态数组数据结构中保持点/法线。如果您使用的是C ++,我建议使用std::vector Eigen::Vector3f s。