数学类 sin cos

      今天做了一个和数学类有关的例子:一个小球沿着一个圆的边旋转,小球发出一条射线,画出正弦的图像轨迹;

代码如下:

package{
	//导入需要的类
	//基类
	import flash.display.Sprite;
	//用于绘图
	import flash.display.Shape;
	//需要ENTER_FRAME事件
	import flash.events.Event;
	
	//定义类
	public class wave extends Sprite{
		//定义属性
		//坐标系左侧做圆周运动的圆
		private var circle:Shape=new Shape();
		//动态绘制正弦曲线
		private var sinLine:Shape=new Shape();
		//由圆向右绘制的水平线
		private var horiLine:Shape=new Shape();
		//由圆向x轴绘制的竖直线
		private var verLine:Shape=new Shape();
		//半径
		private const r:Number=100;
		//角度(绘图的主要依据)
		private var angle:Number=0;
		
		//构造函数,设置4个Shape实例并添加到显示列表
		public function wave(){
			circle.graphics.beginFill(0xFF00FF,.5);
			circle.graphics.drawCircle(0,0,10);
			circle.graphics.endFill();
			sinLine.graphics.lineStyle(2,0xFF0000);
			addChild(circle);
			addChild(sinLine);
			addChild(horiLine);
			addChild(verLine);
			}
			
			//触发绘图
			public function run(){
				circle.addEventListener(Event.ENTER_FRAME,circleEnter);
				}
			//停止绘图
			public function hold(){
				circle.removeEventListener(Event.ENTER_FRAME,circleEnter);
				}
			//停止绘图,重置变量和4个Shape实例
			public function reset(){
				hold();
				angle=0;
				circle.x=circle.y=0;
				sinLine.graphics.clear();
				sinLine.graphics.lineStyle(2,0xFF0000);
				horiLine.graphics.clear();
				verLine.graphics.clear();
				}
			//实现具体绘图过程
			private function circleEnter(e:Event){
				//递增角度,计算并更改小圆当前位置——让小圆做圆周运动
				angle+=2;
				var tempx:Number=-r+r*Math.cos(angle*Math.PI/180);
				var tempy:Number=-r*Math.sin(angle*Math.PI/180);
				circle.x=tempx;
				circle.y=tempy;
				//根据角度和小圆的纵坐标绘制直线段——正弦函数曲线的微小片断
				sinLine.graphics.lineTo(angle,circle.y);
				//绘制连接小圆和sinLine当前点的水平线
				horiLine.graphics.clear();
				horiLine.graphics.lineStyle(1,0x00FF00,.5);
				horiLine.graphics.moveTo(circle.x,circle.y);
				horiLine.graphics.lineTo(angle,circle.y);
				//绘制连接小圆向x轴的垂直线
				verLine.graphics.clear();
				verLine.graphics.lineStyle(1,0x0000FF,.5);
				verLine.graphics.moveTo(circle.x,circle.y);
				verLine.graphics.lineTo(circle.x,0);
				}
		}
	}

  

转载于:https://www.cnblogs.com/wenwubin/archive/2012/10/30/2747011.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值