js图片旋转之后坐标定位问题
正方形A ===> 宽高200px, 上150px、左150px
白色点 ===> 上200px、左180px (位置不变)
正方形A旋转一定角度(旋转角度不固定本例是45°,旋转是用的css3的rotate按照中心点旋转)
怎么计算白色点距离旋转后B的上边和左边的距离?
求大佬解答谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
去了解下极坐标方程,可以视为坐标轴旋转45度,或者白色点逆时针旋转了45度,
计算出白色点的坐标,转换为极坐标,加上45度角,再转回直角坐标即可。
然后代入两边的X = -100;Y = 100减一下就行
直角转极坐标
极坐标转直角坐标直接用
x = r*cos(θ),
y = r*sin(θ),
就行,懒得找库函数代码了
剩下的作业自己独立完成吧
因为数学不太行,不能直接写最终的矩阵,索性连推导过程也写一下。
分解为两步:
已知旋转的矩阵:
$$
A =
\begin{bmatrix}
cos(a)&-sin(a)\\
sin(a)&cos(a)
\end{bmatrix}
$$
假设中心点原来的坐标是
$$
C = \begin{bmatrix}cX\\cY\end{bmatrix}
$$
变换后成了
$$
C' = A·C = \begin{bmatrix}cX·cos(a) - cY·sin(a) \\ cX·sin(a) + cY·cos(a)\end{bmatrix}
$$
把这个点平移回去,对应的向量
$$
M = C - C' = \begin{bmatrix}cX·(1 - cos(a)) + cY·sin(a) \\ cY·( 1 - cos(a)) - cX·sin(a) \end{bmatrix}
$$
把旋转变换的矩阵和这个平移向量合成一个仿射矩阵
$$
S = \begin{bmatrix}A&M\\0&1\end{bmatrix} =
\begin{bmatrix}
cos(a)&-sin(a)&cX·(1 - cos(a)) + cY·sin(a)\\
sin(a)&cos(a)&cY·( 1 - cos(a)) - cX·sin(a)\\
0&0&1
\end{bmatrix}
$$
然后任意点
P(x, y)
旋转后的坐标$$
P' = S · \begin{bmatrix}x\\y\\1\end{bmatrix}
$$
推导过程应该没啥问题,不过中间的公式可能会写错。
https://codesandbox.io/s/matr...