首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何计算点在旋转形状AS3中的位置

如何计算点在旋转形状AS3中的位置
EN

Stack Overflow用户
提问于 2012-01-09 15:38:45
回答 2查看 2.5K关注 0票数 4

我正在创建一个游戏,在游戏中,我通过在板球半径周围创建点来绘制一系列多边形。

稍后我旋转形状,我需要基于旋转计算点的新位置(X,Y)。我有每个点的旧XY,形状中心的XY,形状半径和旋转。

看一下我的问题图表。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-09 15:47:42

为此,应该可以使用矩阵转换,但也可以手动完成:http://www.siggraph.org/education/materials/HyperGraph/modeling/mod_tran/2drota.htm

所以从本质上讲;

代码语言:javascript
运行
AI代码解释
复制
newX = initialX * Math.cos(angle) - initialY * Math.sin(angle);
newY = initialY * Math.cos(angle) + initialX * Math.sin(angle);
//Angle is in radians btw

这假设初始X/Y是相对于旋转中心的,因此您必须在开始之前减去中心点,然后在计算后再次添加它以正确放置它。

希望这能有所帮助!

票数 3
EN

Stack Overflow用户

发布于 2012-01-09 15:49:00

对于每个点,请执行以下操作:

代码语言:javascript
运行
AI代码解释
复制
alpha = arctan2(x, y)
len = sqrt(x^2 + y^2)
newX = len * cos(alpha + rotation)
newy = len * sin(alpha + rotation)

原始x,y和新的newX,newY坐标都是相对于旋转的中心。如果你的原始x,y是绝对的,你必须先计算相对:

代码语言:javascript
运行
AI代码解释
复制
x = xAbs - xCenter
y = yAbs - yCenter

确保您的arctan2函数提供的结果为PI/2,如果为x=0,则为-PI/2。原始的arctan函数不允许使用x=0。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8790931

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文