【发布时间】:2015-09-28 18:45:21
【问题描述】:
我在 3D 空间中有一个固定的光线Lr 和一个可以围绕固定点Mrot 旋转的镜子M,这个点不在镜子的同一平面上,换句话说就是镜子平面与以Mrot 为中心、半径固定为d 的球体相切。使用这种配置,我想找到一个方程,它接收点 P 作为参数,并在 3D 空间中旋转镜子。
我们可以认为镜像平面没有边界(无限平面)并且它的旋转没有限制。此外,镜子只在其旋转点的另一侧反射。
图中是两个输入点P1和P2不同的情况,它们各自的解角alpha1和alpha2。图片为 2D 以简化图纸,真实案例为 3D。
目前我正在计算与镜面随机旋转的交点,然后计算光线反射,看看离我想要到达的点 (P) 有多远。最后用一些改变旋转的条件进行迭代,直到匹配为止。
显然这是一种矫枉过正,但我无法弄清楚如何以分析方式对其进行编码。
有什么想法吗?
注意:我注意到,如果镜子围绕其平面中的一个点(Mrot)旋转并且光线到达该点(Mrot),我可以轻松计算出镜子角度,但不幸的是不是我的情况。
【问题讨论】:
-
您能否详细说明镜子可以移动的方式?它就像在球体表面上假设的 Spektre 一样吗?你认为只有飞机的一侧反射吗?
-
@SebastianCabot 镜子相对于点
Mrot旋转,并且所有可能的旋转都派生到从镜子表面到点Mrot的恒定距离。就像@Spektre 假设的那样。而反射面是镜子的反面,像@Spektre 提议的那样面向Mrot。
标签: c++ opencv graphics computer-vision raytracing