如何判断一个点是否在长方体的内部 急送高分

windy1211 2007-04-18 02:24:40
假定这个点的位置Pos
这是我绘制的长方体的位置:
glTranslatef(56, 14, 56);
glBindTexture(GL_TEXTURE_2D, texture[0]); // 选择纹理
glBegin(GL_QUADS);
// 前面
glTexCoord2f(0.0f, 0.0f); glVertex3f(-4.0f, -2.0f, 4.0f); // 纹理和四边形的左下
glTexCoord2f(1.0f, 0.0f); glVertex3f( 4.0f, -2.0f, 4.0f); // 纹理和四边形的右下
glTexCoord2f(1.0f, 1.0f); glVertex3f( 4.0f, 2.0f, 4.0f); // 纹理和四边形的右上
glTexCoord2f(0.0f, 1.0f); glVertex3f(-4.0f, 2.0f, 4.0f); // 纹理和四边形的左上
// 后面
glTexCoord2f(1.0f, 0.0f); glVertex3f(-4.0f, -2.0f, -4.0f); // 纹理和四边形的右下
glTexCoord2f(1.0f, 1.0f); glVertex3f(-4.0f, 2.0f, -4.0f); // 纹理和四边形的右上
glTexCoord2f(0.0f, 1.0f); glVertex3f( 4.0f, 2.0f, -4.0f); // 纹理和四边形的左上
glTexCoord2f(0.0f, 0.0f); glVertex3f( 4.0f, -2.0f, -4.0f); // 纹理和四边形的左下
// 顶面
glTexCoord2f(0.0f, 1.0f); glVertex3f(-4.0f, 2.0f, -4.0f); // 纹理和四边形的左上
glTexCoord2f(0.0f, 0.0f); glVertex3f(-4.0f, 2.0f, 4.0f); // 纹理和四边形的左下
glTexCoord2f(1.0f, 0.0f); glVertex3f( 4.0f, 2.0f, 4.0f); // 纹理和四边形的右下
glTexCoord2f(1.0f, 1.0f); glVertex3f( 4.0f, 2.0f, -4.0f); // 纹理和四边形的右上
// 底面
glTexCoord2f(1.0f, 1.0f); glVertex3f(-4.0f, -2.0f, -4.0f); // 纹理和四边形的右上
glTexCoord2f(0.0f, 1.0f); glVertex3f( 4.0f, -2.0f, -4.0f); // 纹理和四边形的左上
glTexCoord2f(0.0f, 0.0f); glVertex3f( 4.0f, -2.0f, 4.0f); // 纹理和四边形的左下
glTexCoord2f(1.0f, 0.0f); glVertex3f(-4.0f, -2.0f, 4.0f); // 纹理和四边形的右下
// 右面
glTexCoord2f(1.0f, 0.0f); glVertex3f( 4.0f, -2.0f, -4.0f); // 纹理和四边形的右下
glTexCoord2f(1.0f, 1.0f); glVertex3f( 4.0f, 2.0f, -4.0f); // 纹理和四边形的右上
glTexCoord2f(0.0f, 1.0f); glVertex3f( 4.0f, 2.0f, 4.0f); // 纹理和四边形的左上
glTexCoord2f(0.0f, 0.0f); glVertex3f( 4.0f, -2.0f, 4.0f); // 纹理和四边形的左下
// 左面
glTexCoord2f(0.0f, 0.0f); glVertex3f(-4.0f, -2.0f, -4.0f); // 纹理和四边形的左下
glTexCoord2f(1.0f, 0.0f); glVertex3f(-4.0f, -2.0f, 4.0f); // 纹理和四边形的右下
glTexCoord2f(1.0f, 1.0f); glVertex3f(-4.0f, 2.0f, 4.0f); // 纹理和四边形的右上
glTexCoord2f(0.0f, 1.0f); glVertex3f(-4.0f, 2.0f, -4.0f); // 纹理和四边形的左上
glEnd();
glPopMatrix();
这是我的课程设计,我知道应该通过平面方程来判断。假定box的6个面均为法向向内,你分别计算这个点与6个面的位置,如果都是〉0,说明点在6个面的上方,即在box内部。
但是由于只学了两星期OpenGL,所以不知道具体该怎么写,明天就要验收了,急啊,哪位好心人帮我一下啊,我请吃饭-
...全文
1241 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
纯数学的问题
计算这个点和六个平面的关系.如果分别与法线相反,则在长方体内.计算方法是将点的坐标代入到每个平面的ax+by+cz+d=0中计算其值,大于0则和法线相同,小于0则与法线相反
hertz2007 2007-05-11
  • 打赏
  • 举报
回复
楼上的方法很好。
我再提一个思路:
考虑该点与8个顶点构成的向量与各条棱的向量之间的夹角关系。
比如顶点是A,B,有一点P,考虑向量AP与AB的夹角关系,可以做内积,如果内积为负,判断出点在外部,结束;如果为正,继续下一个点,直到所有点遍历过---此时判断在内部。
HUNTON 2007-04-18
  • 打赏
  • 举报
回复
长方体可以分解成几个四面体,只要判断点与这些四面体的位置关系就可以了。
菜牛 2007-04-18
  • 打赏
  • 举报
回复
这个计算和OpenGL没有关系,纯粹数学。
Rock_And_Roll 2007-04-18
  • 打赏
  • 举报
回复
不清除,计算距离吧至于怎么计算不清楚
syy64 2007-04-18
  • 打赏
  • 举报
回复
没有好的办法。

19,464

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