资源简介
通过计算OpenGL小面片的法向量来来进行显示,并进行法向量的有无比较。
代码片段和文件信息
// GLSobject.cpp: implementation of the GLSobject class.
//
//////////////////////////////////////////////////////////////////////
#include “stdafx.h“
#include “glincludes.h“
#include “GLobject.h“
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Static helpers
//////////////////////////////////////////////////////////////////////
// Offset pIn by pOffset into pOut
void VectorOffset (GLpoint *pIn GLpoint *pOffset GLpoint *pOut)
{
pOut->x = pIn->x - pOffset->x;
pOut->y = pIn->y - pOffset->y;
pOut->z = pIn->z - pOffset->z;
}
// Compute the cross product a X b into pOut
void VectorGetNormal (GLpoint *a GLpoint *b GLpoint *pOut)
{
pOut->x = a->y * b->z - a->z * b->y;
pOut->y = a->z * b->x - a->x * b->z;
pOut->z = a->x * b->y - a->y * b->x;
}
// Normalize pIn vector into pOut
bool VectorNormalize (GLpoint *pIn GLpoint *pOut)
{
GLfloat len = (GLfloat)(sqrt(sqr(pIn->x) + sqr(pIn->y) + sqr(pIn->z)));
if (len)
{
pOut->x = pIn->x / len;
pOut->y = pIn->y / len;
pOut->z = pIn->z / len;
return true;
}
return false;
}
// Compute p1p2p3 face normal into pOut
bool ComputeFaceNormal (GLpoint *p1 GLpoint *p2 GLpoint *p3 GLpoint *pOut)
{
// Uses p2 as a new origin for p1p3
GLpoint a;
VectorOffset(p3 p2 &a);
GLpoint b;
VectorOffset(p1 p2 &b);
// Compute the cross product a X b to get the face normal
GLpoint pn;
VectorGetNormal(&a &b &pn);
// Return a normalized vector
return VectorNormalize(&pn pOut);
}
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
// Static definition of object‘s vertices
GLpoint OBJ_VERTICES [] = {
{(float)54.111641 (float)-0.007899 (float)37.141083}
{(float)55.552414 (float)-5.571973 (float)41.828125}
{(float)53.201775 (float)-9.007742 (float)47.965961}
{(float)47.957581 (float)-9.002861 (float)53.210155}
{(float)41.822945 (float)-5.559192 (float)55.557594}
{(float)37.141083 (float)0.007900 (float)54.111641}
{(float)35.700310 (float)5.571973 (float)49.424599}
{(float)38.050949 (float)9.007742 (float)43.286762}
{(float)43.295143 (float)9.002861 (float)38.042568}
{(float)49.429787 (float)5.559189 (float)35.695126}
{(float)54.111645 (float)-0.007905 (float)37.141087}
{(float)57.377384 (float)1.893198 (float)40.181728}
{(float)58.721027 (float)-2.630860 (float)45.902798}
{(float)56.339203 (float)-4.677984 (float)52.621380}
{(float)51.141693 (float)-3.466241 (float)57.771194}
{(float)45.113766 (float)0.541521 (float)59.385204}
{(float)40.557880 (float)5.814476 (float)56.846897}
{(float)39.214237 (float)10.338531 (float)51.125828}
{(float)41.596062 (float)12.3856
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1078 1999-01-28 16:21 Normals\glIncludes.h
文件 91740 2009-02-16 15:50 Normals\GLob
文件 836 2008-09-05 15:48 Normals\GLob
文件 1443 1999-01-29 13:46 Normals\MainFrm.cpp
文件 1426 1999-01-28 10:19 Normals\MainFrm.h
文件 4831 1999-01-28 17:52 Normals\Normals.001
文件 2952 1999-02-02 11:33 Normals\Normals.cpp
文件 4769 2008-09-05 15:46 Normals\Normals.dsp
文件 539 2008-09-05 15:46 Normals\Normals.dsw
文件 1348 1999-01-29 11:37 Normals\Normals.h
文件 66560 2009-02-16 16:49 Normals\Normals.ncb
文件 48640 2009-02-16 16:49 Normals\Normals.opt
文件 248 2009-02-16 16:24 Normals\Normals.plg
文件 9185 1999-01-29 11:38 Normals\Normals.rc
文件 1762 1999-01-28 10:19 Normals\NormalsDoc.cpp
文件 1494 1999-01-28 10:19 Normals\NormalsDoc.h
文件 8956 1999-02-01 17:20 Normals\NormalsView.cpp
文件 2363 1999-01-29 11:35 Normals\NormalsView.h
文件 42496 1999-02-03 11:05 Normals\Release\Normals.exe
文件 1078 1999-01-28 10:19 Normals\res\Normals.ico
文件 399 1999-01-28 10:19 Normals\res\Normals.rc2
文件 1078 1999-01-28 10:19 Normals\res\NormalsDoc.ico
文件 735 1999-01-28 16:09 Normals\Resource.h
文件 205 1999-01-28 10:19 Normals\StdAfx.cpp
文件 928 1999-01-28 10:19 Normals\StdAfx.h
目录 0 1999-02-03 11:06 Normals\Release
目录 0 1999-02-03 11:06 Normals\res
目录 0 2009-03-18 09:24 Normals
----------- --------- ---------- ----- ----
297089 28
............此处省略1个文件信息
- 上一篇:ANSI/VITA 48.5
- 下一篇:MIMO调度、预编码算法
相关资源
- VS2012OpenGL配置所需要的全部libdllh文件
- 基于OpenGL的仿蝗虫机器人三维动态仿
- 图形学 - OpenGL实现3种三维茶壶显示源
- opengl程序-会跳舞的骷髅
- opengl实现三维网格光顺Laplacian算法
- opengl——爆炸
- OpenGL三维地形建模
- opengl游戏编程徐明亮版(含源码)
- 用OPENGL画的一个简单的直升飞机
- opengl完美天空盒
- 3D绘图程序设计:使用Direct3D 10/9和Ope
- OpenGL绘制可运动自行车源程序.zip
- OpenGL实现飘动效果
- opengl室内场景的绘制,包括碰撞检测
- OpenGL场景漫游
- 用opengl实现的太阳系模型
- OpenGL 3D贪吃蛇程序,很小
- OpenGL爆炸碎片化效果 源码
- OpenGL三茶壶三光源光源绕着茶壶旋转
- 10个OpenGL的源码
- vc写的一个游戏里面三维场景漫游
- OpenGL实现的简单游戏引擎
- OpenGL游戏程序设计源码
- glew最新版本glew1.11.0
- OpenGL 火箭
- 天空盒和地面
- 三维场景漫游.zip
- openGL实现的正方体六面贴图
- opengl简易翻牌游戏
- Qt Openglwidget 显示图片纹理贴图
评论
共有 条评论