当前位置首页 > 初中物理 > 辅导探讨

折射和反射规律的flash动画,你值得拥有!!

更新时间:2024-04-14 文章作者:佚名 信息来源:网络整理 阅读次数:

这是一个反映光的折射和反射规律的Flash动画。 其效果主要是通过编程来实现的。 教程详细介绍了它。 希望对大家有帮助!CMy物理好资源网(原物理ok网)

可以看到,整个flash动画大致由三部分组成:CMy物理好资源网(原物理ok网)

1. 基本组成:反射光、折射光、法线(垂直于界面的光)、光源、界面CMy物理好资源网(原物理ok网)

2. 多角度展示CMy物理好资源网(原物理ok网)

3.动画的实现CMy物理好资源网(原物理ok网)

在这三个部分中,本教程将重点介绍第三部分,并详细讲解整个编程思想。 好了,废话不多说,我们现在开始吧。CMy物理好资源网(原物理ok网)

1、基础部件的制作CMy物理好资源网(原物理ok网)

这一步主要是利用flash绘图工具完成的。 绘制反射光线、折射光线、法线、界面的方法都是一样的,所以只举一个例子就够了,比如绘制界面:CMy物理好资源网(原物理ok网)

1. 在工具区域中选择直线工具。 线条粗细为默认值。 在主场景中按住Shifi键,向下画一条适当长度的线段。CMy物理好资源网(原物理ok网)

2、选中线段全反射的条件,右键-转换为元件-影片剪辑,如图所示设置其参数,将其转换为影片剪辑。CMy物理好资源网(原物理ok网)

3、双击界面组件进入编辑状态,选择工具栏中的文本工具,在界面组件适当位置添加文字描述,如图所示。CMy物理好资源网(原物理ok网)

其他绘制方法相同,区别在于:CMy物理好资源网(原物理ok网)

1、法线按照物理画法用虚线画出。 这可以在场景底部的属性栏中设置。 选择描边样式,如图所示。CMy物理好资源网(原物理ok网)

2. 将折射光线和反射光线的注册点选择在左中位置怎么样? 所有组件都画好了吗? 现在让我们命名每个组件。 这个命名与转换成组件时的命名不同。 这个命名将在脚本中使用。将每个组件拖入场景中,分别选择组件,然后选择场景下方的属性 - 命名剪辑名称。 按照汉语拼音习惯命名。 例如,接口名为fjm,如图所示。CMy物理好资源网(原物理ok网)

其他的命名相同,反射光命名为fs,折射光命名为zs,法线命名为fx。 至于发光的光源,我是用工具栏上的矩形工具画出来的。 太丑了。 你画得比我好。 同样,绘制完成后,选中它,右键-转换为组件-影片剪辑,命名为jg(激光)。你可能会问,入射光呢? 别担心,这个灯是用脚本实现的。CMy物理好资源网(原物理ok网)

2、显示文字的制作CMy物理好资源网(原物理ok网)

这一步涉及到文本工具中动态文本和静态文本的使用CMy物理好资源网(原物理ok网)

1. 选择文本工具。 此时的文本工具默认为静态文本。 单击场景的右上角。 单击位置将出现一个文本框。 在其中输入“入射角”一词。CMy物理好资源网(原物理ok网)

2、同样选择文本工具,选择场景下方的属性对话框,点击文本类型下拉菜单,会出现三个选项,静态文本、动态文本、输入文本。 这里选择动态文本来动态显示入射角的值。 上一步文字“入射角”后,按住左键拉出一个文本框,选择该文本框,选择下面的属性,将变量命名为rsj(入射角),如图数字CMy物理好资源网(原物理ok网)

最后,使用静态文本在动态文本后输入单位“度”。 基本方法是这样的。 之后,依次完成折射角(zsj)、反射角(fsj)、临界角(ljj)的显示文字。 效果如图。CMy物理好资源网(原物理ok网)

3.动画的实现CMy物理好资源网(原物理ok网)

1 理论分析CMy物理好资源网(原物理ok网)

