javascript – HTML5 Canvas:旋转时计算x,y点
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – HTML5 Canvas:旋转时计算x,y点,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1602字,纯文字阅读大概需要3分钟。
内容图文
![javascript – HTML5 Canvas:旋转时计算x,y点](/upload/InfoBanner/zyjiaocheng/706/de29b55c99d14612b97fae7a1010fd76.jpg)
我开发了一个HTML5 Canvas应用程序,它涉及读取一个xml文件,该文件描述了我需要在画布上绘制的箭头,矩形和其他形状的位置.
XML布局示例:
<arrow left="10" top="20" width="100" height="200" rotation="-40" background-color="red"/>
<rect left="10" top="20" width="100" height="200" rotation="300" background-color="red"/>
如果旋转对象,则涉及在围绕另一个点(左侧,顶部)旋转时计算点的位置(旋转后称为P的新位置).我试图想出一个通用函数/公式,我可以用来计算这个点P,但我的数学有点弱&我无法确定我打算使用什么弧/切线公式.
你可以帮我提出一个公式,我可以用它来计算旋转点P,它可以是正和旋转的.负?
在上面的例子中:点(14,446)是左,顶点和&点(226,496)是未旋转时物体的中点,因此点=(左侧宽度/ 2,顶部高度/ 2),蓝点是旋转时的中点.我知道如何计算点之间的线长(14,446)& (226,496)但不是如何计算蓝点x,y位置 – BTW:该线的长度与蓝点和蓝线之间的线相同. (14446)
len = sqrt( (496-446)^2 + (226-14)^2 );
= 227.56;
解决方法:
这很简单.在围绕坐标系原点的旋转中,角度θ坐标(x,y)正在变化为
x' = x * cos(Theta) - y * sin(Theta);
y' = x * sin(Theta) + y * cos(Theta);
因此,您需要的只是将旋转点转换为您拥有的点之一.让我们以更简化的方式写它:(x1,y1)=(14,446)和(x2,y2)=(226,496).你试图围绕(x1,y1)“旋转”(x2,y2).在新坐标系中计算(dx2,dy2),原点为(x1,y1).
(dx2,dy2) = (x2-x1,y2-y1);
现在旋转(正角度是逆时针):
dx2' = dx2 * cos(165 Degrees) - dy2 * sin(165 Degrees);
dy2' = dx2 * sin(165 Degrees) + dy2 * cos(165 Degrees);
最后一步是将点的坐标从(x1,y1)处的原点转换回原始(0,0);
x2' = dx2' + x1;
y2' = dy2' + y1;
ps:也读这个:) http://en.wikipedia.org/wiki/Rotation_matrix并且不要忘记大多数三角函数在不同的编程语言中主要处理弧度..
pps:我希望我没有害怕你 – 问你是否有任何问题.
内容总结
以上是互联网集市为您收集整理的javascript – HTML5 Canvas:旋转时计算x,y点全部内容,希望文章能够帮你解决javascript – HTML5 Canvas:旋转时计算x,y点所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。