我在OPENGL中用N个三角面片形成了一幅地形,现在我已知在地形的上方的一个点,想从这个点引一条直线穿过地面,请问如何获取直线和地面的交点坐标?
或者说我想在OPENGL中用一个圆锥和地面相交,圆锥不显示,只显示地面,地面与圆锥相截的面用高亮度显示。然后我想知道圆锥的中心线与地面的交点的坐标!
如果第二个难以实现,只实现第一个的方法就行了。

解决方案 »

  1.   

    用N个三角面片形成了一幅地形,是不是在相同间隔的三角网格中,加上高度的起伏?如果是,那还是比较容易解决的。还有一个假设是:圆锥(你是不是想说圆柱的啊?)和直线垂直于三角网格所在的平面。第二个:就是判断顶点是不是在底圆里面,是就加亮该顶点(有光照就用材质,没的话就用glColor3f).如果你的三角网格够密的话,就可以实现你的效果。还有一个方法就是用GL的一个ARB扩展,叫体投影什么的好像,也可以实现,不过支持这个ARB的显卡好像不多第一个:找出直线所在的那个三角网格的cell(如果直线不垂直,这一步就比较复杂了),然后就求线面的交点(高中的立体几何里面有的)
      

  2.   

    刚才是从数学上去考虑了,
    其实在实践中用不着那样。具体到你的问题,
    你的N个三角形必然是可以索引的,
    你通过查询比较 点 和 三角形的 x y 坐标(忽略Z坐标)
    找到包含交点的三角形,
    然后求三角形平面上已知 x y 坐标的点的 z 值就是小菜一叠
      

  3.   

    如果只显示数字和ASC码,用位图的形式就可以。个人意见,比较笨拙。
    :)
      

  4.   

    能不能把你的程序让我看看啊,我也学习中,但还不知道怎么生成地形,
    我现在有了各个点的高度,非常感谢,my email:[email protected]
      

  5.   

    第二个问题关于相交区域高亮度显示的问题,其实用模版测试技术很容易实现,所谓的"体积阴影"(volume shadow)技术就是采用了模版测试来显示动态阴影,该项技术可以画出一个形状比较简单的物体在任意复杂物体上的投影,www.opengl.org 上有一个例子,还有csg(构建几何实体)操作可以对任何两个封闭的几何体进行交,并,差,但是不能求相交坐标,csg技术采用的也是模版测试技术,www.opengl.org上也有例子,你不妨用google搜索一下