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);
}
}
}
转换一下角度同样效果不一样。这些可以尝试一下。上半球面。
下半球面。
总的代码:
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()
{
相关文档:
NASCAR和美国空军合作网站
全球生
物分类倡议项目 GTI Project
索尼与我
这个网站用数码相机记录了儿童成长的虚拟体验。
当
您在观看视频,您可以选择您喜欢的瞬间,并记录下来。
共和国的鸡蛋
共和国鸡蛋由四个志同道合的人组成,团结,努力建设一
个新的创意热店。
他们只有一个目标,就是积极推动中 ......
现在有个灵感,那就是通过鼠标拖动这些小球,鼠标移动的时候,那些小球会跟踪鼠标目标移动。这些只要使用flash 绘图API制作,
就能够完成;
第一步:随机创造一些小球
private function creatBall():void
{
for (var i:int=0; i<10; i++)
{
var ball:Ball=new Ball();
addChild(ball);
l ......
文件如下
<BODY>
<SCRIPT src="swfobject.js"
type=text/javascript></SCRIPT>
<SCRIPT language=javascript>
var flashvars = {};
flashvars.myxmlpath = 'content.xml';
flashvars.type = 'content';
flashvars.decription = '0';
flashvars.textstyle = '';
flashvars.de ......
Main.cpp (Win/*nix)
#include "FlexSecurityBox.h"
int main(int argc, char ** argv) {
char * address;
short port;
if (argc == 2)
{
address = "0.0.0.0";
port = atoi(argv[1]);
} else if (argc == 3)
{
address = argv[1];
port = atoi(argv[2]);
} else
{
printf("Y ......
这几天,都在无所事事,唯一寄托就是在这里记录一下自己研究出来的东西。趁现在有点时间,就把最近看过的一种常用的flash特效记录一下,flash 做特效不是为做特效而做,在make thing move 书里讲了许多的数学和物理原理,通过这些原理,我发现做特效就需要懂原理。懂了这些原理后,特效就会变得轻松容易。
现 ......