资源简介
这是计算机图形学的一个大作业,绘制了一个3D模型,可以实现模型视图缩放,旋转,平移。有控制窗口实现模型不见得旋转,平移以及光源的改变等等。
代码片段和文件信息
//
// bitmap.cpp
//
// handle MS bitmap I/O. For portability we don‘t use the data structure defined in Windows.h
// However there is some strange thing the side of our structure is different from what it
// should though we define it in the same way as MS did. So there is a hack we use the hardcoded
// constanr 14 instead of the sizeof to calculate the size of the structure.
// You are not supposed to worry about this part. However I will appreciate if you find out the
// reason and let me know. Thanks.
//
#include “bitmap.h“
BMP_BITMAPFILEHEADER bmfh;
BMP_BITMAPINFOHEADER bmih;
unsigned char *readBMP(char *fname int& width int& height)
{
FILE* file;
BMP_DWORD pos;
if ( (file=fopen( fname “rb“ )) == NULL )
return NULL;
// I am doing fread( &bmfh sizeof(BMP_BITMAPFILEHEADER) 1 file ) in a safe way. :}
fread( &(bmfh.bfType) 2 1 file);
fread( &(bmfh.bfSize) 4 1 file);
fread( &(bmfh.bfReserved1) 2 1 file);
fread( &(bmfh.bfReserved2) 2 1 file);
fread( &(bmfh.bfOffBits) 4 1 file);
pos = bmfh.bfOffBits;
fread( &bmih sizeof(BMP_BITMAPINFOHEADER) 1 file );
// error checking
if ( bmfh.bfType!= 0x4d42 ) { // “BM“ actually
return NULL;
}
if ( bmih.biBitCount != 24 )
return NULL;
/*
if ( bmih.biCompression != BMP_BI_RGB ) {
return NULL;
}
*/
fseek( file pos SEEK_SET );
width = bmih.biWidth;
height = bmih.biHeight;
int padWidth = width * 3;
int pad = 0;
if ( padWidth % 4 != 0 )
{
pad = 4 - (padWidth % 4);
padWidth += pad;
}
int bytes = height*padWidth;
unsigned char *data = new unsigned char [bytes];
int foo = fread( data bytes 1 file );
if (!foo) {
delete [] data;
return NULL;
}
fclose( file );
// shuffle bitmap data such that it is (RGB) tuples in row-major order
int i j;
j = 0;
unsigned char temp;
unsigned char* in;
unsigned char* out;
in = data;
out = data;
for ( j = 0; j < height; ++j )
{
for ( i = 0; i < width; ++i )
{
out[1] = in[1];
temp = in[2];
out[2] = in[0];
out[0] = temp;
in += 3;
out += 3;
}
in += pad;
}
return data;
}
void writeBMP(char *iname int width int height unsigned char *data)
{
int bytes pad;
bytes
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2015-12-31 17:25 Modeler_VC2005\
目录 0 2015-12-31 17:25 Modeler_VC2005\Debug\
文件 7142 2015-12-12 17:03 Modeler_VC2005\Debug\BuildLog.htm
文件 27575 2015-12-06 14:28 Modeler_VC2005\Debug\bitmap.obj
文件 71155 2015-12-06 14:28 Modeler_VC2005\Debug\camera.obj
文件 499712 2015-12-12 17:03 Modeler_VC2005\Debug\modeler.exe
文件 655 2015-12-06 14:28 Modeler_VC2005\Debug\modeler.exe.em
文件 720 2015-12-06 14:28 Modeler_VC2005\Debug\modeler.exe.em
文件 620 2015-12-12 17:03 Modeler_VC2005\Debug\modeler.exe.intermediate.manifest
文件 1455652 2015-12-12 17:03 Modeler_VC2005\Debug\modeler.ilk
文件 1330176 2015-12-12 17:03 Modeler_VC2005\Debug\modeler.pdb
文件 71395 2015-12-06 14:28 Modeler_VC2005\Debug\modelerapp.obj
文件 52216 2015-12-06 14:28 Modeler_VC2005\Debug\modelerdraw.obj
文件 127175 2015-12-06 14:28 Modeler_VC2005\Debug\modelerui.obj
文件 58260 2015-12-06 14:28 Modeler_VC2005\Debug\modelerview.obj
文件 65 2015-12-12 17:03 Modeler_VC2005\Debug\mt.dep
文件 48034 2015-12-12 17:03 Modeler_VC2005\Debug\sample.obj
文件 1018880 2015-12-12 17:03 Modeler_VC2005\Debug\vc80.idb
文件 323584 2015-12-12 17:03 Modeler_VC2005\Debug\vc80.pdb
文件 600 2015-12-06 14:28 Modeler_VC2005\ModelerSkeleton-11.2-sp01_ReleaseNotes.txt
目录 0 2015-12-31 17:25 Modeler_VC2005\Release\
文件 10848 2015-12-06 14:28 Modeler_VC2005\Release\BuildLog.htm
文件 4937 2015-12-06 14:28 Modeler_VC2005\bitmap.cpp
文件 1207 2015-12-06 14:28 Modeler_VC2005\bitmap.h
文件 4313 2015-12-06 14:28 Modeler_VC2005\camera.cpp
文件 2503 2015-12-06 14:28 Modeler_VC2005\camera.h
文件 169984 1998-08-18 16:25 Modeler_VC2005\glut32.dll
目录 0 2015-12-31 17:25 Modeler_VC2005\local\
目录 0 2015-12-31 17:25 Modeler_VC2005\local\include\
目录 0 2015-12-31 17:25 Modeler_VC2005\local\include\FL\
文件 14327 2015-12-06 14:28 Modeler_VC2005\local\include\FL\Enumerations.H
............此处省略149个文件信息
评论
共有 条评论