这只是一个关于射线(和/或线段或边缘等)及其在软件渲染的3d引擎中的位置,即/不执行射线跟踪操作的一个大的广义问题。我正在学习基础知识,而且我是第一个承认我对这些东西不太了解的人,所以请友好一点。:)
我想知道为什么不使用参数化的线来代替射线(或者它们是?)。我环顾了互联网上的几个cpp文件,看到几个资源定义了一个Ray.cpp对象,一个具有顶点和一个向量,另一个使用了点和向量。我非常肯定,您可以定义一条infinate线,只使用法线或向量,然后定义沿这条线的相交点,从而创建一个线段作为infinate线的子集。目前是否有任何引擎以这种方式实现线路,或者有更好的方法来实现这一点?
增加更多的复杂性(还是简单性?)维基百科说,在向量空间中,线段的终点通常是向量,特别是u -> u+ v,如果用向量在空间中定义一条直线,而不是与已经定义的infinate直线相交的话,就会有很大的意义,但我也找不到这种方法的任何实现,这让我怀疑我的想法在三维引擎中应用时的有效性,甚至在查看Flash3D引擎Papervision时,我看到了射线类,它以6个单独的数字值作为参数,然后将它们作为两个不同的Number3D (相当于向量的Papervision ),数据类型??
我会非常感兴趣地看到一些东西的实现,它实际上使用了正确的方法来实现这些低级别的部分,根据它们的真正定义。
发布于 2010-02-14 00:28:03
--我很肯定你可以用一个法线或向量来定义一个无限线
不,你不能。向量会定义直线的方向,但是所有的平行线都有相同的方向,所以要选择一个方向,你需要用直线穿过的一个特定点来确定它。
行通常是在Origin+ Direction*K形式中定义的,其中K将取任何实际值,因为该形式对于其他数学来说很容易。你最好在这条线上用两点。
https://stackoverflow.com/questions/2259655
复制相似问题