这部分主要是脚本。 让我们首先熟悉一些折射定律。 高中物理告诉我们,当一束光从光密介质到光稀疏介质时(比如从水或玻璃到空气中),可能会发生全反射(此时只有反射光),条件是光在光密介质中的入射角大于临界角(如果不是很清楚,可以看看物理课本,我这里基本上只是给出结论),临界计算公式sinC= 1/n (n为折射率),即C=(1/n),光线与空气中法线的夹角i和光线与介质中法线的夹角r满足折射定律公式n=sin(i)/sin(r),所以有i=(n*sin(r)。至于其他反射光,就简单了,入射角等于反射角。根据能量守恒定律,入射光的总能量=折射光的能量+反射光的能量,反射光的能量将通过其透明度(alpha值)来反射。CMy物理好资源网(原物理ok网)

2. 代码分析CMy物理好资源网(原物理ok网)

完整代码如下CMy物理好资源网(原物理ok网)

fjm._y=200;CMy物理好资源网(原物理ok网)

fx._x=250;CMy物理好资源网(原物理ok网)

zs._x=250;CMy物理好资源网(原物理ok网)

zs._y=200;CMy物理好资源网(原物理ok网)

fs._x=250;CMy物理好资源网(原物理ok网)

fs._y=200;CMy物理好资源网(原物理ok网)

n=1.5;CMy物理好资源网(原物理ok网)

=(){CMy物理好资源网(原物理ok网)

jg.=(){CMy物理好资源网(原物理ok网)

这个。(真,0,200,500,500);CMy物理好资源网(原物理ok网)

全反射的条件CMy物理好资源网(原物理ok网)

};CMy物理好资源网(原物理ok网)

jg.=(){CMy物理好资源网(原物理ok网)

这。();CMy物理好资源网(原物理ok网)

};CMy物理好资源网(原物理ok网)

这个。(“MC”,100);CMy物理好资源网(原物理ok网)

MC.(2,,100);CMy物理好资源网(原物理ok网)

MC.(250,200);CMy物理好资源网(原物理ok网)

x=jg._x;CMy物理好资源网(原物理ok网)

y=jg._y;CMy物理好资源网(原物理ok网)

mc.(x,y);CMy物理好资源网(原物理ok网)

A=Math.atan2(y-200,x-250);CMy物理好资源网(原物理ok网)

jg.=A*180/Math.PI+180;CMy物理好资源网(原物理ok网)

C=Math.asin(1/n);CMy物理好资源网(原物理ok网)

ljj=Math.round(C*180*10/Math.PI)/10;CMy物理好资源网(原物理ok网)

if(xr=A-Math.PI/2;CMy物理好资源网(原物理ok网)

if(ri=Math.asin(n*Math.sin(r));CMy物理好资源网(原物理ok网)

zs.=-90+i*180/Math.PI;CMy物理好资源网(原物理ok网)

zs.=100-i*60;CMy物理好资源网(原物理ok网)

}别的{CMy物理好资源网(原物理ok网)

zs.=0;CMy物理好资源网(原物理ok网)

}(x>250){CMy物理好资源网(原物理ok网)

r=Math.PI/2-A;CMy物理好资源网(原物理ok网)

如果(ri=&nbsCMy物理好资源网(原物理ok网)

p;Math.asin(n*Math.sin(r));CMy物理好资源网(原物理ok网)

zs.=-90-i*180/Math.PI;CMy物理好资源网(原物理ok网)

zs.=100-i*60;CMy物理好资源网(原物理ok网)

}别的{CMy物理好资源网(原物理ok网)

zs.=0;CMy物理好资源网(原物理ok网)

fs.=180-A*180/Math.PI;CMy物理好资源网(原物理ok网)

rsj=Math.round(r*180*10/Math.PI)/10;CMy物理好资源网(原物理ok网)

if(rzsj=Math.round(i*180*10/Math.PI)/10;CMy物理好资源网(原物理ok网)

}别的{CMy物理好资源网(原物理ok网)

zsj="全反射";CMy物理好资源网(原物理ok网)

fsj=Math.round(r*180*10/Math.PI)/10;CMy物理好资源网(原物理ok网)

fs.=i*60;CMy物理好资源网(原物理ok网)

};CMy物理好资源网(原物理ok网)

好了,我们开始分析代码是怎么写的。 我们先看一张图片。CMy物理好资源网(原物理ok网)

可以看到,我利用界面和法线将场景划分为4个区域,相当于数学中的第一到第四象限。 我首先在代码中进行了如下初始化。CMy物理好资源网(原物理ok网)

fjm._y=200;CMy物理好资源网(原物理ok网)

全反射的条件CMy物理好资源网(原物理ok网)

fx._x=250;CMy物理好资源网(原物理ok网)

//从上面可以看出,交点相当于坐标原点(250, 200)CMy物理好资源网(原物理ok网)

//折射光线和反射光线的x、y坐标分别为250和200(即坐标原点)CMy物理好资源网(原物理ok网)

zs._x=250;CMy物理好资源网(原物理ok网)

zs._y=200;CMy物理好资源网(原物理ok网)

fs._x=250;CMy物理好资源网(原物理ok网)

fs._y=200;CMy物理好资源网(原物理ok网)

从上面的初始化我们可以知道,折射光线和反射光线的配准点一定在左边(参见组件制作)。 同时从图中可以看出,入射光线只能在第3、第4象限内,也就是说光源只能在第3、第4象限内移动,所以光源(激光jg)组件只能拖到平面下方。 最好不要离开左右两侧的场景。 代码是CMy物理好资源网(原物理ok网)

这个。(真,0,200,500,500);CMy物理好资源网(原物理ok网)

接下来,我们需要解决入射角和折射角之间的关系。 让我们看另一张图片。CMy物理好资源网(原物理ok网)

在这张截图中,入射光线在第三象限全反射的条件,对应的折射光线在第一象限,闪光灯的旋转是通过其属性来实现的。 该属性表示指定影片剪辑相对于其原始方向的旋转程度(以度为单位)。 。 0到180之间的值表示顺时针旋转; 0到-180之间的值代表逆时针旋转。所以首先我们需要获取入射光的旋转角度A,但是上面的组件中没有入射光。 它是怎么发生的? 其实就是用下面的代码绘制的CMy物理好资源网(原物理ok网)

这个。(“MC”,100);CMy物理好资源网(原物理ok网)

MC.(2,,100);CMy物理好资源网(原物理ok网)

MC.(250,200);CMy物理好资源网(原物理ok网)

x=jg._x;CMy物理好资源网(原物理ok网)

y=jg._y;CMy物理好资源网(原物理ok网)

mc.(x,y);CMy物理好资源网(原物理ok网)

那么A可以利用反三角函数得到代码为CMy物理好资源网(原物理ok网)

A=Math.atan2(y-200,x-250);CMy物理好资源网(原物理ok网)

从图中可以看出,其真实入射角为r=A-Math.PI/2; 其折射角i=Math.asin(1.5*Math.sin(r))。 从图中可以看出折射光的旋转角度应该是-90+i*180/Math.PI,对应的代码为CMy物理好资源网(原物理ok网)

if(xr=A-Math.PI/2;CMy物理好资源网(原物理ok网)

if(ri=Math.asin(n*Math.sin(r));CMy物理好资源网(原物理ok网)

zs.=-90+i*180/Math.PI;CMy物理好资源网(原物理ok网)

zs.=100-i*60;CMy物理好资源网(原物理ok网)

}别的{CMy物理好资源网(原物理ok网)

zs.=0;CMy物理好资源网(原物理ok网)

你可能会问,zs。 = 100-i*60; 这句话的算法是什么? 根据物理定律,折射角越大,其能量越小。 当折射为90度时,就会发生全反射,对应的折射光的能量为零,在动画中体现为其值越来越小。 根据实际计算,是zs。 = 100-i*63.7,不过考虑到实际效果,算了,就这样吧。 相反,反射光的能量越来越大。 当发生全反射时,能量最大,等于入射光的强度。 使用代码 fs。 = i*60 来实现它。 这个怎么样? 清楚吗?CMy物理好资源网(原物理ok网)

其余的是当入射光在第四象限时。 另请看类似的图片。CMy物理好资源网(原物理ok网)

对应代码如下CMy物理好资源网(原物理ok网)

}(x>250){CMy物理好资源网(原物理ok网)

r=Math.PI/2-A;CMy物理好资源网(原物理ok网)

if(ri=Math.asin(n*Math.sin(r));CMy物理好资源网(原物理ok网)

zs.=-90-i*180/Math.PI;CMy物理好资源网(原物理ok网)

zs.=100-i*60;CMy物理好资源网(原物理ok网)

}别的{CMy物理好资源网(原物理ok网)

zs.=0;CMy物理好资源网(原物理ok网)

最后,我们解决了最简单的反射光旋转问题。 其实从倒数第三张图就可以很容易得到代码:CMy物理好资源网(原物理ok网)

fs.=180-A*180/Math.PI;CMy物理好资源网(原物理ok网)

发表评论

统计代码放这里