按自己的思路整一整程序

按自己的思路整一整程序,写写伪码。不知道的函数查SDK,养成查SDK的习惯。

 

现在要做的事:
1,copy 地形的代码
2,地形图进行修改
3,贴另外的贴图

DoInit
{
init3D
new Terrain(map,...)
new skybox(map,...)
new camera()

SetTransform(D3DTS_WORLDMATRIX,&matworld)//在 newTerrain中

SetTransform(D3DTS_PROJECTIONMATRIX,&matprojection)
}

DoFrame
{
//要render就必需beginscene
 device->beginscene()
 SetTransform(D3DTS_VIEWMATRIX,&matview)//在camera中
 device->endscene()
}

 

//SetTransform是用来设置告诉设备,世界变换用什么矩阵,视见变换用什么矩阵。即配对的关系。

//D3DXMatrixTransformation是跟据平衡旋转和绽放来得到一个矩阵。在这个程序中 matworld用D3DXMatrixIdentity()来得到。matview用D3DXMartrixLookatLH()来得到。但是在这个程序中是自己写的函数来得到matview的。matprojection是用D3DXMatrixPerspectiveFovLH()来得到的。

 

 

搞清楚一些问题先:

1,左右手坐标

 

 

2,向量叉积方向的确定。右手坐标下比较容易。

/**************************************************************
  两向量叉积公式(共有两个):      
  U   X   V   =   n   *   |U|   *   |V|   *  sinθ;          
  其中,θ为U与V的夹角(0   <=   θ   <=   π);         n是垂直于U和V的单位向量,n的方向由右手定则确定!(问题之所在,之后讨论)              
                             |   i        j     k   
           U   X   V   =     |   Ux       Uy     Uz                 
                             |   Vx       Vy     Vz   |                                                                                            
          其中,i,j,k分别为沿x,y,z轴的单位向量,Ux,Uy,Uz为U的三个分量,Vx,Vy,V为V的三个分量。              
  ***************************************************************       
  疑问就这么来了:              
  现在令         U     =   <1,0,0>,         V     =     <0,1,0>,         则利用公式2得:     U   X   V   =   <0,0,1>。              
  一眼就可以看出:    
  U是+X轴上单位向量,         V是+Y轴上单位向量,         (U   X   V)是+Z轴上单位向量。              
  回到公式1:此时=   90度(即π/2),代入得:         <0,0,1>   =   n   *   1   *   1   *   1   就是   n     =   <0,0,1>      
  也就是:n是+Z轴上单位向量!!              
  好了,         在右手坐标系里,此时的确是U,V,n满足右手定则了;可是换到左手坐标系里就错(左手坐标系的XYZ轴当然是满足左手定则)!  

 

权威的说明在<introduction to 3d game programing>P38

 

You candetermine the vector returned by the cross product by the left hand thumb rule. (We use a left hand rule because we are using a left-handed coordinate system. We would switch to the right hand rule if we were using a right-handed coordinate system.) If you curve the fingers of your left hand in the direction of the first vector toward the second  vector,your thumb points in the direction of the returned vector.

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值