gpt4 book ai didi

javascript - JS Ray Tracer 对象无限长

转载 作者:行者123 更新时间:2023-12-03 11:44:17 26 4
gpt4 key购买 nike

我用 JS 编写了一个非常原始的光线追踪器,它通过从每个像素发射一条光线并检查它是否与立方体相交来仅渲染一个立方体。如果相交,则该像素设置为白色,如果不相交,则设置为黑色。

然而,对象从正确的位置开始,但尺寸不正确。用图片最好地解释这一点:

raytracing attempt with one cube

我已经发布了代码here 但是如果你运行它,它会花费很长时间如果你想加快速度然后减少迭代次数

function main_v

我认为问题出在光线相交测试(intersect_b 函数)上,但我一直无法找到问题所在。交集函数直接改编自here

最佳答案

一个问题是这样的:

function c2p_p(r) {
return r.type == vType.Cartesian ? {
r: Math.sqrt(r.x ^ 2 + r.y ^ 2 + r.z ^ 2),
theta: Math.acos(r.z / Math.sqrt(r.x ^ 2 + r.y ^ 2 + r.z ^ 2)),
phi: Math.atan2(r.y / r.x),
type: vType.Polar
} : r
}

在 JavaScript 中,^ 运算符是按位异或,而不是求幂。只需编写 r.x*r.x + r.y*r.y + r.z*r.z 即可。

关于javascript - JS Ray Tracer 对象无限长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26127443/

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