Javascript 基于光线跟踪的声反射模拟算法
我的职业是土木建筑,热爱数学、物理和计算机。对于我的一个项目,我正在设计一个有3面直墙和4面曲墙的房间。声源靠近左墙Javascript 基于光线跟踪的声反射模拟算法,javascript,Javascript,我的职业是土木建筑,热爱数学、物理和计算机。对于我的一个项目,我正在设计一个有3面直墙和4面曲墙的房间。声源靠近左墙 +------- | \ | + | | / +------- 有了一些空闲时间,我决定尝试使用JavaScript和CanvasAPI对这个房间的声学进行建模。我的目标是计算房间中的每一点: 将直接从声源发出的声音与墙壁反射的声音(包括弯曲声)相加得到的净声强。这将包括由平方反比定律引起的衰减和墙壁的吸收 混响特性,通过跟踪直接来自声源
+-------
| \
| + |
| /
+-------
有了一些空闲时间,我决定尝试使用JavaScript和CanvasAPI对这个房间的声学进行建模。我的目标是计算房间中的每一点:
A
是源,O
是曲线的中心,B
是我们当前测试的房间点,X
是曲线上的点。对于二次反弹,èAXO=èBXO。我们知道A
,O
和B
。如果我们能找到X
,那么BX
需要向后延伸一段等于AX
的距离,并且源图像将位于那里。问题是查找X
是一个非常困难的问题。即使可以做到这一点,它也只能解释二次反弹。三次反弹将更难计算
我认为选择2是更好的解决办法。但是我没有足够的数学/计算机技能来独自解决这个问题。此时此刻,我试图解决这个问题不是为了我的项目,而是为了我个人的好奇心。如果你们能解决这个问题并分享你们的解决方案,我将不胜感激。或者,如果你能让我深入了解这个问题,我很乐意进一步研究这个问题
我缺乏计算插值和光线跟踪方面的专业知识(我认为这是这个问题所需要的)
谢谢,
AsimSo。有了劳拉的指点,以及对矩阵数学和bresenham的线渲染算法的深入研究,我终于能够完成这个爱好项目这里列出了针对类似问题希望遵循此路线的任何人的步骤
[xy1]=[x0y01]+t*[dx dy1]
。圆可以表示为(X-C)^2=r^2
[-dy dx 1]
)。对于圆,法线为X-C
X
+
+B
+ +
A O