ActionScript学习笔记(三)——三角学应用(旋转、波形,圆椭圆、勾股定理)

一门语言的数据类型,流程控制,函数,面向对象,核心API这些都是次要的,因为接触一门语言这些都要接触到,但是前面三者大同小异的,所以就算法而言才是正儿八经的王道,所以这次就好好总结一下一些动画的算法。先从三角学应用开始。

三角函数不用提了,对于高中复习两年的我现在都还记得很清楚的,你让我重新推导一遍都没什么大问题。原来总结了一部分但是由于代码原来那个博客发上来太麻烦了。并且还有很多好玩的没有总结完呢,尤其是那个椭圆运动仿照万有引力的那种。既然是动画总得在帧事件当中吧,不多提咯。

0、角度弧度转化

弧度(radians) = 角度(degrees) * Math.PI / 180;

角度(degrees) = 弧度(radians) * 180 / Math.PI;

1、旋转

例子:围着鼠标旋转

var dx:Number = mouseX - sprite.x;
var dy:Number = mouseY - sprite.y;
var radians:Number = Math.atan2(dy,dx);
sprite.rotation = radians * 180 / Math.PI;

2、平滑的上下运动(也就是正弦或余弦运动)

sprite.y = Math.sin(angle)*50;
angle += speed;

3、心跳运动(忽大忽小)

sprite.scaleX = sprite.scaleY = Math.sin(angle) * range;
angle += speed;

4、双角波形(没有规律的乱飞)

sprite.y = Math.sin(angle)*50;
sprite.x = Math.sin(angle)*50;

5、绘制波形

sprite.x += xSpeed
sprite.y = Math.sin(angle)*50;
angle += speed;

6、圆

sprite.x = centerX + Math.cos(angle)*radius;
sprite.y = centerY + Math.sin(angle)*radius;
angle += speed;

7、椭圆

//和圆差不多,俩半径即可
sprite.x = centerX + Math.cos(angle)*radiusX;
sprite.y = centerY + Math.sin(angle)*radiusY;
angle += speed;

8、勾股定理(两点间距离)

var dx:Number = sprite_1.x - sprite_2.x;
var dy:Number = sprite_1.y - sprite_2.y;
var distance:Number = Math.sqrt(dx*dx + dy*dy);
原文地址:https://www.cnblogs.com/flashbird/p/3343824.html