| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1237 人关注过本帖
标题:GetHeight函数的作用,问?
只看楼主 加入收藏
sunstudent
Rank: 1
等 级:新手上路
帖 子:110
专家分:0
注 册:2007-10-14
结帖率:100%
收藏
 问题点数:0 回复次数:5 
GetHeight函数的作用,问?

BOOL baiscobj::DisplayScene()
{ float speed=0.5f;
float x=g_eye[0],y=g_eye[2],z=g_eye[2];
if (KEY_DOWN(VK_SHIFT)) speed =speed*2;
if (KEY_DOWN(VK_LEFT)) g_Angle-=speed*2;
if (KEY_DOWN(VK_RIGHT)) g_Angle+=speed*2;
rad_xz = float (3.13149* g_Angle/180.0f);
if (KEY_DOWN(33)) g_elev +=speed;
if (KEY_DOWN(34)) g_elev -=speed;
if (g_elev<-360) g_elev =-360;
if (g_elev> 360) g_elev = 360;
if (KEY_DOWN(VK_UP))
{ g_eye[2]+=(float)sin(rad_xz)*speed;
g_eye[0]+=(float)cos(rad_xz)*speed;
}
if (KEY_DOWN(VK_DOWN))
{ g_eye[2]-=(float)sin(rad_xz)*speed;
g_eye[0]-=(float)cos(rad_xz)*speed;
}
if(g_eye[0]< MAP_SCALE) g_eye[0]= MAP_SCALE;
if(g_eye[0]> (MAP_W-2)*MAP_SCALE) g_eye[0]= (MAP_W-2)*MAP_SCALE;
if(g_eye[2]<-(MAP_W-2)*MAP_SCALE) g_eye[2]=-(MAP_W-2)*MAP_SCALE;
if(g_eye[2]> -MAP_SCALE) g_eye[2]= -MAP_SCALE;
g_eye[1] =GetHeight((float)g_eye[0],(float)g_eye[2])+gao;//gao=1.8

g_look[0] = (float)(g_eye[0] +100*cos(rad_xz));
g_look[2] = (float)(g_eye[2] +100*sin(rad_xz));
g_look[1] = g_eye[1] +g_elev;

gluLookAt(g_eye[0],g_eye[1],g_eye[2],
g_look[0],g_look[1],g_look[2],
0.0,1.0,0.0
);
return TRUE;

}
float baiscobj::GetHeight(float x, float z)
{ float CameraX = x/MAP_SCALE;//MAP_SCALE=24
float CameraZ =-z/MAP_SCALE;
int Col0 = int(CameraX);
int Row0 = int(CameraZ);
int Col1 = Col0 + 1;
int Row1 = Row0 + 1;
if (Col1 > MAP_W) Col1 = 0;//MAP_W=32
if (Row1 > MAP_W) Row1 = 0;
float h00=g_terrain[Col0 + Row0*MAP_W][1];
float h01=g_terrain[Col1 + Row0*MAP_W][1];
float h11=g_terrain[Col1 + Row1*MAP_W][1];
float h10=g_terrain[Col0 + Row1*MAP_W][1];
float tx =CameraX - int(CameraX);
float ty =CameraZ - int(CameraZ);
float txty = tx * ty;
return h00*(1.0f-ty-tx+txty)
+ h01*(tx-txty)
+ h11*txty
+ h10*(ty-txty);
}
看了半天不明白float baiscobj::GetHeight(float x, float z)这个函数是做什么用的,请帮助看看,谢谢

搜索更多相关主题的帖子: speed GetHeight 函数 KEY elev 
2007-11-20 11:20
Whnight
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2007-9-14
收藏
得分:0 
从名字就能看出是获取高度的,
是什么高度呢?从代码看来,获得的高度赋给了g_eye[1],再看看g_eye[1]用来干什么的,
它是用作gluLookAt的第二参数,也就是所谓的“观察者之眼”的空间y坐标,y轴在空间坐标中是标示垂直方向的标量的,
说到这里应该明白了吧,GetHeight就是用来获取视点的y坐标值的

[此贴子已经被作者于2007-11-20 11:56:57编辑过]

2007-11-20 11:55
Whnight
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2007-9-14
收藏
得分:0 
LZ看的是“学OpenGL编3D游戏”吧。。。
2007-11-20 11:58
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 
这函数使用双线性插值计算出x,z处的y值.
h00,h01,h11,h10为这个方块的4个高度值(也就是各个y).
tx, ty为x,z在这个方块里的编移点.

=×&D o I p R e E n C g T l X&×=
2007-11-20 12:13
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 
别看那本书了,没基础看起来很难.
看点基本的吧.

[此贴子已经被作者于2007-11-20 12:15:48编辑过]


=×&D o I p R e E n C g T l X&×=
2007-11-20 12:15
sunstudent
Rank: 1
等 级:新手上路
帖 子:110
专家分:0
注 册:2007-10-14
收藏
得分:0 
谢谢,我明白了
2007-11-20 15:27
快速回复:GetHeight函数的作用,问?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024125 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved