首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >直线三角形的Actionscript角度

直线三角形的Actionscript角度
EN

Stack Overflow用户
提问于 2009-08-19 15:25:33
回答 3查看 4.4K关注 0票数 2

如何在actionscript 3中找到两点之间的直线角度。

我有一个对象,在给定代表起点、弯头和终点的点的情况下,动态地向外显示箭头。

我需要直线的角度来旋转尖端的箭头,以准确地指向正在绘制的当前线段。

我可以很容易地得到直角线的角度,通过检测其中一个轴是否为0,但需要两点之间的任何线的角度。

我很熟悉获取直线的点,例如,在47度处绘制一条100px的直线:

代码语言:javascript
运行
复制
var length:Number = 100;
var angle:uint = 48
graphics.lineTo(Math.cos(angle) * length, Math.sin(angle) * length);

但我很难从线上得到角度:

我需要的是

给定直线的起点和终点,直线的角度是多少。

非常感谢您的任何建议

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-08-19 21:30:18

每个人都在建议使用Math.atan()的公式,给出了分母中0种情况的警告。已经有一个完整的函数可以做到这一点--它是Math.atan2()

只需传入一个X和一个Y值,它就会给出一个角度。没有特殊情况--只有坐标。通常,返回值以弧度表示,从-pi到+pi。

票数 5
EN

Stack Overflow用户

发布于 2009-08-19 15:30:44

角度(也称为直线的斜率)的公式如下:

代码语言:javascript
运行
复制
angle = Math.atan((y2 - y1) / (x2 - x1))

其中:(x1,y1)是第一个点(直线起点)的坐标,(x2,y2)是第二个点(直线终点)的坐标

另外,请注意角度是以弧度为单位返回的,因此如果您需要以度为单位获取角度,则需要乘以180,再除以PI:

代码语言:javascript
运行
复制
angleInDegrees = angle * 180/Math.PI;
票数 1
EN

Stack Overflow用户

发布于 2009-08-19 15:35:07

你用你的公式得到了这条线的终点,这条线是正确的。你只需要反转这个方程式:

代码语言:javascript
运行
复制
tan(theta) = opposite / adjacent

这就给出了:

代码语言:javascript
运行
复制
angle = arctan(opposite / adjacent)

其中,反方向是高度(y),相邻方向是长度(x)。

要小心,因为当相邻的值为零(除以零)时,它就会崩溃,arctan会为零本身抛出一个异常,所以你需要捕获垂直或水平的线的特殊情况。

正如Miky D指出的那样,角度是以弧度表示的,但无论如何,您可能需要以这种形式来计算箭头的角度。

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

https://stackoverflow.com/questions/1300690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档