倾斜角和斜率
演示:
坐标中两点可以确定条直线直线和线段区别线段有长度而直线是没有长度通过两点可以确定条直线通过角度和个定点也能确定条直线
直线和X轴正半轴所成角称直线倾斜角当倾斜角不等于90度时倾斜角正切称为直线斜率图:
其中角a就是直线倾斜角而斜率就是直角 3角中对边BC和邻边AB比值即正切值正切值通过Math类tan思路方法可以得到
给定A点和C点坐标可求得角a角度值
求角a正切值算法:
(C.y - A.y) / (C.x - A.x);
下面代码求直线斜率:
(C.x A.x)?Infinity:(C.y - A.y) / (C.x - A.x);
代码先判断两点横坐标是否相等如果相等介绍说明直线垂直于x轴这时不存在斜率所以给斜率定特殊值Infinity
例:
1、新建Flash文档取名存盘
2、创建影片剪辑图层1用椭圆工具绘制个圆填充色和大小根据需要定插入图层2 as层输入代码:
//注册鼠标按下事件侦听器
this.addEventListener(MouseEvent.MOUSE_DOWN,startDragFunc);
//注册鼠标释放事件侦听器
this.addEventListener(MouseEvent.MOUSE_UP,stopDragFunc);
//定义接收按下事件
function startDragFunc(e:MouseEvent);
{
//开始拖动
e.target.startDrag;
//更新显示
e.updateAfterEvent ;
}
//定义接收释放事件
function stopDragFunc(e:MouseEvent);
{
//停止拖动
e.target.stopDrag
}
3、返回场景1在图层1第帧拖入两个影片剪辑在属性面板中输入剪辑名字p1 、p2
4、插入图层2选择文本工具创建静态文本字体大小15 、字体自定输入:斜率:在右面创建动态文本名:k_txt在下面再次创建静态文本输入:倾斜角:右面创建动态文本名:a_txt
5、插入图层3as层输入代码:
//导入数学
"Math2.as";
//创建两个点
var A:Po= Po
var B:Po= Po
//创建用于绘制箭头容器
var arrow_shape:Shape= Shape;
this.addChild(arrow_shape);
stage.addEventListener(Event.ENTER_FRAME,loop);
function loop(e:Event):void
{
//清除绘图
arrow_shape.graphics.clear;
//在两点间绘制箭头
drawArrow(arrow_shape.graphics,p1.x,p1.y,p2.x,p2.y);
//设置点A值
A.x=p1.x;
A.y=p1.y;
//设置点B值
B.x=p2.x;
B.y=p2.y;
//根据点A和点B创建直线
var line:Line= Line(A,B);
//把斜率保存两位小数并转换为串显示出来
k_txt.text=line.K.toFixed(2);
//把倾斜角取整后显示
a_txt.text=line.angle.toFixed;
}
上面代码把弧度和角度转换等放在Math2.as文件中通过导入Math2.as文件就可以使用这些数学Math2.as文件中添加了绘制箭头drawArraw
5、测试影片看下效果如果需要输出p2x、y坐标添加代码:
x_txt.text = p2.x;
y_txt.text = p2.y;
界面上添加静态文本和动态文本就不用细说了吧如果不需要显示斜率注释掉
最新评论