flash数学基础(1)

本文介绍了Flash动画制作中的数学原理,包括质点概念的应用、平面几何元素的表示与操作、直线及曲线方程的计算方法等,旨在帮助读者更好地理解并利用这些原理进行Flash创作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                                      

Flash应用数学基础

1.1研究对象---质点

   开始研究之前,我们先回顾一下我们在中学所学的物理,研究一个物体的时候,可以把这个物体以一个质点作为研究的对象。在Flash的动画世界中,同样我们研究Flash里面的元素的时候,我们可以把这些对象看作一个质点来研究。

 

1.2 平面几何在Flash世界中的应用

1.2.1 点的开始

我们的世界是充满了很多很多色彩元素,从太阳系看,地球只不过是太阳系中一个微小的行星。在整个地球看,人类只不过是地球一个很渺小的生物群体。从单个人类看,细胞只不过是构成人类的一小部分。说到这里,我们的平面几何从一个最原始的元素开始,我们把他称为“点”。点是平面几何最基础的部分,从它开始,我们开始从点出发,联想到其他的事情,如直线是由一个个点组合而成,一个面是由直线组合而成,而立体是面组成。这里构成一种的“整体和局部的关系”。

  

ActionScript 3.0当中能够体现到点的,有一类。flash.geom 包下的 Point

Point

Point 对象表示二维坐标系统中的某个位置,其中 x 表示水平轴,y 表示垂直轴

 

 

 

使用这个类的时候,我们可以发现是一种很容易的事情。有时候你会觉得非常实在,它可以记录我们的物体里面的某一个坐标点。

 

在构造函数当中:Point(x:Number = 0, y:Number = 0) 里面带有两个默认的参数,并赋予初始值。

如果我们希望将某一个点记录在这个坐标点当中,那么下面是一个简单的做法:

 

  var point:Point=new Point(物体.x,物体.y); //可以是显示对象DisplayObject类的xy值。

有了这个Point类,选择记录物体的方式就变得更加容易了。

 

我们尝试写一个与Point相关的小测试。这个测试在于让我们领会到点在As里面所使用。下面是一个很简单拖动例子。使用的关键是点的记录

 

