反转sin和cos变换

Nic*_*ick 1 math trigonometry

我正在使用基本的sin和cos操作2D地图非常成功地给出了3d透视图.

我遇到的问题是我试图找到视口中可见的内容.有效地进行反向转换,输出为[0,0]和[宽度,高度],我想知道我的地图上的那些点位于何处.

我已经到了试图扭转的地步:

display_x = (source_x * cos(z)) + (source_y * sin(z))
display_y = (source_y * cos(z)) - (source_x * sin(z))
Run Code Online (Sandbox Code Playgroud)

如果我知道display_xdisplay_ysource_xsource_y是未知的,我怎么能解决未知是什么?我的联立方程知识有点生疏.

小智 5

你实际上正在使用2d旋转矩阵(我很确定你在display_y的定义中将source_x替换为source_y的拼写错误)

http://en.wikipedia.org/wiki/Rotation_matrix

[ cos(z), sin(z) ] [ source_x ] = [ display_x ]
[-sin(z), cos(z) ] [ source_y ]   [ display_y ]
Run Code Online (Sandbox Code Playgroud)

你需要做的就是反转这个矩阵,发现它是转置(在对角线上翻转),因为它保证是正交的.

所以它应该是:

display_x = (source_x * cos(z)) - (source_y * sin(z)) 
display_y = (source_x * sin(z)) + (source_y * cos(z))
Run Code Online (Sandbox Code Playgroud)