| 首页 | 新闻 | 网页 | 设计 | 色彩 | 原创 | 视觉 | 素材 | 动漫 | 酷站 | 策划 | 文案 | 访谈 | 运营 | 编程 | 数据库 | 服务器 | 下载 | 图库 | 
您的位置: 幽幽天空 > 网页 > 网页制作 > Flash教程 > ActionScript教程 > 文章正文 用户登录
新手速建海量软件
物理知识在FLASH世
浅谈应用按钮事件
浅谈AS的绘图功能
浅谈AS与物理运动
利用文本框制作简
初级物理模型的构
初级物理模型的构
初级物理模型的构
初级物理模型的构

初级物理模型的构建(AS)-力学1 验证牛顿关于地球引力存在猜想的实验           

初级物理模型的构建(AS)-力学1 验证牛顿关于地球引力存在猜想的实验

作者:佚名 来源:闪吧 作者: EmilMatthew 更新:2007-1-13 20:47:27 错误报告 我要投稿

牛顿关于地球引力存在猜想是这样的,在高山上垂直于地面抛一个球,速度越大时,球被抛的越远,当球速足够大时,球应该绕地球运动或是偏离地球的轨道。

这里比较重要的一步是在不知道其是否为做圆周运动的前提下对其运动状况进行验证。

主要的思路如下:

计算与中心点的距离>>>计算中心球体对小球的引力及引力方向向量>>作引力方向的单位法向量>>>

vx=v*Vdirectionx;vy=v*Virctiony这样的求速度的方式,只用在第一帧里

>>>以后帧中:求速度是把引力在其单位方向上进行分解,进而再求出x,y方向的axay,然后是vx+=ax;vy+=ay;_x+=vx;_y+=vy;ok!

程序清单:

#include "Physics.as"

_root.onLoad = function() {

ball.CreateBasicPhysicsFeature(1,0.75, 0, 0);

ball.CreateExtendMotionFeature(0, 0, 0, 0);

ball.CreateUnitVectorFeature(0, 0, 0, 0);

ball.fx(0);

ball.fy(0);

ball1.m(1);

G=100;

_global.dov = true;

};

// Basic Function//

function Getdistance(mc1, mc2) {

return Math.sqrt((mc1._x-mc2._x)*(mc1._x-mc2._x)+(mc1._y-mc2._y)*(mc1._y-mc2._y));

}

function StardandlizeAngle(mc1, mc2) {

var l = Getdistance(mc1, mc2);

mc1.ForcedirectionX = (mc2._x-mc1._x)/l;

mc1.ForcedirectionY = (mc2._y-mc1._y)/l;

}

function do_fx_fy(mc1, mc2) {

var r = Getdistance(mc1, mc2);

StardandlizeAngle(mc1, mc2);

var tempForce = G*mc1.m*mc2.m/(r*r);

// _global.G;

mc1.fx = mc1.ForcedirectionX*tempForce;

mc1.fy = mc1.ForcedirectionY*tempForce;

}

function normal_vector(mc) {

mc.VdirectionX = mc.ForcedirectionY;

mc.VdirectionY = -mc.ForcedirectionX;

}

function do_ax_ay(mc) {

mc.ax = mc.fx/mc.m;

mc.ay = mc.fy/mc.m;

}

// ////////////////////

// Combine Function//

function domove(mc) {

mc.vx += mc.ax;

mc.vy += mc.ay;

mc._x += mc.vx;

mc._y += mc.vy;

}

function summove() {

if (dov == true) {

Getdistence(ball, ball1);

do_fx_fy(ball, ball1);

normal_vector(ball);

ball.vx = ball.v*ball.VdirectionX;

ball.vy = ball.v*ball.VdirectionY;

dov = false;

// close;

} else {

Getdistence(ball, ball1);

do_fx_fy(ball, ball1);

normal_vector(ball);

do_ax_ay(ball);

domove(ball);

}

}

// /////////////////

_root.onEnterFrame = function() {

summove();

};

我这里的G=100;中心球(相当于地球) ball1.m(1)

根据第一宇宙速度公式可求出小球由于在受到中心球引力条件下作匀速圆周运动的速度大致在式lashe Functions***///k!

