`
china34420
  • 浏览: 136417 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

弹性运动(二):二维弹性运动

阅读更多
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	
	/**
	 * ...
	 * @author zkl
	 */
	public class Spring1 extends Sprite 
	{
		private var ball:Ball;
		private var vx:Number = 0;
		private var vy:Number = 50;
		private var spring:Number = 0.1;
		private var friction:Number = 0.95;
		private var targetX:Number = stage.stageWidth / 2;
		private var targetY:Number = stage.stageHeight / 2;
		
		public function Spring1():void
		{
		    init();
		}
		private function init():void
		{
		    ball = new Ball;
			addChild(ball);
			//ball.y = stage.stageHeight / 2;
			addEventListener(Event.ENTER_FRAME, EnterFrame);
		}
		private function EnterFrame(e:Event):void
		{ 
			//与目标点的距离:
			var dx:Number = targetX - ball.x;
			var dy:Number = targetY - ball.y;
            //下面计算加速度。加速度与距离成正比,也就是距离乘以 spring 的值
			var ax:Number = dx * spring;
			var ay:Number = dy * spring;
            //把加速度加到速度向量中。
			vx += ax;
			vy += ay;
			//引入摩擦力
		    vx *= friction;
			vy *= friction;
			
			ball.x += vx;
			ball.y += vy;
		}
	}
}


最后加入重力,修改如下
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.display.Graphics;
	/**
	 * ...引入y向速度后为二维弹性运动
	 * @author zkl
	 */
	public class Spring1 extends Sprite 
	{
		private var ball:Ball;
		private var vx:Number = 0;
		private var vy:Number = 20;
		private var spring:Number = 0.1;
		private var friction:Number = 0.95;
		//重力
		private var gravity:Number = 8;
		//private var targetX:Number = stage.stageWidth / 2;
		//private var targetY:Number = stage.stageHeight / 2;
		
		public function Spring1():void
		{
		    init();
		}
		private function init():void
		{
		    ball = new Ball;
			addChild(ball);
			//ball.y = stage.stageHeight / 2;
			addEventListener(Event.ENTER_FRAME, EnterFrame);
		}
		private function EnterFrame(e:Event):void
		{ 
			//与目标点的距离:
			var dx:Number = mouseX - ball.x;
			var dy:Number = mouseY - ball.y;
            //下面计算加速度。加速度与距离成正比,也就是距离乘以 spring 的值
			var ax:Number = dx * spring;
			var ay:Number = dy * spring;
            //把加速度加到速度向量中。
			vx += ax;
			vy += ay;
			vy += gravity;
			//引入摩擦力
		    vx *= friction;
			vy *= friction;
			
			ball.x += vx;
			ball.y += vy;
			
			drawLine(mouseX, mouseY, ball.x, ball.y);
		}
		private function drawLine(x1:Number,y1:Number,x2:Number,y2:Number):void
		{
		    graphics.clear();
			graphics.lineStyle(1);
			graphics.moveTo(x1, y1);
			graphics.lineTo(x2, y2);
		}
	}
	
}
分享到:
评论
2 楼 china34420 2010-08-09  
再画线绳子吧,哈哈代码修改如下
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.display.Graphics;
	/**
	 * ...引入y向速度后为二维弹性运动
	 * @author zkl
	 */
	public class Spring1 extends Sprite 
	{
		private var ball:Ball;
		private var vx:Number = 0;
		private var vy:Number = 20;
		private var spring:Number = 0.1;
		private var friction:Number = 0.95;
		//private var targetX:Number = stage.stageWidth / 2;
		//private var targetY:Number = stage.stageHeight / 2;
		
		public function Spring1():void
		{
		    init();
		}
		private function init():void
		{
		    ball = new Ball;
			addChild(ball);
			//ball.y = stage.stageHeight / 2;
			addEventListener(Event.ENTER_FRAME, EnterFrame);
		}
		private function EnterFrame(e:Event):void
		{ 
			//与目标点的距离:
			var dx:Number = mouseX - ball.x;
			var dy:Number = mouseY - ball.y;
            //下面计算加速度。加速度与距离成正比,也就是距离乘以 spring 的值
			var ax:Number = dx * spring;
			var ay:Number = dy * spring;
            //把加速度加到速度向量中。
			vx += ax;
			vy += ay;
			//引入摩擦力
		    vx *= friction;
			vy *= friction;
			
			ball.x += vx;
			ball.y += vy;
			
			drawLine(mouseX, mouseY, ball.x, ball.y);
		}
		private function drawLine(x1:Number,y1:Number,x2:Number,y2:Number):void
		{
		    graphics.clear();
			graphics.lineStyle(1);
			graphics.moveTo(x1, y1);
			graphics.lineTo(x2, y2);
		}
	}

}
1 楼 china34420 2010-08-09  

var dx:Number = targetX - ball.x;  
var dy:Number = targetY - ball.y; 

改为再试一试,挺cool的
var dx:Number = mouseX - ball.x;
var dy:Number = mouseY - ball.y;

相关推荐

    二维粘弹性人工边界斜波入射地震分析ansys命令流

    2. **二维模型**:在本案例中,我们只考虑水平和垂直两个方向的运动,即忽略地球曲率和深度的影响,这在某些场景下能够简化问题,降低计算复杂度。 3. **粘弹性材料**:粘弹性材料指的是同时具有弹性(即时恢复形变...

    OpenGL可运动的弹性绳子

    OpenGL可运动的弹性绳子。使用弹性网络,一维弹性物体,包含两个头文件,内涵绘制函数和物理计算函数。绳子的一端可以操控,另一端在中立控制下自然摆动。

    umat.rar_umat粘弹性_二维UMAT_地震_粘弹性umat

    在给定的“umat.rar”压缩包中,包含了一个名为“umat.for”的源代码文件,这是用FORTRAN编程语言编写的UMAT子程序,专门用于描述二维线性粘弹性材料。 粘弹性材料是一种同时表现出弹性(即时恢复形变)和粘性...

    行业分类-设备装置-超声电机驱动的二维直线运动平台.zip

    超声电机驱动的二维直线运动平台是一种精密定位和运动控制技术的应用实例,广泛应用于科研、制造、医疗等领域。这种装置通常结合了超声电机的独特性质,以实现高速、高精度和低摩擦的线性运动。 超声电机,又称...

    用c#编写的二维弹球球小游戏

    标题中的“用C#编写的二维弹球球小游戏”指的是使用C#编程语言开发的一款基于二维平面的游戏。C#是一种广泛应用于游戏开发的高级编程语言,由微软公司开发,尤其在Windows平台上的游戏开发中非常常见。这款弹球游戏...

    运动的球(简单二球运动)

    标题中的“运动的球(简单二球运动)”指的是一个基于计算机编程的模拟运动的球体模型,可能是通过二维平面来展示两个球体的动态运动情况。这种模型通常用于教学目的,让学生理解物理运动的基本原理,例如重力、碰撞...

    SH波的二维时域各向同性(粘)弹性FD建模和全波.zip

    标题中的“SH波的二维时域各向同性(粘)弹性FD建模和全波”涉及了地震学和数值模拟领域的一些核心概念。这里,我们来深入探讨这些概念: 1. **SH波**:SH波,即剪切波(Shear Wave),是地震波的一种类型,它沿...

    二维Boussinesq方程组解的分支

    二维Boussinesq方程组解的分支问题探讨了在给定周期性边界条件下,二维Boussinesq方程组的解随时间演化时出现的新解的生成和消失现象。这一数学物理问题通常被用来描述热对流现象,广泛应用于海洋学、大气科学以及...

    基于matlab二维射线追踪程序地震声波正演源程序

    基于MATLAB的二维射线追踪程序是这样的一个工具,它利用数学模型模拟地震波在地球内部的传播路径,从而推断地质结构。本程序主要关注的是地震声波的正演模拟,即通过设定初始条件,预测地震波如何从震源出发,经过...

    vs+opengl实现二维弹球游戏

    在本项目中,"vs+opengl实现二维弹球游戏" 是一个计算机图形学课程设计实验,主要利用Microsoft Visual Studio(VS)集成开发环境和OpenGL图形库来创建一个简单的二维弹球游戏。OpenGL是一个跨语言、跨平台的编程...

    ABAQUS切削仿真实例(包括一个二维切削实例和两个三维切削实例)

    本压缩包包含的ABAQUS切削仿真实例分为两类:二维切削和三维铣削。这两个实例通过inp文件格式进行设置,这是ABAQUS中的输入文件,用于定义几何形状、材料属性、边界条件、载荷和求解参数等。 一、二维切削实例 在二...

    对称12弹性振子的二维非线性振动 (2011年)

    应用拉格朗日方程方法研究了理想对称十二弹性振子做二维运动的变化规律,得到其微小振动的控制方程。用数值解法求解振动方程,得到了振子运动的时程响应图样。结果表明:理想对称十二弹性振子的振动为非简谐的周期性...

    ANSYS仿真二维被动,ansys运动仿真,ansys源码.zip

    在ANSYS仿真软件中,二维被动(2D Passive)通常指的是在二维空间内进行的静力学或动力学分析,其中“被动”可能是指模型中的某些部分是受外界影响而不施加主动力的组件。ANSYS运动仿真(ANSYS Motion Simulation)...

    MATLAB可视化大学物理学 第03章 运动的守恒定律 p3_7二维完全非弹性碰撞的速度和损失的机械能 共4页.pptx

    MATLAB可视化大学物理学 第01章 运动学 MATLAB可视化大学物理学 第02章 牛顿运动定律 MATLAB可视化大学物理学 第03章 运动的守恒定律 MATLAB可视化大学物理学 第04章 刚体 MATLAB可视化大学物理学 第05章 振动 ...

    作大运动弹性薄板中的几何非线性-作大运动弹性薄板中的几何非线性与耦合变形.rar

    在MATLAB中处理这种问题,首先需要建立薄板的三维几何模型,并通过适当的坐标变换将其简化为二维问题。然后,定义薄板的边界条件和荷载,如均匀分布载荷、集中载荷或周期性载荷。接下来,采用有限元法(FEM)将连续...

    低雷诺数下二维圆柱涡激运动数值模拟

    在模拟弹性支撑刚性二维圆柱的涡激运动时,研究者们关注的主要现象包括“拍击”和“锁定”现象。拍击现象指的是由于圆柱尾流的周期性变化,导致圆柱体的振动在流向和横向力的作用下出现振幅周期性增减的特征;锁定...

    二维声子晶体MATLAB程序.rar_二维声子晶体能带结构计算_声子晶体_源码

    二维声子晶体是一种由两种或多种不同材料周期性排列构成的二维结构,它在声学领域具有重要研究价值。在声子晶体中,声波的传播受到周期性势场的调控,导致出现各种有趣的声学现象,如带隙、局域模式等。本程序是基于...

    SOFI2D.zip_弹性波方程_弹性波模拟_有限差分模拟_波 差分_粘弹性

    这个文件很可能是一个程序或软件的发行版本,用于二维粘弹性声波方程的有限差分模拟。"SOFI2D"可能代表“二维粘弹性声波方程求解器”或者类似的含义,是一个专门的数值计算工具。 "弹性波方程"是物理学和地球科学中...

Global site tag (gtag.js) - Google Analytics