【发布时间】:2013-10-21 19:42:59
【问题描述】:
我正在做光线追踪,我有屏幕。我想在世界坐标中定义它
MaxPCx = 1;
MaxPCy = 1 / AspectRatio;
x = linspace(0,MaxPCy,Height_proj);
y = linspace(0,MaxPCx,Width_proj);
[CoordsY,CoordsX] = ndgrid(x,y);
% Convert Projector Coordinates To Screen Coordinates
ScreenXCoordinates = (CoordsX .* MaxPCxInv).* SizeX_scr + Screen_OffsetX;
ScreenYCoordinates = (1 - CoordsY .* MaxPCyInv ).* SizeY_scr + Screen_OffsetY;
ScreenZCoordinates = f(x,y) % this function is the same used in my software that I used exactly the same
所以我现在的问题是我从软件中获得了 ScreenXCoordinates ,ScreenYCoordinates 和 ScreenZCoordinates 并且我将它们与我的比较,所以 x 和 y 坐标的差异在 10^-9 的顺序上很好,但 z 方向的差异是真的很高,大约 10^-4,所以有人能给我建议吗。
然后我应用旋转矩阵和平移向量来转换到世界坐标
投影仪坐标在开头的生成(CoordsX 和 CoordsY)是否正确?
在此先感谢
【问题讨论】:
-
这个问题非常具体,但缺少有人需要帮助您的所有信息。你拿什么来比较?您说 Z 组件已关闭,但甚至没有向我们展示产生 Z 的代码。根据什么定义,CoordsX 和 CoordsY 是否正确?
-
我正在将我从模拟中获得的结果与我的设置软件使用的结果进行比较。其次,Z的计算是通过一个方程,它是软件使用的相同方程(复制粘贴,我检查了2次,它是相同的)
-
我会说如果 ScreenX/YCoordinates 非常匹配,那么您的 x,y 输入参数必须是正确的。只剩下 f(x,y)。
-
我知道我的结果发生了什么很奇怪,并且在 ScreenX/YCoordinates 之间得到密切匹配后我检查的第一件事是 f(x,y),它是相同的。反正比你好很多
-
所以请彼得留下您的评论作为接受它的答案。谢谢
标签: matlab graphics computer-vision raytracing