我是个opengl新手,有问题请教大家.有某个隐函数F(x,y,z)=0, 采用bloomental算法画出了其3D图形,(三角化网格,有顶点数组)现在有函数G(x,y,z),在F(x,y,z)=0生成的图形上每点按照G(x,y,z)着色,该如何操作?采用哪个函数?问题可能很简单,但是请大家说的稍微详细点,谢谢.

解决方案 »

  1.   

    在画顶点时设颜色:
    glcolor3f(a,b,c);
    glvertex3d(x,y,z);
      

  2.   

    谢谢,不过好象glcolor3f(a,b,c);是直接设定a,b,c.的数值,我这里颜色是由G(x,y,z)生成的,具体该怎么生成我也不是太清楚,因为好象三分量是R,G,B,而这是一个函数,到底该怎么生成,函数怎么写(不会是glcolor3f(G)吧),还请高手不吝相教.
      

  3.   

    你要想用opengl实现,就必需知道R、G、B值。
      

  4.   

    对这个问题,要求的是按照G(x,y,z)着色,不妨就设为,glcolor3f(a,b,c);中的a,b,不变,都为某一常数就好了,不妨就0.5啊什么的, c按照G(x,y,z)变化,(可能还要做个映射,但是G(x,y,z)在图形区间上最大最小值是不方便求的)这样的话该如何写呢??
      

  5.   

    gval = G(x,y,z);
    v = (gval - gmin) / (gmax - gmin); //映射
    glColor3f(v,v,v); //按灰度着色 或者 glColor4f(0,0.5,0,v); //按照alpha着色
    glVertex3d(x,y,z);因为这里着色的定义不明确,所以没有办法着色。
    假定按照灰度,线性映射,看什么问题了。还要知道G(x,y,z)的最大值,最小值G是个什么函数?
      

  6.   

    首先谢谢大家的热心回答,详细点题目是这样的:给定F(x,y,z)=0,G(x,y,z)是F(x,y,z)在(x,y,z)点的曲率,我现在做的是高斯曲率,这是个有理多项式,若是平均曲率,连有理多项式都不是了.在某个立方体区域上求这个问题的极值好象不是太好求.是不是若是知道极大极小,问题就如xing_xing_xing所说的可以解决了,若没法知道极值,是不是这样就不行了,那么是不是还有别的方法可以解决呢?