Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 软件时空 > 工具软件 > Matlab 制作连续变焦和飞驰图形
【标  题】:Matlab 制作连续变焦和飞驰图形
【关键字】:at,Matlab
【来  源】:网络

Matlab 制作连续变焦和飞驰图形

Your Ad Here 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 制作个性化双坐标系:【下一篇】
【相关文章】
  • 认识Matlab GUI
  • Matlab 界面菜单(uimenu)
  • Matlab 用户控件(uicontrol)
  • Matlab 由M函数文件产生用户菜单和控件
  • Matlab 图形用户界面设计工具
  • Matlab 编译器2.0概述
  • Matlab 编译器的安装和配置
  • Matlab 编译器使用入门
  • Matlab 编译指令mcc简介
  • Matlab 编译文件的性能优化
  • 【随机文章】
  • 一个目录类
  • Flash 菜单简要说明(1)
  • DevExpress.XtraSuite (.Net组件)
  • 超级健康之匙:微量营养素
  • Linux文件系统的反删除方法
  • 创世纪正确安装磁盘阵列卡的办法
  • 计算自己还能活几天的小程序
  • 墙内开花墙外香
  • 为完成的-发牌游戏
  • 谁会买下Delphi?
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.