在一个directx9.0c是什么的3D声效程序里输入三维向量分量时出错

您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
directx 9 3d游戏程序设计入门.doc317页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
文档加载中...广告还剩秒
需要金币:100 &&
directx 9 3d游戏程序设计入门
你可能关注的文档:
··········
··········
《DirectX 9 3D游戏设计入门》
《Introduction to 3D Game Programming with DirectX 9》
by?Frank Luna ISBN:1座机电话号码5
Wordware Publishing ?
This text provides an introduction to programming interactive 3D computer graphics using DirectX 9.0, with an emphasis on game development.
随书代码下载地址:http://www./ml_book_samples.htm
翁云兵 Email:
天兵 Email:
首先感谢游戏开发资源网,让我发现了翁云兵老兄翻译的前12章,从此让我有信心从事D3D游戏的开发,再次感谢翁云兵,还有在我学习中给予帮助的网友们,对初学者的帮助与指导。出于同样的目的,我将整理后的文档再次发到网上,希望能帮助更多热爱游戏开发的朋友。
本教程由天兵收集、翻译并整理,最初是为方便自己学习,非专业翻译,如有不准确的地方请谅解。欢迎提出翻译错误的章节,请联系:
本书没有取得作者授权,此翻译版本纯属个人爱好,不得用于传播以及其他商业目的,只供爱好者参考使用,希望用户下载完毕后24小时之内!如果喜欢请购买正版支持
《DirectX 9 3D游戏设计入门》 1
第一部分 必备的数学知识
Mathematical Prerequisites
三维空间中的向量 11
向量相等 13
计算向量大小(向量的模) 14
标准化向量 14
向量相加 15
向量相减 16
标量与向量的乘积 16
相等、数乘矩阵以及相加 19
单位矩阵 20
矩阵的转置 21
D3DX 矩阵 22
基本变换 24
矩阵平移 25
矩阵旋转 26
矩阵缩放 28
综合变换 29
一些向量变换函数 30
D3DX平面 31
点和平面的空间关系 32
创建平面 32
标准化平面 33
变换平面 34
点到平面上最近的点 34
射线(可选的)
正在加载中,请稍后...&DirectX 9 3D游戏程序设计入门
秒后自动跳转到登录页
(奖励5下载豆)
快捷登录:
举报类型:
不规范:上传重复资源
不规范:标题与实际内容不符
不规范:资源无法下载或使用
其他不规范行为
违规:资源涉及侵权
违规:含有危害国家安全等内容
违规:含有反动/色情等内容
违规:广告内容
详细原因:
任何违反下载中心规定的资源,欢迎Down友监督举报,第一举报人可获5-10下载豆奖励。
视频课程推荐
DirectX 9 3D游戏程序设计入门
上传时间:
技术分类:
资源评价:
(47位用户参与评价)
已被下载&201&次
《DirectX 9 3D游戏设计入门》第一部分 必备的数学知识 (Mathematical Prerequisites)目标三维空间中的向量向量相等计算向量大小(向量的模)标准化向量
向量相加向量相减标量与向量的乘积点积叉积
18相等、数乘矩阵以及相加
19单位矩阵
21矩阵的转置
21D3DX 矩阵
22基本变换
24矩阵平移
25矩阵旋转
51CTO下载中心常见问题:
1.如何获得下载豆?
1)上传资料
2)评论资料
3)每天在首页签到领取
4)购买VIP会员服务,无需下载豆下载资源
5)更多途径:点击此处
2.如何删除自己的资料?
下载资料意味着您已同意遵守以下协议:
1.资料的所有权益归上传用户所有
2.未经权益所有人同意,不得将资料中的内容挪作商业或盈利用途
3.51CTO下载中心仅提供资料交流平台,并不对任何资料负责
4.本站资料中如有侵权或不适当内容,请邮件与我们联系()
5.本站不保证资源的准确性、安全性和完整性, 同时也不承担用户因使用这些资料对自己和他人造成任何形式的伤害或损失
下载4310次
下载2347次
下载1546次
下载2397次
下载2129次
相关专题推荐
2012年,让桌面连接你我! 51CTO将在
汇集各大知名厂商设备、服务器VISIO图
《跟小凯学CAD》是小凯录制的一套以A
本专题为个人收集的一些PhotoShop图片
本视频为Photoshop CS6系列视频教程,
本专题包含Cisco、Dell、HP、IBM、Ju
本专题主要收集了Auto CAD2010系列视
本专题为AutoCAD2007视频教程,讲解的
Photoshop CS5在CS4的基础上增加了相
photoshop CS5 经典视频教程,总共95
这是会声会影X5视频教程,主要讲解素
这是AECS4视频教程,教程分为31集。包
本视频教程由ChinaTeX策划制作,主要
Dreamweaver CS6是世界顶级软件厂商a
VideoStudio Pro X6 (会声会影 X6)
计算机图形学(Computer Graphics,简
意见或建议:
联系方式:
您已提交成功!感谢您的宝贵意见,我们会尽快处理君,已阅读到文档的结尾了呢~~
《DirectX程序设计》期末试卷及答案
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
《DirectX程序设计》期末试卷及答案
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口查看: 27362|回复: 31|关注: 0
matlab三维作图教程
<h1 style="color:# 麦片财富积分
新手, 积分 15, 距离下一级还需 35 积分
关注者: 7
本帖最后由 wanganfu 于
08:46 编辑
plot3函数与plot函数用法十分相似,其调用格式为:
plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n)
其中每一组x,y,z组成一组曲线的坐标参数,选项的定义和plot函数相同。当x,y,z是同维向量时,则x,y,z 对应元素构成一条三维曲线。当x,y,z是同维矩阵时,则以x,y,z对应列元素绘制三维曲线,曲线条数等于矩阵列数。
&&例&&绘制三维曲线。
程序如下:
t=0:pi/100:20*
z=t.*sin(t).*cos(t);
plot3(x,y,z);
title('Line in 3-D Space');
xlabel('X');ylabel('Y');zlabel('Z');
&&三维曲面
1.产生三维数据
在MATLAB中,利用meshgrid函数产生平面区域内的网格坐标矩阵。其格式为:
x=a:d1:b; y=c:d2:d;
[X,Y]=meshgrid(x,y);
语句执行后,矩阵X的每一行都是向量x,行数等于向量y的元素的个数,矩阵Y的每一列都是向量y,列数等于向量x的元素的个数。2.绘制三维曲面的函数
surf函数和mesh函数的调用格式为:
mesh(x,y,z,c):画网格曲面,将数据点在空间中描出,并连成网格。
surf(x,y,z,c):画完整曲面,将数据点所表示曲面画出。
一般情况下,x,y,z是维数相同的矩阵。x,y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的颜色范围。
&&例&&绘制三维曲面图z=sin(x+sin(y))-x/10。
程序如下:
& & [x,y]=meshgrid(0:0.25:4*pi); %在[0,4pi]×[0,4pi]区域生成网格坐标
& & z=sin(x+sin(y))-x/10;
& & mesh(x,y,z);
& & axis([0 4*pi 0 4*pi -2.5 1]);
此外,还有带等高线的三维网格曲面函数meshc和带底座的三维网格曲面函数meshz。其用法与mesh类似,不同的是meshc还在xy平面上绘制曲面在z轴方向的等高线,meshz还在xy平面上绘制曲面的底座。
&&例&&在xy平面内选择区域[-8,8]×[-8,8],绘制4种三维曲面图。
程序如下:
[x,y]=meshgrid(-8:0.5:8);
z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps);
subplot(2,2,1);
mesh(x,y,z);
title('mesh(x,y,z)')
subplot(2,2,2);
meshc(x,y,z);
title('meshc(x,y,z)')
subplot(2,2,3);
meshz(x,y,z)
title('meshz(x,y,z)')
subplot(2,2,4);
surf(x,y,z);
title('surf(x,y,z)')
3.标准三维曲面
sphere函数的调用格式为:(球体,领域,半球,圈子)
[x,y,z]=sphere(n):generates three(N+1)-by-(N+1)& &matrices so that SURF(X,Y,Z) produces a unit sphere.
cylinder函数的调用格式为:(圆筒,圆柱体,柱面)
[x,y,z]= cylinder(R,n),其中r为圆周半径,n为组成圆周的点数。
MATLAB还有一个peaks 函数,称为多峰函数,常用于三维曲面的演示。
&&例&&绘制标准三维曲面图形。
程序如下:
t=0:pi/20:2*
[x,y,z]= cylinder(2+sin(t),30);
subplot(2,2,1);
surf(x,y,z);
subplot(2,2,2);
surf(x,y,z);
subplot(2,1,2);
[x,y,z]=peaks(30);
surf(x,y,z);
& &其他三维图形在介绍二维图形时,曾提到条形图、杆图、饼图和填充图等特殊图形,它们还可以以三维形式出现,使用的函数分别是bar3、stem3、pie3 和fill3。
bar3函数绘制三维条形图,常用格式为:
stem3函数绘制离散序列数据的三维杆图,常用格式为:
stem3(x,y,z)
pie3函数绘制三维饼图,常用格式为:
fill3函数等效于三维函数fill,可在三维空间内绘制出填充过的多边形,常用格式为:
fill3(x,y,z,c)
&&例&&绘制三维图形:
(1) 绘制魔方阵的三维条形图。
(2) 以三维杆图形式绘制曲线y=2sin(x)。
(3) 已知x=[43,3025],绘制饼图。
(4) 用随机的顶点坐标值画出五个黄色三角形。
程序如下:
subplot(2,2,1);
bar3(magic(4))
subplot(2,2,2);
y=2*sin(0:pi/10:2*pi);
subplot(2,2,3);
pie3([43,3025]);
subplot(2,2,4);
fill3(rand(3,5),rand(3,5),rand(3,5), 'y' )&&例& &绘制多峰函数的瀑布图和等高线图。
程序如下:
subplot(1,2,1);
[X,Y,Z]=peaks(30);
waterfall(X,Y,Z)
xlabel('X-axis'),ylabel('Y-axis'),zlabel('Z-axis');
subplot(1,2,2);
contour3(X,Y,Z,12,'k');& &&&%其中12代表高度的等级数
xlabel('X-axis'),ylabel('Y-axis'),zlabel('Z-axis');
& & 图形修饰处理视点处理MATLAB提供了设置视点的函数view,其调用格式为:
view(az,el)
其中az为方位角,el为仰角,它们均以度为单位。系统缺省的视点定义为方位角-37.5°,仰角30°。
例&&从不同视点绘制多峰函数曲面。
& & 程序如下:
& & subplot(2,2,1);mesh(peaks);
& &view(-37.5,30);& && && & %指定子图1的视点
& & title('azimuth=-37.5,elevation=30')
& & subplot(2,2,2);mesh(peaks);
& &view(0,90);& && && && &%指定子图2的视点
& & title('azimuth=0,elevation=90')
& & subplot(2,2,3);mesh(peaks);
& &view(90,0);& && && && &%指定子图3的视点
& & title('azimuth=90,elevation=0')
& & subplot(2,2,4);mesh(peaks);
& &view(-7,-10);& && && &&&%指定子图4的视点
& & title('azimuth=-7,elevation=-10')&&色彩处理
1.颜色的向量表示
MATLAB除用字符表示颜色外,还可以用含有3个元素的向量表示颜色。向量元素在[0,1]范围取值,3个元素分别表示红、绿、蓝3种颜色的相对亮度,称为RGB三元组。
色图(Color map)是MATLAB系统引入的概念。在MATLAB中,每个图形窗口只能有一个色图。色图是m×3 的数值矩阵,它的每一行是RGB三元组。色图矩阵可以人为地生成,也可以调用MATLAB提供的函数来定义色图矩阵。
3.三维表面图形的着色
三维表面图实际上就是在网格图的每一个网格片上涂上颜色。surf函数用缺省的着色方式对网格片着色。除此之外,还可以用shading命令来改变着色方式。
shadingfaceted命令将每个网格片用其高度对应的颜色进行着色,但网格线仍保留着,其shading flat命令将每个网格片用同一个颜色进行着色,且网格线也用相应的颜色,从而使得图形表面显得更加光滑。
shading interp命令在网格片内采用颜色插值处理,得出的表面图显得最光滑。
颜色是黑色。这是系统的缺省着色方式&&例& &3种图形着色方式的效果展示。
程序如下:
[x,y,z]=sphere(20);
colormap(copper);
subplot(1,3,1);
surf(x,y,z);
axis equal
subplot(1,3,2);
surf(x,y,z);
axis equal
subplot(1,3,3);
surf(x,y,z);
axis equal
&&光照处理
MATLAB提供了灯光设置的函数,其调用格式为:
light('Color',选项1,'Style',选项2,'Position',选项3)& &光照处理后的球面。
程序如下:
[x,y,z]=sphere(20);
subplot(1,2,1);
surf(x,y,z);
light('Posi',[0,1,1]);
plot3(0,1,1,'p');text(0,1,1,' light');
subplot(1,2,2);
surf(x,y,z);
light('Posi',[1,0,1]);
plot3(1,0,1,'p');text(1,0,1,' light');
& &图形的裁剪处理
例4-22&&绘制三维曲面图,并进行插值着色处理,裁掉图中x和y都小于0部分。
程序如下:
[x,y]=meshgrid(-5:0.1:5);
z=cos(x).*cos(y).*exp(-sqrt(x.^2+y.^2)/4);
surf(x,y,z);
pause& && && && && & %程序暂停
i=find(x&=0&y&=0);
z1=z;z1(i)=NaN;
surf(x,y,z1);
为了展示裁剪效果,第一个曲面绘制完成后暂停,然后显示裁剪后的曲面。
& & 图像处理与动画制作
1.imread和imwrite函数
imread和imwrite函数分别用于将图像文件读入MATLAB工作空间,以及将图像数据和色图数据一起写入一定格式的图像文件。MATLAB支持多种图像文件格式,如.bmp、.jpg、.jpeg、.tif等。
2.image和imagesc函数
这两个函数用于图像显示。为了保证图像的显示效果,一般还应使用colormap函数设置图像色图。
例5-23&&有一图像文件flower.jpg,在图形窗口显示该图像。
程序如下:
[x,cmap]=imread('flower.jpg');&&%读取图像的数据阵和色图阵
image(x);colormap(cmap);
axis image off& & %保持宽高比并取消坐标轴& &动画制作
MATLAB提供getframe、moviein和movie函数进行动画制作。
1.getframe函数
getframe函数可截取一幅画面信息(称为动画中的一帧),一幅画面信息形成一个很大的列向量。显然,保存n幅图面就需一个大矩阵。2.moviein函数
moviein(n)函数用来建立一个足够大的n列矩阵。该矩阵用来保存n幅画面的数据,以备播放。之所以要事先建立一个大矩阵,是为了提高程序运行速度。
3.movie函数
movie(m,n)函数播放由矩阵m所定义的画面n次,缺省时播放一次。
例& &绘制了peaks函数曲面并且将它绕z轴旋转。
[X,Y,Z]=peaks(30);
surf(X,Y,Z)
axis([-3,3,-3,3,-10,10])
colormap(hot);
m=moviein(20);& && && &&&%建立一个20列大矩阵
for i=1:20
view(-37.5+24*(i-1),30)& && &%改变视点
m(:,i)=& && && &&&%将图形保存到m矩阵
movie(m,2);& && && && && & %播放画面2次
MATLAB三维网图的高级处理 -4.1. 消隐处理 例.比较网图消隐前后的图形z=peaks(50);Subplot(2,1,1);mesh(z);title('消隐前的图')hidden offsubplot(2,1,2);mesh(z);title('消隐后的图')hidden on colormap([0 0 1])
1.jpg (48.23 KB, 下载次数: 19)
08:43 上传
4.2. 裁剪处理  利用不定数NaN的特点,可以对网图进行裁剪处理  例.图形裁剪处理P=peaks(30);subplot(2,1,1);mesh(P);title('裁剪前的图');subplot(2,1,2);P(20:23,9:15)=NaN*ones(4,7);&&%裁剪meshz(P);& & %垂帘网线图title('裁剪后的图')colormap([0 0 1]) %蓝色网线
2.jpg (49.64 KB, 下载次数: 10)
08:43 上传
注意裁剪时矩阵的对应关系,即大小一定要相同 4.3. 三维旋转体的绘制  为了一些专业用户可以更方便地绘制出三维旋转体,MATLAB专门提供了2个函数:柱面函数cylinder和球面函数sphere柱面图绘制由函数cylinder实现.  [X,Y,Z]=cylinder(R,N) 此函数以母线向量R生成单位柱面.母线向量R是在单位高度里等分刻度上定义的半径向量.N为旋转圆周上的分格线的条数.可以用surf(X,Y,Z)来表示此柱面.  [X,Y,Z]=cylinder(R)或[X,Y,Z]=cylinder此形式为默认N=20且R=[1 1]例.柱面函数演示举例x=0:pi/20:pi*3;r=5+cos(x);[a,b,c]=cylinder(r,30);mesh(a,b,c)
3.jpg (43.93 KB, 下载次数: 5)
08:43 上传
 例.旋转柱面图.t=0:pi/12:3*r=abs(exp(-0.25*t).*sin(t));r=abs(exp(-0.25*t).*sin(t));[X,Y,Z]=cylinder(r,30);mesh(X,Y,Z)colormap([1 0 0])
