gpt4 book ai didi

matrix - 投影矩阵在平面上投影一个点

转载 作者:行者123 更新时间:2023-12-01 14:35:56 27 4
gpt4 key购买 nike

enter image description here
如何确定 4x4 小号 矩阵,以便 P 在 XZ (Y=0) 平面上投影到 Q?
Q = 小号

最佳答案

射线有坐标 r (t) = L + t * ( P - L )。这是组件形式:

r_x = L_x + t*(P_x-L_x)
r_y = L_y + t*(P_y-L_y)
r_z = L_z + t*(P_z-L_z)

现在你需要找到 = r (t) 使得 r_y = 0 .这是在 t = -L_y/(P_y-L_y) 时完成的或者
Q_x = L_x - L_y/(P_y-L_y)*(P_x-L_x)
Q_y = 0
Q_z = L_z - L_y/(P_y-L_y)*(P_z-L_z)

一般来说,投影平面由单位法向量 定义。 = (n_x,n_y,n_z)以及平面到原点的距离 d。一个点 r (t) 如果 位于平面上r (t)· =d 其中 · 是向量点积。

点解 一般来说是

t = (d - n · L )/( n ·( P71907) |5|7916 |5 |79190

= L + t *( P - L )

在伪 C 风格代码中,上面是:
// L : Light Source 
// P : Point to be projected
// n : Plane _unit_ normal vector
// d : Distance of plane to the origin
// returns: The point Q along the ray that intersects the plane.
Vector3 HitPlaneWithRay(Vector3 L, Vector3 P, Vector3 n, double d)
{
double t = (d-Dot(L,n))/Dot(P-L,n);
return L + t*(P-L);
}
// Intersect ray with floor (Normal=[0,1,0], Distance=0)
Vector3 HitFloorWithRay(Vector3 L, Vector3 P)
{
return HitPlaneWithRay(L, P, Vector3.J, 0);
}

关于matrix - 投影矩阵在平面上投影一个点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24163987/

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