反向矢量3
Inverse Vector3
我正在尝试将一些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.x,n/vector3.y和n/VECTOR.z(
相关文章:
- 没有找到相关文章