1

这只是一个关于光线(和/或线段或边缘等)及其在软件渲染的 3d 引擎中的位置的大问题,该引擎正在/不执行光线跟踪操作我正在学习基础知识,我是第一个承认我对这些东西不太了解的人,所以请善待。:)

我想知道为什么不使用参数化线而不是射线(或者它们是??)。我查看了互联网上的一些 cpp 文件,发现有几个资源定义了一个 Ray.cpp 对象,一个带有顶点和一个向量,另一个使用了一个点和一个向量。我很确定您可以定义一条只有法线或向量的无限线,然后沿着该线定义相交点以创建一条线段作为该无限线的子集。当前是否有任何引擎以这种方式实现线路,或者是否有更好的方法来解决这个问题?

为了增加进一步的复杂性(或简单性?)维基百科说,在向量空间中,线段的端点通常是向量,特别是 u -> u + v,如果在空间中用向量而不是用向量定义线,这很有意义与已经定义的无限线相交,但我也找不到任何实现,这让我怀疑在 3d 引擎中应用它时我的想法的有效性,甚至在查看 Flash 3D 引擎 Papervision 时会产生更复杂的情况,我查看了 Ray 类,它采用 6 个单独的数值作为参数,然后将它们作为 2 个不同的 Number3D(Papervision 等效于 Vector)、数据类型返回?!?

我很想看到一个实际使用正确方法来实现这些低级部分的实现,这些低级部分按照它们的真实定义。

4

1 回答 1

1

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

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

线通常以 Origin + Direction*K 形式定义,其中 K 可以取任何实际值,因为这种形式很容易用于其他数学运算。您也可以在线上使用两个点。

于 2010-02-14T00:28:03.303 回答