• 大小: 61KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-05-28
  • 语言: 其他
  • 标签: OpenGL  法向量  

资源简介

通过计算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\GLobject.cpp

     文件        836  2008-09-05 15:48  Normals\GLobject.h

     文件       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个文件信息

评论

共有 条评论