Danis Asked:2020-08-29 04:44:55 +0000 UTC2020-08-29 04:44:55 +0000 UTC 2020-08-29 04:44:55 +0000 UTC 如何在 3D 空间中以某个角度发射光束? 772 这是 2D 中的示例: def ray(x, y, angle, step): new_x = x + sin(angle) * step new_y = y + cos(angle) * step return new_x, new_y python 1 个回答 Voted Best Answer MarianD 2020-08-29T09:32:21Z2020-08-29T09:32:21Z 3D 中会有 2 个角度 - 我不会称它们为angleand angle2,但使用熟悉的名称为它们azimuth和( zzenith轴之间的角度): def ray(x, y, z, azimuth, zenith, step): new_x = x + sin(zenith) * cos(azimuth) * step new_y = y + sin(zenith) * sin(azimuth) * step new_z = z + cos(zenith) * step return new_x, new_y, new_z 因为 我将您在 xy 平面中的角度重命名为angle,并且向量在 xy平面中的投影将具有 length 。azimuthsin(zenith) * step 当您想要xy平面(仰角)之间的角度而不是z轴之间的角度时,请应用: def ray(x, y, z, azimuth, elevation, step): new_x = x + cos(elevation) * cos(azimuth) * step new_y = y + cos(elevation) * sin(azimuth) * step new_z = z + sin(elevation) * step return new_x, new_y, new_z 笔记: 在您的示例angle中,角度来自y轴,在我的回答中,它来自xazimuth轴,如图所示。 cos(azimuth)交换并在必要sin(azimuth)时从y轴获取方位角的正确函数。
3D 中会有 2 个角度 - 我不会称它们为
angleandangle2,但使用熟悉的名称为它们azimuth和( zzenith轴之间的角度):因为 我将您在 xy 平面中的角度重命名为
angle,并且向量在 xy平面中的投影将具有 length 。azimuthsin(zenith) * step当您想要xy平面(仰角)之间的角度而不是z轴之间的角度时,请应用:
笔记:
在您的示例
angle中,角度来自y轴,在我的回答中,它来自xazimuth轴,如图所示。cos(azimuth)交换并在必要sin(azimuth)时从y轴获取方位角的正确函数。