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

  • 大小: 13KB
    文件類型: .cpp
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-10
  • 語言: C/C++
  • 標簽: 橡皮筋??

資源簡介

計算機圖形學的掃描線填充算法 結合了與win32寫的橡皮筋程序,希望對大家有幫助

資源截圖

代碼片段和文件信息

//?DEMO3_13.CPP?-?WM_MOUSEMOVE?demo

//?INCLUDES?///////////////////////////////////////////////
#define?WIN32_LEAN_AND_MEAN??//?just?say?no?to?MFC

#include????//?include?all?the?windows?headers
#include???//?include?useful?macros
#include???//?very?important?and?include?WINMM.LIB?too!
#include?
#include?
#include?

//?DEFINES?////////////////////////////////////////////////

//?defines?for?windows?
#define?WINDOW_CLASS_NAME?“WINCLASS1“

//?GLOBALS?////////////////////////////////////////////////
HWND??????main_window_handle?=?NULL;?//?globally?track?main?window
HINSTANCE?hinstance_app??????=?NULL;?//?globally?track?hinstance

int?tag=NULL;

int?x_move_app=NULL;
int?y_move_app=NULL;
int?x_click_app=NULL;
int?y_click_app=NULL;
int?x_move_temp=NULL;
int?y_move_temp=NULL;
int?x_end_app=NULL;
int?y_end_app=NULL;
//int?i=0;
//POINT?record[100];


//-------------------------------------------------------
struct?Edge
{
float?ymax;
float?x;
float?ymin;
float?reciSlope;
Edge*?next;
};

typedef?Edge*?PEdge;

struct?Point
{
float?x;
float?y;
};
Point?point[100];
int?pnum=0;//存儲點的個數
float?yminymax;//最大y,最小y
PEdge?*ET;//邊表
Edge?*AEL=NULL;
//-------------------------------------------------------
/*void?getPoint()//獲取多邊形各個頂點(邊不能交叉)
{
point[0].x=100;
point[0].y=100;
point[1].x=300;
point[1].y=200;
point[2].x=200;
point[2].y=300;
point[3].x=300;
point[3].y=400;
point[4].x=100;
point[4].y=500;
}*/

void?getMiny(float?&ymin)//獲得多邊形的最小Y值
{
????ymin=point[0].y;
for(int?i=1;i {
if(point[i].y ymin=point[i].y;
}
}

void?getMaxy(float?&ymax)//獲得多邊形的最大Y值
{

ymax=point[0].y;
for(int?i=1;i {
if(point[i].y>ymax)
ymax=point[i].y;
}
}


void?getEdge(Point?&pbeginPoint?&pendint?i)//獲取第i個頂點和其后一個頂點組成的邊
{
if(point[i].y {
pbegin.y=point[i].y;
pbegin.x=point[i].x;
pend.y=point[(i+1)%pnum].y;
pend.x=point[(i+1)%pnum].x;
if(point[(i+2)%pnum].y>point[(i+1)%pnum].y)
pend.y--;
}
else?if(point[i].y>point[(i+1)%pnum].y)
{
pbegin.y=point[(i+1)%pnum].y;
pbegin.x=point[(i+1)%pnum].x;
pend.y=point[i].y;
pend.x=point[i].x;
if(point[(i-1+pnum)%pnum].y>point[i].y)//(i-1+pnum)%pnum
pend.y--;
}
else
{
pbegin.y=point[i].y;
pbegin.x=point[i].x;
pend.y=point[(i+1)%pnum].y;
pend.x=point[(i+1)%pnum].x;
}

}
void?createET(PEdge*?&ET)//構建邊表
{
for(int?i=0;i ET[i]=NULL;
Point?pbegin;
Point?pend;
for(int?v=0;v {
getEdge(pbeginpendv);
if(pbegin.y!=pend.y)
{
Edge?*t=new?Edge;
t->ymax=pend.y;
t->reciSlope=(pend.x-pbegin.x)/(pend.y-pbegin.y);
t->x=pbegin.x;
t->ymin=pbegin.y;
t->next=NULL;
if(ET[int(pbegin.y-ymin)]==NULL)
ET[int(pbegin.y-ymin)]=t;
else
{
Edge?*p?=?ET[int(pbegin.y-ymin)];
Edge?*q;
w

評論

共有 條評論