假设我们有一个黑白图像(像素缓冲区),那么每个像素要么是黑色要么是白色(不是灰度)。
现在在图像中间的某个地方,放置一个绿点。出于渲染目的,它的半径可能为 n,但它确实是一个公正的点。给点一个随机选择的方向和速度,然后开始移动。如果图像全是白色像素,点会从图像边缘反弹,在图片周围无限游荡。这很容易......只需反转点向量的上升或运行。
接下来,假设图像有一些黑色像素团。当点遇到这些黑色像素团时,需要计算反射角。这也很容易,黑色像素有一个固定的斜率,就像我的草图一样(蓝色 X 代表黑色像素)。您可以找到蓝色 X 的斜率并轻松计算新向量。
但是黑色像素形成非常不友好的表面的情况呢?有哪些方法可以确定这个角度?
这是我感兴趣的主题。
一定有一些算法可以用于这种目的,但我在学校从来没有遇到过。我不是在问如何编写代码,而是在问如何编写算法来做到这一点。我有一些想法我会尝试,但如果有一些标准的方法可以做到这一点,我想了解它们。
显然我想从黑白开始,然后进入 RGBA。
我正在寻找有关此类主题的任何参考资料。非常欢迎网站、书籍或其他参考资料。
另外,如果有不同的 StackOverflow 标签可能很好,请告诉我。
非常感谢!
编辑**********更多图片和信息
也许我不清楚我所说的“不友好的表面”是什么意思。在上图中,我们的蓝色 X 恰好是一条线。想象一下它不是一条线,而是一个奇怪的形状的情况。
我们从以 2 斜率行进的绿色像素开始。假设它的向量是每帧 12 个像素的向量。它会有这样的预计路径:
但是假设我们有这样一条友好的线路,而不是一条友好的线路:
在我看来,如果这是一个球和一些墙壁,我可以看到会发生什么。