91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 14.49MB
    文件類型: .zip
    金幣: 1
    下載: 0 次
    發布日期: 2023-07-09
  • 語言: 其他
  • 標簽: 實驗??

資源簡介

寫一個可以交互的OpenGL應用程序,支持用戶利用鼠標創建和刪除2維多邊形對象。基本功能包括: 對象創建:支持用戶利用鼠標指定各個頂點位置,創建多邊形。 對象刪除: 支持用戶選擇一個多邊形(與你的多邊形保存的數據結構有關)并刪除。 對象存儲: 設計一種數據結構存儲每個多邊形的頂點與邊,支持文件存盤。 提示:由于刪除操作需要多邊形的選擇機制,你可以在設計數據結構時,把可以幫助你完成選擇的信息一起保存。 擴展功能可以包括(至少選擇其一): 1. 支持用戶選擇多邊形的顏色 2. 支持用戶移動多邊形 3. 支持用戶改變多邊形單個頂點的位置 4. 支持3D多邊形

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include??
#define?MAX_POLYGONS?10
#define?MAX_VERTICES?20


#define?TRUE?1
#define?FALSE?0

void?myReshape(int?int); //窗口處理事件函數
void?myinit(); //初始化
void?myMouse(int?int?int?int); //鼠標事件處理函數
void?myMotion(int?int); //實現移動多邊形功能
int?pick_polygon(int?x?int?y); //選擇多邊形
int?pick_point(int?x?int?y); //選擇點
void?color_menu(int); //顏色選擇菜單
void?moving_menu(int); //選擇移動點或者多邊形
void?main_menu(int); //主菜單
void?myDisplay();???????????????????????//移動的圖形高亮


/*定義全局變量*/


/*定義多邊形的結構體類型即一種存放多邊形信息的數據結構,包括顏色,是否要畫出來,包圍盒的邊界大小,多邊形中心的坐標,各頂點坐標*/

typedef?struct?polygon
{
int?color;
bool?isFill; //是否填充
bool?end; //結束繪制多邊形
bool??used; //多邊形是否被定義
int?xmin?xmax?ymin?ymax; //包圍盒
float?xc?yc; //多邊形中心
int?nvertices; //頂點數目
int?x[MAX_VERTICES]; //頂點
int?y[MAX_VERTICES];
bool?highlight?=?false;
}?polygon;

/*定義標記變量*/
bool?start?=?TRUE; //開始繪制新的多邊形
FILE?*fp?=?NULL; //用于存盤復盤的指針
FILE?*pp?=?NULL;
bool?Fill?=?FALSE; //是否填充
bool?noFill?=?FALSE; //解除填充
bool?pointMoving?=?FALSE; //判斷是否處于移動點狀態

bool?picking?=?FALSE; //判斷是否處于拾取狀態,如果是,則為TRUE?
bool?moving?=?FALSE; //判斷是否處于移動狀態
int?in_polygon?=?-1; //不在任何多邊形的內部
int?present_color?=?0; //默認顏色

GLsizei?wh?=?800?ww?=?500; //初始窗口大小
int?draw_mode?=?0; //繪制模式

GLfloat?colors[8][3]?=?{?{?0.0?0.0?0.0?}{?1.0?0.0?0.0?}{?0.0?1.0?0.0?}
{?0.0?0.0?1.0?}{?0.0?1.0?1.0?}{?1.0?0.0?1.0?}{?1.0?1.0?0.0?}
{?1.0?1.0?1.0?}?}; //顏色數組


polygon?polygons[MAX_POLYGONS]; //多邊形結構數組


void?myReshape(int?w?int?h) //窗口處理事件函數
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0?(GLdouble)w?0.0?(GLdouble)h);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

glViewport(0?0?w?h);
ww?=?w;
wh?=?h;
}