package { import flash.display.Sprite; import flash.events.*; import flash.geom.Point; import flash.display.Shape; public class MouseGame extends Sprite { private var _sprite:Sprite; private var posion:Point; public function MouseGame() { _sprite=new Sprite(); addChild(_sprite); var _shape:Shape=new Shape(); addChild(_shape); //绘制一个简单的圆 _shape.graphics.beginFill(0xff0000,1); _shape.graphics.lineStyle(1,0,1); _shape.graphics.drawCircle(250,250,50); _shape.graphics.endFill(); _sprite.addChild(_shape); _sprite.addEventListener(MouseEvent.MOUSE_DOWN,startMascotDrag); stage.addEventListener(MouseEvent.MOUSE_UP, stopMascotDrag); _sprite.addEventListener(Event.ENTER_FRAME, dragMascot); } private function startMascotDrag(e:MouseEvent):void { posion=new Point(e.localX,e.localY);//将一个点保存在这个对象中 } private function stopMascotDrag(e:MouseEvent):void { posion=null; } private function dragMascot(e:Event):void { if (posion!=null) { _sprite.x = mouseX - posion.x; _sprite.y = mouseY - posion.y; } } } }

我们首先创建一个简单的几何物体---小圆,定义它的颜色对其进行填充

  //绘制一个简单的圆

                     _shape.graphics.beginFill(0xff0000,1);//填充颜色

                     _shape.graphics.lineStyle(1,0,1);//定义线的大小和透明度

                     _shape.graphics.drawCircle(250,250,50);//半径为50的圆

                     _shape.graphics.endFill();//结束填充

 

一个小球被我们创建了,接下来我们要使用三个事件对小球的移动进行处理。

       _sprite.addEventListener(MouseEvent.MOUSE_DOWN,startMascotDrag);

       stage.addEventListener(MouseEvent.MOUSE_UP, stopMascotDrag);

       _sprite.addEventListener(Event.ENTER_FRAME, dragMascot);

 

当鼠标按下去的时候,我们使用了记录点的形式把这个点记录下来。

posion=new Point(e.localX,e.localY);//将一个点保存在这个对象中

 

接下来通过Event.ENTER_FRAME事件对我们的球进行拖动了。

_sprite.x = mouseX - posion.x;

_sprite.y = mouseY - posion.y;

 

效果出来了,现场测试一下。拖动的时候仅仅是计算他们之间的差值,产生一些看起来想动画那样的。

点

 

 

 

1.2.3 直线方程

学习目标

  通过回忆学习,把初中和高中的数学运用到自己的编程当中去。通过学习,能够

计算出直线的斜率

计算出直线的直线方程

计算垂直直线的斜率和直线方程

 

基础知识:

直线的方程Y=kx+bk为斜率

垂直于直线Y=kx+b 的斜率T=-1/k;(负倒数)

点斜式:已知道点Ax1,x2),Bx2,y2)可以求出y-y1=K(x-x1)

K=(y2-y1)/(x2-x1)或者 K=(y1-y2)/(x1-x2);

 

例1.       求直线方程为2x-5y+8=0的斜率?

解:通过移动位置2x+8=5y,y=2/5x+8;

因此求出斜率为k=2/5;

 

 

2:已知坐标系两点A(2,4),B(7,8) 求直线AB的直线方程和斜率?

解:

 思路:先计算出AB直线的斜率,它的斜率计算方法是K=y2-y1/x2-x1

AB的坐标代入斜率的计算公式去,计算出k的值为(8-4)/(7-2)=4/5 .由于直线经过了AB两点,根据点斜式可以求出直线方程。

 

 现在通过一个简单程序模拟求一下斜率:

绘制一条斜线,求这条斜线的斜率。

package { import flash.display.Sprite; import flash.display.Graphics; public class DrawLine extends Sprite { public function DrawLine() { init(); } private function init():void { this.graphics.lineStyle(1,0,1);//设置线的厚度,颜色,透明度 this.graphics.moveTo(0,200); this.graphics.lineTo(550,200); this.graphics.moveTo(300,20); this.graphics.lineTo(20,300); getResult(20,300,300,20); } //求单条直线的斜率 private function getResult(a,b,c,d:Number):void { var result:Number=(b-d)/(a-c); trace("斜率为:"+result); } } }

我们主要求的是A(300,20)和B(20,300)亮点的斜率,通过这样模拟我们可以计算出直线的斜率了。

 

 线

1.3.曲线方程

1.3.1 点的运动轨迹

   问题 我站在世界的哪一个位置上?

   世界总会有我们立足的地方,哪怕是一个点也好,它会为我们记录这个坐标。因为它见证了我们的存在。

 

    问题:我们如何知道一个物体的运动轨迹呢?怎样知道?

我们都知道Flash世界中,有个关于注册点的概念,这个元素无论是规则的还是不规则的它的注册点都是标记了这个元素在这个世界中的位置 姑且把这个点记录为M(x,y)。现在我们可以闭上眼睛,想像我们在太空外面围绕地球旋转。想像我们开着我们心爱的跑车在直线菜单上直冲的快感。想像我们在人生中曲折的人生。这一个点将会记录我们走过的痕迹。我们把质点作为我们研究的起点,因为它不用我们想得太多,而关注的是在这个质点位移的改变。这就是一个关于点的轨迹运动。

 

我们看一个简单的例子,在舞台上创建一个影片剪辑MC,如果我们要获取这个MC的位置,仅仅在使用跟踪信息

trace(“MCx坐标:”MC.x)

trace(“MCy坐标:”MC.y)

 

这样我们就可以获取到它的所在位置,是不是觉得很神奇?如果不觉得,那么就请发挥你的创意去实现更多的效果。如X轴上的运动,或者Y轴上的运动,再或者曲线上的运动.

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值