首页 文章

关于矢量,顶点,边,光线,线和线段的实现的一般性问题

提问于
浏览
1

这只是一个关于光线(和/或线段或边缘等)的大致一般性问题,以及它们在软件渲染的3d引擎中的位置,该引擎是/不执行光线跟踪操作 . 我是第一个承认我对这些东西知之甚少的人,所以请善待 . :)

好的,我想知道为什么不使用参数化线而不是光线(或者它们是??) . 我查看了互联网上的几个cpp文件,看到有几个资源定义了一个Ray.cpp对象,一个有顶点和一个向量,另一个用点和向量 . 我也是线条和线段背后的数学新手,所以请光临我 . 我非常确定您可以定义仅包含法线或矢量的无限线,然后沿该线定义相交点以创建线段作为该无限线的子集 . 是否有任何当前的引擎以这种方式实现线路,还是有更好的方法来解决这个问题?

为了增加进一步的复杂性(或简单性?),维基百科说在向量空间中,线段的 endpoints 通常是向量,尤其是u - > uv,如果用空间中的向量定义一条线而不是交叉,则会产生很多结果 . 已定义,无限线,但我找不到任何暗示,这让我想知道在3D引擎中应用它时我的想法的有效性,甚至在查看Flash 3D引擎时创建了更复杂的,Papervision,我看了在Ray类中,它需要6个单独的数字值作为它的参数,然后将它们作为2个不同的Number3D(Papervision相当于Vector)返回,数据类型?!?

无论如何,我非常有兴趣看到实际上使用CORRECT方法实现这些低级部件的实现 . 关于这类事情的任何帮助,来源或一些好的对话都会很棒 . :d

1 回答

  • 1

    我很确定你可以定义一个只有法线或矢量的无限线

    不,你不能 . 矢量将定义线的方向,但所有平行线共享相同的方向,因此要选择一个,您需要使用线穿过的特定点将其固定 .

    线通常以Origin Direction * K形式定义,其中K将采用任何实际值,因为该形式对于其他数学来说很容易 . 你也可以在线上使用两个点 .

相关问题