void?myinit() //初始化
{
int??i; //設置清屏顏色
glClearColor(0.0?0.0?0.0?1.0); //把所有的多邊形標記為未定義的狀態
for?(i?=?0;?i {
polygons[i].used?=?FALSE;
polygons[i].end?=?FALSE;
polygons[i].isFill?=?FALSE;
polygons[i].nvertices?=?0;
}
}


/*鼠標事件處理,功能有初始化成繪制模式,在新建多邊形模式下存儲點的坐標刪除多邊形,填充顏色,增加多邊形的一個頂點*/
void?myMouse(int?btn?int?state?int?x?int?y)
{
int?i?j;
int?a;

/*設置窗口打開后就能點擊畫圖,不需要點擊菜單開始繪圖,start判斷是否開始繪圖。首先判斷判斷是否超出最大多邊形數量,如果沒有,就可以繪制*/
if?(start)
{
moving?=?FALSE;
for?(a?=?0;a if?(a?==?MAX_POLYGONS)
{
printf(“超出最多的多邊形數!“);
exit(0);
}
polygons[a].color?=?present_color;
polygons[a].used?=?TRUE;
polygons[a].isFill?=?FALSE;
polygons[a].end?=?FALSE;
polygons[a].nvertices?=?0;
in_polygon?=?a;
picking?=?FALSE;
start?=?FALSE;
}

y?=?wh?-?y;
if?(btn?==?GLUT_LEFT_BUTTON?&&?state?==?GLUT_UP?&&?!picking?&&?!moving?&&?!pointMoving)
//增加頂點???

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-05-08?09:31??GTest2\
?????目錄???????????0??2017-05-07?19:50??GTest2\.git\
?????文件????????2581??2017-05-07?19:50??GTest2\.gitattributes
?????文件????????3997??2017-05-07?19:50??GTest2\.gitignore
?????文件?????????597??2017-05-07?19:50??GTest2\.git\config
?????文件??????????73??2017-05-07?19:50??GTest2\.git\description
?????文件??????????23??2017-05-07?19:50??GTest2\.git\HEAD
?????目錄???????????0??2017-05-07?19:50??GTest2\.git\hooks\
?????文件?????????177??2017-05-07?19:50??GTest2\.git\hooks\README.sample
?????文件????????1096??2017-05-07?19:50??GTest2\.git\index
?????目錄???????????0??2017-05-07?19:50??GTest2\.git\info\
?????文件?????????113??2017-05-07?19:50??GTest2\.git\info\exclude
?????目錄???????????0??2017-05-07?19:50??GTest2\.git\logs\
?????文件?????????342??2017-05-07?19:50??GTest2\.git\logs\HEAD
?????目錄???????????0??2017-05-07?19:50??GTest2\.git\logs\refs\
?????目錄???????????0??2017-05-07?19:50??GTest2\.git\logs\refs\heads\
?????文件?????????342??2017-05-07?19:50??GTest2\.git\logs\refs\heads\master
?????文件?????????150??2017-05-07?19:50??GTest2\.git\ms-persist.xml
?????目錄???????????0??2017-05-07?19:50??GTest2\.git\objects\
?????目錄???????????0??2017-05-07?19:50??GTest2\.git\objects\0d\
?????文件??????????89??2017-05-07?19:50??GTest2\.git\objects\0d\76fe4328089e5b63a9c4190badacfc35ef2624
?????目錄???????????0??2017-05-07?19:50??GTest2\.git\objects\14\
?????文件?????????178??2017-05-07?19:50??GTest2\.git\objects\14\8dee6faefcccee0cc6714a1e1f60cb5ce87e22
?????目錄???????????0??2017-05-07?19:50??GTest2\.git\objects\15\
?????文件?????????296??2017-05-07?19:50??GTest2\.git\objects\15\16aba376093d36708bc1a3248e5b9397cd2471
?????目錄???????????0??2017-05-07?19:50??GTest2\.git\objects\1c\
?????文件????????1863??2017-05-07?19:50??GTest2\.git\objects\1c\9a181a44b4f9a105f0dc71a40ad0284ab6a7c4
?????目錄???????????0??2017-05-07?19:50??GTest2\.git\objects\1f\
?????文件?????????751??2017-05-07?19:50??GTest2\.git\objects\1f\f0c423042b46cb1d617b81efb715defbe8054d
?????目錄???????????0??2017-05-07?19:50??GTest2\.git\objects\7f\
?????文件?????????229??2017-05-07?19:50??GTest2\.git\objects\7f\d44d2fc500db7f387dde34abefe34c4a7026bf
............此處省略63個文件信息

評論

共有 條評論