Flash与数学:椭球面
2010-03-02 00:00:00 来源:WEB开发网在平面的时候,圆可以认为是椭圆一个特例,而球面也可以认为球椭球面一个特例,但是两者依旧会存在一些差别。这一些差别会产生不同的形状,查阅了一些关于椭球面的资料很皮毛了解一些。
椭球体的方程表示: x2 /a2+y2/b2+z2/c2=1;
参数方程:
该图片来源于网络
通常(a≥b≥c>0) (0≤θ≤2π,0≤φ≤π)
a b c 分别代表 长轴 中轴 短轴
下面收集一些知识点:截图
查看原图(大图)
然后我们通过编程模拟出一个简单的效果:
其中var ball:Ball=new Ball(); 是通过库链接出来一个普通元件,可以进行添加 修改
1. package
2. {
3.
4. import flash.display.Sprite;
5. import flash.events.*;
6. import flash.geom.PerspectiveProjection;
7. public class Main extends Sprite
8. {
9.
10. private var a:int=200;//用于椭圆的球体
11. private var b:int=80;
12. private var c:int=60;
13.
14. private var centerX:Number=stage.stageWidth/2;
15. private var centerY:Number=stage.stageHeight/2;
16. private var contain:Sprite=new Sprite();//创建容器
17. public function Main()
18. {
19. addChild(contain);
20. contain.x=centerX;
21. contain.y=centerY;
22. createEllipsoid();
23. root.transform.perspectiveProjection.fieldOfView=120;//初始化透视角度
24.
25. addEventListener(Event.ENTER_FRAME,Run);
26. }
27.
28. //创建椭球体
29. private function createEllipsoid ():void
30. {
31. for (var i:int=0; i<180; i+=20)
32. { //纬度
33. for (var j:int=0; j<360; j+=20)
34. {
35. //经度
36. var ball:Ball=new Ball();
37. contain.addChild(ball);
38. ball.x=a*Math.sin(i*Math.PI/180)*Math.cos(j*Math.PI/180);
39. ball.z=b*Math.sin(i*Math.PI/180)*Math.sin(j*Math.PI/180);
40. ball.y=c*Math.cos(i*Math.PI/180);
41. }
42. }
43.
44. }
45.
46. private function Run(event:Event):void
47. {
48.
49. contain.rotationY+=0.3;
50.
51. }
52.
53.
54.
55.
56. }
57.
58.
59.
60. }
- ››FLASH不等于运算符!=的使用实例
- ››FLASH不全等运算符!==
- ››FLASH字符串分隔符运算符
- ››FLASH% 模运算符
- ››Flash+、++、+= 加法运算符
- ››Flash, 逗号运算符
- ››flash中的-、--、-=减法运算符
- ››Flash的-Infinity 常数、.点运算符、/ 除法运算符...
- ››Flash两种注释方法/*..*/ 和// 注释行分隔符运算符...
- ››Flash的/=除法赋值运算符、=赋值运算符、== 等于运...
- ››Flash之?: 条件运算符、^ 按位 XOR 运算符、^= 按...
- ››Flash的_framesloaded代码示例
更多精彩
赞助商链接