Flash与数学:球体曲面

本文介绍如何使用Flash CS4结合数学原理创建球体模型。通过理解球面参数方程及其在Flash坐标系中的应用,实现了球体的动态显示,并探讨了内存使用的注意事项。

   对数学这一部分,我越来越喜欢关于flash 和数学的结合。高中的数学,大学的数学都很想很想接触,但是由于高等数学并没学得很好,所以这部分的知识缺少了。今天无意之中,看到球体的参数的方程的时候,让我 兴趣大增了。仔细观看那个参数方程,越发觉他的魅力。

球面的公式:x*x+y*y+z*z=a*a;

他的参数方程式:

球体公式(网上转载过来的图)

接下来就需要知道a ,θ, φ 各自的含义,a代表了球体的半径,,参数φ就是地球上的纬度,θ就是经度。这一部知识可以参考

http://baike.baidu.com/view/324915.htm

他的范围就是以下:

0≤θ≤2π,0≤φ≤π

他的范围 一个介于360度,一个最大值是介于180度。从这里我们可以借助两个循环来创造下面的程序。

球全面

接下来的程序 采用flash cs4来支持我们这次的程序:我们先创建一个小球的元件,这个小球的元件用于分布其位置 名称为Ball ,他仅仅是一个元件。

小球

按公式来进行对小球分布,要区别于数学里面y 和z 和flash 坐标系当中的y 和z ,这是因为需要flash 是2d屏幕 空间的坐标不一样。这样模拟出来的球比较偏向数学形状,当然按数学原来公式设定也可以 模拟出来角度就不一样,可以尝试一下。

主要是采用二维循环来创建,横坐标和纵坐标这样扫描的方式来创造,对于圆柱体也一样适用的。

private function createSphere():void { for (var i:int=0; i<180; i+=10) { for (var j:int=0; j<360; j+=10) { var ball:Ball=new Ball(); contain.addChild(ball); ball.x=R*Math.sin(i*Math.PI/180)*Math.cos(j*Math.PI/180); ball.z=R*Math.sin(i*Math.PI/180)*Math.sin(j*Math.PI/180); ball.y=R*Math.cos(i*Math.PI/180); } } }

转换一下角度同样效果不一样。这些可以尝试一下。上半球面。

球4

下半球面。

球4

总的代码:

 package { import flash.display.Sprite; import flash.events.*; public class Main extends Sprite { private var R:int=150;//球体半径 //private var a:int=100;//用于椭圆的球体 // private var b:int=80; // private var c:int=70; private var centerX:Number=stage.stageWidth/2; private var centerY:Number=stage.stageHeight/2; private var contain:Sprite=new Sprite();//创建容器 public function Main() { addChild(contain); contain.x=centerX; contain.y=centerY; createSphere();//创建球体分布 addEventListener(Event.ENTER_FRAME,Run); } private function createSphere():void { for (var i:int=0; i<180; i+=10) { //纬度 for (var j:int=0; j<360; j+=10) { //经度 var ball:Ball=new Ball(); contain.addChild(ball); ball.x=R*Math.sin(i*Math.PI/180)*Math.cos(j*Math.PI/180); ball.z=R*Math.sin(i*Math.PI/180)*Math.sin(j*Math.PI/180); ball.y=R*Math.cos(i*Math.PI/180); } } } private function Run(event:Event):void { contain.rotationY+=0.2; } } }

小结:

  对于flash 能够创建如此的程序 我也感觉到惊讶,结合数学一些理论当中,展示出来的形状也呈现出一种美态。大家可以尝试一下,对球体的一些理论依旧可以深入下去。你会发现不仅仅球体,对于你学过的知识也能够发挥出一个不错的效果。

不过,不得不提到一点,内存的使用上,付出代价。所以这一部分也需要考虑当中去。如果有好的建议和意见可以留下你的宝贵的意见。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值