4.jpg (39.67 KB, 下载次数: 43)
08:43 上传
(2).球面图  球面图绘制由函数sphere来实现[X,Y,Z]=sphere(N)%此函数生成3个(N+1)*(N+1)的矩阵surf(X,Y,Z) %产生单位球面[X,Y,Z]=sphere %此型式使用了默认值N=20.Sphere(N) %只是绘制了球面图而不返回任何值例.绘制地球表面的气温分布示意图.[a,b,c]=sphere(40);t=abs(c);surf(a,b,c,t);axis('equal') %此两句控制坐标轴的大小相同axis('square')colormap('hot')
5.jpg (35.59 KB, 下载次数: 14)
08:43 上传
<h1 style="color:# 麦片财富积分
关注者: 4
顶一下,楼主辛苦了!
<h1 style="color:# 麦片财富积分
精品!谢谢分享
<h1 style="color:# 麦片财富积分
好东西!:)
<h1 style="color:# 麦片财富积分
:):)楼主辛苦了
想问一下cylinder函数生成的图像 想要改一下颜色的话是要怎么弄呢?
<h1 style="color:# 麦片财富积分
<h1 style="color:# 麦片财富积分
关注者: 1
楼主的确费心思了,多谢啊。
<h1 style="color:# 麦片财富积分
谢谢楼主的分享~~
<h1 style="color:# 麦片财富积分
谢谢楼主的分享~~
<h1 style="color:# 麦片财富积分
这个,要感谢楼主了。
站长推荐 /2
Powered by

我要回帖

更多关于 directx9.0c是什么 的文章

 

随机推荐