資源簡(jiǎn)介
創(chuàng)建了一個(gè)球體類(lèi)Sphere,該類(lèi)借助于OpenGL來(lái)實(shí)現(xiàn)球體的繪制,基本思想是將球體的8分之1(第一卦限)部分的頂點(diǎn)生成出來(lái),再通過(guò)7次翻轉(zhuǎn)得到其余部分的頂點(diǎn),以此完成球體的繪制,算法還存在需要優(yōu)化的地方,歡迎提出寶貴的意見(jiàn)

代碼片段和文件信息
//?IVTask1.cpp?:?定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。
//
#include?“stdafx.h“
#include?
#include?“glut.h“
#define?WIN_title?“信息可視化實(shí)驗(yàn)1“
#define?WIN_X?50
#define?WIN_Y?50
#define?WIN_WIDTH?500
#define?WIN_HEIGHT?400
#define?ROTATE_DELTA?1.0
#define?TRANSLATE_DELTA?1.0
#define?AXIS_RENDER_LENGTH?1000.0
const?float?HALF_PI=acos(0.0);
enum?Ref_Plain?{XOYYOZXOZ};//翻轉(zhuǎn)參照面枚舉量
GLfloat?prexpreyspinx(0)spiny(0)scaleFactor=1.0;
bool?isDrag=false;
struct?Vertex
{
float?xyz;
//float?vxvyvz;
};
struct?HalfQuarterSphere
{
Vertex?topVertex;//1/8圓的穹頂點(diǎn)
Vertex?**?pVertexs;//其余頂點(diǎn)
int?numCircle;//緯線數(shù)量
int?numLine;//經(jīng)線數(shù)量
float?radius;//半徑
};
HalfQuarterSphere?hqSphere;
struct?Position
{
float?xy;
};
void?printHalfQuarterSphere(const?HalfQuarterSphere&?hqSphere)
{
printf(“(%.2f?%.2f?%.2f)\n“hqSphere.topVertex.xhqSphere.topVertex.yhqSphere.topVertex.z);
for(int?i=0;i {
for(int?j=0;j {
printf(“[%d][%d]=(%.2f?%.2f?%.2f)?“ijhqSphere.pVertexs[i][j].xhqSphere.pVertexs[i][j].yhqSphere.pVertexs[i][j].z);
}
printf(“\n“);
}
}
void?flipHalfQuarterSphere(HalfQuarterSphere?&?hqSphereRef_Plain?rp)
{
switch(rp)
{
case?XOY:
hqSphere.topVertex.z=-hqSphere.topVertex.z;
for(int?i=0;i {
for(int?j=0;j {
hqSphere.pVertexs[i][j].z=-hqSphere.pVertexs[i][j].z;
}
}
break;
case?YOZ:
hqSphere.topVertex.x=-hqSphere.topVertex.x;
for(int?i=0;i {
for(int?j=0;j {
hqSphere.pVertexs[i][j].x=-hqSphere.pVertexs[i][j].x;
}
}
break;
case?XOZ:
hqSphere.topVertex.y=-hqSphere.topVertex.y;
????for(int?i=0;i {
for(int?j=0;j {
hqSphere.pVertexs[i][j].y=-hqSphere.pVertexs[i][j].y;
}
}
break;
}
}
void?generateHalfQuarterSphere(int?numCir/*緯線數(shù)*/int?numLin/*經(jīng)線數(shù)*/HalfQuarterSphere&?hqSpherefloat?R)//生成第一卦限的1/8個(gè)球體
{
hqSphere.numCircle=numCir;
hqSphere.numLine=numLin;
hqSphere.radius=R;
hqSphere.topVertex.z=R;
hqSphere.topVertex.x=hqSphere.topVertex.y=0;
//hqSphere.topVertex.vx=hqSphere.topVertex.vy=0;
//hqSphere.topVertex.vz=1;
//申請(qǐng)內(nèi)存塊
hqSphere.pVertexs=new?Vertex*[numCir];
for(int?i=0;i {
hqSphere.pVertexs[i]=new?Vertex[numLin];
}
float?cirAngleSegment=HALF_PI/numCir;//每道緯線的間距
float?cirAngleOffset=0;
float?zOffset=0;
float?angleOffset=0;
float?linAngleSegment=HALF_PI/(numLin-1);//每道相鄰經(jīng)線在XOY平面投影線的夾角
//初始化緯線與XOZ平面的交點(diǎn)
float?curR=0;
int?boundLin=numLin-1;
????for(int?i=numCir-1;i>=0;i--)
{
zOffset=R*sin(cirAngleOffset);
//初始化當(dāng)前緯線與首經(jīng)線、末經(jīng)線上的交點(diǎn)
curR=hqSphere.pVertexs[i][0].x=hqSphere.pVertexs[i][boundLin].y=sqrt(R*R-zOffset*zOffset);
hqSphere.pVertexs[i][0].y=hqSphere.pVertexs[i][boundLin].x=0;
hqSphere.pVertexs[i][0].z=hqSphere.pVertexs[i][boundLin].z=zOffset;
//hqSphere.pVertex
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????文件??????41472??2012-09-16?10:16??IVTask1\Debug\IVTask1.exe
?????文件?????494216??2012-09-16?10:16??IVTask1\Debug\IVTask1.ilk
?????文件?????535552??2012-09-16?10:16??IVTask1\Debug\IVTask1.pdb
?????文件????2359296??2012-09-16?10:36??IVTask1\ipch\ivtask1-c161c19e\ivtask1-b9462aaf.ipch
?????文件???????1754??2012-09-16?10:16??IVTask1\IVTask1\Debug\cl.command.1.tlog
?????文件???????4294??2012-09-16?10:16??IVTask1\IVTask1\Debug\CL.read.1.tlog
?????文件???????1314??2012-09-16?10:16??IVTask1\IVTask1\Debug\CL.write.1.tlog
?????文件????????406??2012-09-13?20:48??IVTask1\IVTask1\Debug\IVTask1.exe.em
?????文件????????472??2012-09-13?20:48??IVTask1\IVTask1\Debug\IVTask1.exe.em
?????文件????????381??2012-09-16?10:16??IVTask1\IVTask1\Debug\IVTask1.exe.intermediate.manifest
?????文件????????102??2012-09-16?10:16??IVTask1\IVTask1\Debug\IVTask1.lastbuildstate
?????文件???????2437??2012-09-16?10:16??IVTask1\IVTask1\Debug\IVTask1.log
?????文件??????32080??2012-09-16?10:16??IVTask1\IVTask1\Debug\IVTask1.obj
?????文件????1179648??2012-09-13?20:48??IVTask1\IVTask1\Debug\IVTask1.pch
?????文件????????204??2012-09-13?20:48??IVTask1\IVTask1\Debug\IVTask1_manifest.rc
?????文件??????????2??2012-09-16?10:16??IVTask1\IVTask1\Debug\li
?????文件??????????2??2012-09-16?10:16??IVTask1\IVTask1\Debug\li
?????文件??????????2??2012-09-16?10:16??IVTask1\IVTask1\Debug\li
?????文件??????????2??2012-09-16?10:16??IVTask1\IVTask1\Debug\li
?????文件??????????2??2012-09-16?10:16??IVTask1\IVTask1\Debug\li
?????文件??????????2??2012-09-16?10:16??IVTask1\IVTask1\Debug\li
?????文件??????????2??2012-09-16?10:16??IVTask1\IVTask1\Debug\li
?????文件??????????2??2012-09-16?10:16??IVTask1\IVTask1\Debug\li
?????文件??????????2??2012-09-16?10:16??IVTask1\IVTask1\Debug\li
?????文件??????????2??2012-09-16?10:16??IVTask1\IVTask1\Debug\li
?????文件??????????2??2012-09-16?10:16??IVTask1\IVTask1\Debug\li
?????文件??????????2??2012-09-16?10:16??IVTask1\IVTask1\Debug\li
?????文件??????????2??2012-09-16?10:16??IVTask1\IVTask1\Debug\li
?????文件??????????2??2012-09-16?10:16??IVTask1\IVTask1\Debug\li
?????文件??????????2??2012-09-16?10:16??IVTask1\IVTask1\Debug\li
............此處省略55個(gè)文件信息
- 上一篇:串口工具.zip
- 下一篇:光伏系統(tǒng)mppt
評(píng)論
共有 條評(píng)論