gpt4 book ai didi

math - 使用两个 float 存储 3D 法向量的有效方法

转载 作者:行者123 更新时间:2023-12-01 01:05:43 26 4
gpt4 key购买 nike

我需要存储 3D 法向量,即向量 (x, y, z) 这样 x^2 + y^2 + z^2 = 1 .但是由于空间限制,我只能用2个花车来存放它。因此,通过仅存储 xy,第三个分量可以计算为 sqrt(1 - x^2 - y^2),即一个平方根,两个乘积和两个减法。

存储向量的最有效方法是什么,以便尽可能快地读取它们,并且尽可能不偏向一个空间方向?

编辑

现在将值 (a, b)a = x - yb = x + y 一起使用。

最佳答案

您可以通过球坐标存储向量来满足您的空间限制。众所周知,单位球面上的每个点,即每个单位向量,至少有一对球坐标来表征它。


或者如果你想要一些复杂的东西:复杂的平方函数将单位圆盘映射到它的双覆盖。因此,您可以将左半圆盘用于上半球,将右半圆盘用于下半球。

SphereFromDisk(a,b)
a2=a*a; b2=b*b; r2=a2+b2; // assert r2 <= 1
x = a2 - b2;
y = 2*a*b
z = sqrt(1-r2*r2)
if(a<0 or (a=0 and b<0) z=-z
return (x,y,z)

关于math - 使用两个 float 存储 3D 法向量的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29251819/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com