反向矢量3

Inverse Vector3

本文关键字:      更新时间:2023-10-16

我正在尝试将一些C++代码转换为Java。由于java中没有默认的Vector3数据类型,我创建了自己的自定义Vector3类。然而,我发现这样做是可能的:在C++中使用1/VECTOR3。这让我有点困惑,因为Vector3中有3个值。所以我想知道有人能向我解释一下,当使用1/Vector3时,这3个值中的每一个实际发生了什么吗?

我试图转换的代码来自页面底部的此处:https://www.scratchapixel.com/lessons/3d-basic-rendering/minimal-ray-tracer-rendering-simple-shapes/ray-box-intersection


class Ray  {  public: 
Ray(const Vec3f &orig, const Vec3f &dir) : orig(orig), dir(dir) 
{ 
invdir = 1 / dir; 
sign[0] = (invdir.x < 0); 
sign[1] = (invdir.y < 0); 
sign[2] = (invdir.z < 0); 
} 
Vec3 orig, dir;       // ray orig and dir 
Vec3 invdir; 
int sign[3];  };

首先,C++中没有Vec3。如果你仔细阅读那一页,它是所有类型的。正文有点草率。他们称之为";射线方向相反";但对于矢量,我不知道";相反";。无论如何

您只需要滚动到页面的末尾,按照完整示例的链接,然后查看geometry.h。这个部门有一个定义:

friend Vec3 operator / (const T &r, const Vec3 &v) 
{ return Vec3<T>(r / v.x, r / v.y, r / v.z); } 

(T为元件类型(

它们将标量除以向量定义为逐元素除法。

感谢用户:idclev 463035818。我发现,对于这篇特定的论文来说,这个操作本质上是在c#中进行的自定义操作(因为很明显,c#就是那么强大(。当你有一个数字时,我们将称之为n除以我们将称为vector3的vector3。从本质上讲,每个此操作都返回以下向量3(n/vector3.xn/vector3.yn/VECTOR.z(

相关文章:
  • 没有找到相关文章