设为首页   加入最爱           最新更新:全方位英文文章资料库
 
资料坊搜索: 标题 全文     
Matlab 制作连续变焦和飞驰图形
   首页>>YesizeCOM>>电脑技能坊>>MATLAB>>正文       
 
广告招租,e-mail:yesize@hotmail.com

广告招租,e-mail:yesize@hotmail.com

10.7.4 连续变焦和飞驰图形

【 * 例 10.7.4 -1 】通过 CameraPosition 设置的不断变化,使地球迎面飞来,贯穿而过,从地球另一面飞离而去。但在整个飞行过程中,相机镜头始终对着地球。

(1)编写三维地球生成程序 earth_zzy.m 函数文件

[earth_zzy.m]

function earth_zzy(ap)

%erath_zyy.m 绘制三维地球

% ap 取 0 时,相机视角采用自动设置;

% 取 1 时,相机视角取缺省值的十分之一 , 因此地球显得较大。

load topo % 装载图象 topo 和相应的图象色图 topomap1

figure( colormap ,topomap1, Color ,[. 8 .8 .8 ]); % 设置图形窗的色图和背景色 <6>

[x,y,z] = sphere(50);

azzy.DataAspectRatio = [1 1 1];azzy.PlotBoxAspectRatioMode = auto ;

fa = axes( Visible , off , azzy); % 设置轴的数据宽高比和坐标框三度比

szzy1.AmbientStrength = 0.1;szzy1.DiffuseStrength = 1;

szzy1.SpecularColorReflectance = .5; szzy1.SpecularExponent = 20;

szzy1.SpecularStrength = 1;

surface(x,y,z,szzy1, FaceLighting , phong , FaceColor , texture , ...

EdgeColor , none , Cdata ,topo, Parent ,fa); % 设置面对象 <13>

if ap==1,set(fa, CameraViewAngle ,0.1*get(fa, CameraViewAngle )); end

light( position ,[-1 0 1], color ,[0.5 1 0.5]);

light( position ,[-1.5 0.5 -0.5], color ,[. 6 .2 .2 ]);

light( Position ,[1.5 1.5 -1]);

light( Position ,[0 -1.5 0], color ,[0.6 0.6 1]);

view([-17 26])

 

(2)运行 erath_zzy 可以画出如下三维地球图 。(在 Notebook 和指令窗中均可运行)

earth_zzy(0)


图 10.7.4 -1 三维地球图形

 

(3)编写飞驰程序 fly_zzy.m 脚本文件

[fly_zzy.m]

%fly_zzy.m 连续改变相机位置,产生贯穿地球的效果

earth_zzy(0) % 调用函数文件,产生三维地球图形。 <2>

set(gca, CameraViewAngleMode , manual ) %<3>

pos=get(gca, CameraPosition ); % 获取相机初始位置

tar=get(gca, CameraTarget ); % 获取相机目标位置

kk=(0:2:40)/15;nk=length(kk); %<6>

for i=1:nk-1

newpos=pos-kk(i)*(pos-tar); % 计算新位置 <8>

set(gca, CameraPosition ,newpos) % 设置相机新位置 <9>

drawnow %<10>

end

(4)在指令窗中运行以下指令 ,就会产生贯穿地球的效果。

fly_zzy

【 * 例 10.7.4 -2 】利用属性 CameraViewAngle 产生飞驰效应。本例也用地球图形演示。在相机视角连续变化下,地球飞离,直到消失。

编写以下 M 脚本文件,并在指令窗中运行。

[fly_zzy2.m]

%fly_zzy2.m 飞离而去的地球消失在远方

earth_zzy(1) % 调用 earth_zzy 函数画地球

set(gca, CameraViewAngleMode , manual )

ang=get(gca, CameraViewAngle ); % 获得当前所用相机视角

kk=(1:50)/50;nk=length(kk);

for i=1:nk

newang=ang+kk(i)*(180-ang); % 使相机视角不断变大

set(gca, CameraViewAngle ,newang) % 设置新视角

drawnow % 迫使 MATLAB 更新屏幕

end


上一篇:Matlab 制作个性化双坐标系 下一篇:Matlab 实时动画制作示例

版权说明:作品来源于网上,版权归作者所有,如果无意中侵犯了您的版权,请来信告知,本站将在3个工作日内删除。yesize@hotmail.com
  热门小游戏分类 
射击小游戏 连连看小游戏
台球小游戏 成人小游戏
CS小游戏 化妆小游戏
赛车小游戏 休闲小游戏
篮球小游戏 换装小游戏
儿童小游戏 牛牛小游戏
麻将小游戏 冒险小游戏
美媚小游戏 益智小游戏
体育小游戏  
Society Recreation & Sports
Travel & Leisure Communications
Vehicles Computers
Fashion Arts & Entertainment
Reference & Education Disease & Illness
Writing & Speaking Politics
Product Reviews Food & Beverage
Finance Internet Business
Self Improvement Home & Family
Health & Fitness Business
最新更新内容
警惕“公务员报考热”背
公务员考试不是丈母娘考
一名新公务员的自白:我
公务员考脑筋急转弯与挂
北努斗:2006行政能力测
大讨论:06行测BT题目大
过来人回忆:当年,我也
一家之言:公务员热折射
公务员考试申论要是有正
数十万大学生走进公务员
      粤ICP备05005424         Copyright ©2000 - 2004 Yesize.COM