ctiony()0.75左右,这个实验中可以有很好的验证效果。(速度过小时,本来是应该是吸进中心点的,由于最后在中心点附近距离间隔极小,所以,很小的方向上的误差导致了小球的有返回到地面的BUG,如有朋友想出更好的办法,请回复在下面,谢谢)

交互版演示:

UploadFile/2004-8/2004821152543825.swf

牛顿关于地球引力存在猜想是这样的,在高山上垂直于地面抛一个球,速度越大时,球被抛的越远,当球速足够大时,球应该绕地球运动或是偏离地球的轨道。

这里比较重要的一步是在不知道其是否为做圆周运动的前提下对其运动状况进行验证。

主要的思路如下:

计算与中心点的距离>>>计算中心球体对小球的引力及引力方向向量>>作引力方向的单位法向量>>>

vx=v*Vdirectionx;vy=v*Virctiony这样的求速度的方式,只用在第一帧里

>>>以后帧中:求速度是把引力在其单位方向上进行分解,进而再求出x,y方向的axay,然后是vx+=ax;vy+=ay;_x+=vx;_y+=vy;ok!

程序清单:

#include "Physics.as"

_root.onLoad = function() {

ball.CreateBasicPhysicsFeature(1,0.75, 0, 0);

ball.CreateExtendMotionFeature(0, 0, 0, 0);

ball.CreateUnitVectorFeature(0, 0, 0, 0);

ball.fx(0);

ball.fy(0);

ball1.m(1);

G=100;

_global.dov = true;

};

// Basic Function//

function Getdistance(mc1, mc2) {

return Math.sqrt((mc1._x-mc2._x)*(mc1._x-mc2._x)+(mc1._y-mc2._y)*(mc1._y-mc2._y));

}

function StardandlizeAngle(mc1, mc2) {

var l = Getdistance(mc1, mc2);

mc1.ForcedirectionX = (mc2._x-mc1._x)/l;

mc1.ForcedirectionY = (mc2._y-mc1._y)/l;

}

function do_fx_fy(mc1, mc2) {

var r = Getdistance(mc1, mc2);

StardandlizeAngle(mc1, mc2);

var tempForce = G*mc1.m*mc2.m/(r*r);

// _global.G;

mc1.fx = mc1.ForcedirectionX*tempForce;

mc1.fy = mc1.ForcedirectionY*tempForce;

}

function normal_vector(mc) {

mc.VdirectionX = mc.ForcedirectionY;

mc.VdirectionY = -mc.ForcedirectionX;

}

function do_ax_ay(mc) {

mc.ax = mc.fx/mc.m;

mc.ay = mc.fy/mc.m;

}

// ////////////////////

// Combine Function//

function domove(mc) {

mc.vx += mc.ax;

mc.vy += mc.ay;

mc._x += mc.vx;

mc._y += mc.vy;

}

function summove() {

if (dov == true) {

Getdistence(ball, ball1);

do_fx_fy(ball, ball1);

normal_vector(ball);

ball.vx = ball.v*ball.VdirectionX;

ball.vy = ball.v*ball.VdirectionY;

dov = false;

// close;

} else {

Getdistence(ball, ball1);

do_fx_fy(ball, ball1);

normal_vector(ball);

do_ax_ay(ball);

domove(ball);

}

}

// /////////////////

_root.onEnterFrame = function() {

summove();

};

我这里的G=100;中心球(相当于地球) ball1.m(1)

根据第一宇宙速度公式可求出小球由于在受到中心球引力条件下作匀速圆周运动的速度大致在式lashe Functions***///k!

ctiony()0.75左右,这个实验中可以有很好的验证效果。(速度过小时,本来是应该是吸进中心点的,由于最后在中心点附近距离间隔极小,所以,很小的方向上的误差导致了小球的有返回到地面的BUG,如有朋友想出更好的办法,请回复在下面,谢谢)

交互版演示:

UploadFile/2004-8/2004821152543825.swf

文章录入:skyuu    责任编辑:skyuu 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    发表评论:
    姓名:  评 分: 1分 2分 3分 4分 5分
     
  • 严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
  • 用户需对自己在使用幽幽天空服务过程中的行为承担法律责任。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表机友个人观点,与本网站立场无关。