亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? graph.cpp

?? 影像融合與融合精度評價源碼影像融合與融合精度評價源碼
?? CPP
字號:
#include "stdafx.h"
#include "graph.h"
#include "math.h"
CGraph::CGraph(CWnd * cp):CClientDC(cp)
{}
void CGraph::DDALine(int x1,int y1,int x2,int y2,COLORREF color,int width)
{
	int i,j;
	float dx,dy,k,p;
	dy=float(y2-y1);
	dx=float(x2-x1);
	if(dx!=0)
	{
		k=dy/dx;
		if(k<=1&&k>=-1)
		{
			p=float(y1);
			if(dx>0)
			{
				for(i=x1;i<=x2;i++)
				{
				    for(j=-width/2;j<(width+1)/2;j++)
					    SetPixel(i,int(p+0.5)+j,color);
				    p=p+k;
				}
			}
		    else
			{
			    for(i=x1;i>=x2;i--)
				{
				    for(j=-width/2;j<(width+1)/2;j++)
					   SetPixel(i,int(p+0.5)+j,color);
				   p=p-k;
				}
			}
		}
	    else
		{
		   p=float(x1);
		   if(dy>0)
		   {
			   for(i=y1;i<=y2;i++)
			   {
				   for(j=-width/2;j<(width+1)/2;j++)
					SetPixel(int(p+0.5)+j,i,color);
				   p=p+1/k;
			   }
		   }
		   else
		   {
			   for(i=y1;i>=y2;i--)
			   {
				  for(j=-width/2;j<(width+1)/2;j++)
					SetPixel(int(p+0.5)+j,i,color);
				  p=p-1/k;
			   }
		   }
		}
	}
	else
	{
		p=float(x1);
		if(dy>0)
			for(i=y1;i<=y2;i++)
				for(j=-width/2;j<(width+1)/2;j++)
					SetPixel(int(p)+j,i,color);
		else
			for(i=y1;i>=y2;i--)
				for(j=-width/2;j<(width+1)/2;j++)
					SetPixel(int(p)+j,i,color);
	} 
}
void CGraph::MidPointCircle(int xc,int yc,int r,COLORREF color)
{
	int x,y,d;
	x=0;y=r;d=1-r;
	WholeCircle(xc,yc,x,y,color);
	while(x<y)
	{
		x++;
		if(d<0)
		{
			d+=2*x+3;
		}
		else
		{
			d+=2*(x-y)+5;
			y--;
		}
		WholeCircle(xc,yc,x,y,color);
	}//hile
	WholeCircle(xc,yc,x,y,color);
}//MidpointCircle
void CGraph::WholeCircle(int xc,int yc,int x,int y,COLORREF color)
{
	SetPixel(xc+x,yc+y,color);
	SetPixel(xc-x,yc+y,color);
	SetPixel(xc+x,yc-y,color);
	SetPixel(xc-x,yc-y,color);
	SetPixel(xc+y,yc+x,color);
	SetPixel(xc-y,yc+x,color);
	SetPixel(xc+y,yc-x,color);
	SetPixel(xc-y,yc-x,color);
}
void CGraph::InsertEdge(Edge * list,Edge * edge)
{
		Edge * p,*q=list;
		p=q->next;
		while (p!=NULL)
		{if (edge->x<p->x)
		    p=NULL;
		 else
		 {q=p;
		  p=p->next;
		 }
		}
		edge->next=q->next;
		q->next=edge;
}
int CGraph::yNext (int k,int cnt,POINT * pts)     
{
		int j;
		if((k+1)>(cnt-1))
			j=0;
		else
			j=k+1;
		while (pts[k].y==pts[j].y)
			if ((j+1)>(cnt-1))
				j=0;
			else
			    j++;
		return (pts[j].y);
}
void CGraph::MakeEdgeRec(POINT lower,POINT upper,int yComp,Edge * edge,Edge * edges[])
{
		edge->dx=(float)(upper.x-lower.x)/(upper.y-lower.y);
		edge->x=(float)lower.x;
		if (upper.y<yComp)
			edge->ymax=upper.y-1;
		else
			edge->ymax=upper.y;
		InsertEdge(edges[lower.y],edge);
}
void CGraph::BuildEdgeList(int cnt,POINT * pts,Edge * edges[])  
{
		Edge *edge;
		POINT v1,v2;
		int i,yPrev=pts[cnt-2].y;
		v1.x=pts[cnt-1].x;
		v1.y=pts[cnt-1].y;
		for (i=0;i<cnt;i++)
		{
			v2=pts[i];
			if(v1.y!=v2.y)
            {
				edge=(Edge*)malloc(sizeof(Edge));
				if(v1.y<v2.y)
					MakeEdgeRec(v1,v2,yNext(i,cnt,pts),edge,edges);
				else
					MakeEdgeRec(v2,v1,yPrev,edge,edges);
			}
			yPrev=v1.y;
			v1=v2;
		}
}
void CGraph::BuildActiveList(int scan,Edge * active,Edge * edges[])  
{
		Edge *p,*q;
		p=edges[scan]->next;
		while(p)
		{
			q=p->next;
			InsertEdge(active,p);
			p=q;
		}
}
void CGraph::FillScan(int scan,Edge * active,COLORREF color)    
{
		Edge *p1,*p2;
		int i;
		p1=active->next;
		while(p1)
		{
			p2=p1->next;
			for(i=(int)p1->x;i<p2->x;i++)
				SetPixel((int)i,scan,color);
			p1=p2->next;
		}
}
void CGraph::DeleteAfter(Edge *q)    
{
		Edge *p=q->next;
		q->next=p->next;
		free(p);
}

void CGraph::UpdateActiveList(int scan,Edge * active)  
{
		Edge *q=active,*p=active->next;
		while(p)
		if(scan>=p->ymax)
		{
			p=p->next;
			DeleteAfter(q);
		}
		else
		{
			p->x=p->x+p->dx;
			q=p;p=p->next;
		}
}

void CGraph::ResortActiveList(Edge * active)   
{
		Edge *q,*p=active->next;
		active->next=NULL;
		while(p)
		{
			q=p->next;
			InsertEdge(active,p);
			p=q;
		}
}

void CGraph::AreaFill (int cnt,POINT *pts,COLORREF color)
{
		Edge * edges[WINDOW_HEIGHT],*active;
		int i,scan,scanmax=0,scanmin=WINDOW_HEIGHT;
		for(i=0;i<cnt-1;i++)
		{
			if(scanmax<pts[i].y)scanmax=pts[i].y;
			if(scanmin>pts[i].y)scanmin=pts[i].y;
		}
		for(scan=scanmin;scan<=scanmax;scan++)
		{
			edges[scan]=(Edge *)malloc(sizeof(Edge));
			edges[scan]->next=NULL;
		}
		BuildEdgeList(cnt,pts,edges);
		active=(Edge *)malloc(sizeof(Edge));
		active->next=NULL;
		for(scan=scanmin;scan<=scanmax;scan++)
		{
			BuildActiveList(scan,active,edges);
			if(active->next)
			{
				FillScan(scan,active,color);
				UpdateActiveList(scan,active);
				ResortActiveList(active);
			}
		}
}





void CGraph::drawrect(int x0, int y0, int x1, int y1)
{
	DDALine(x0,y0,x1,y0,RGB(255,0,0),1);
	DDALine(x1,y0,x1,y1,RGB(255,0,0),1);
	DDALine(x1,y1,x0,y1,RGB(255,0,0),1);
	DDALine(x0,y1,x0,y0,RGB(255,0,0),1);

}

void CGraph::FillRect(int x0, int y0, int x1, int y1, COLORREF fillcolor)
{
	drawrect(x0,y0,x1,y1);
	for(int i=y0+1;i<y1;i++)
		for(int j=x0+1;j<x1;j++)
			SetPixel(j,i,fillcolor);

}

void CGraph::FillCircle(int x0, int y0, int x1, int y1,COLORREF color, COLORREF fillcolor)
{
	int r,dx,dy;
	dx=x1-x0;
	dy=y1-y0;
	r=(int)(sqrt(dx*dx+dy*dy)+0.5);
	Circle0(x0,y0,r,color,fillcolor);

}

void CGraph::Circle0(int x0, int y0, int r,COLORREF color, COLORREF fillcolor)
{
	int i,x,y,yy,delta,delta1,delta2,dir;
	x=0;
	y=r;
	yy=y;
	delta=2*(1-r);
	while(y>=0)
	{
		SetPixel(x+x0,y+y0,color);
		SetPixel(-x+x0,y+y0,color);
		SetPixel(x+x0,-y+y0,color);
		SetPixel(-x+x0,-y+y0,color);
		if(yy!=y)
		{
			for(i=-x+x0+1;i<x+x0;i++)
				SetPixel(i,y+y0,fillcolor);
			for(i=-x+x0+1;i<x+x0;i++)
				SetPixel(i,-y+y0,fillcolor);
		}
		yy=y;
		if(delta<0)
		{
			delta1=2*(delta+y)-1;
			if(delta1<=0)
				dir=1;
			else
				dir=2;
		}
		else if(delta>0)
		{
			delta2=2*(delta-x)-1;
			if(delta2<=0)
				dir=2;
			else
				dir=3;
		}
		else
			dir=2;
		switch(dir)
		{
		case 1:
			x++;
			delta+=2*x+1;
			break;
		case 2:
			x++;
			y--;
			delta+=2*(x-y+1);
			break;
		case 3:
			y--;
			delta+=-2*y+1;
			break;
		}
	}

}

void CGraph::DrawEllipse(int x1, int y1, int x2, int y2, COLORREF color)
{
	int xx0,yy0,rra,rrb;
	xx0=(x2+x1)/2;
	yy0=(y2+y1)/2;
	rra=abs(x2-x1)/2;
	rrb=abs(y2-y1)/2;
	if(rra==0 && rrb==0) return;
	Ellipse1(xx0,yy0,rra,rrb,color);
}

void CGraph::Ellipse1(int x0, int y0, int a, int b, COLORREF color)
{
	int yy;
	int x,y,deltax,deltay;
	int aa,aa2,aa3,bb,bb2,bb3;
	double d1,d2;
	aa=a*a;
	aa2=aa*2;
	aa3=aa*3;
	bb=b*b;
	bb2=bb*2;
	bb3=bb*3;
		
	x=0;
	y=b;
	d1=bb+aa*(-b+0.25);
	deltax=bb3;
	deltay=-aa2*b+aa2;
	SetPixel(x+x0,y+y0,color);
	SetPixel(x+x0,-y+y0,color);
	while(bb*(x+1)<aa*(y-0.5))
	{
		yy=y;
		if(d1<0)
		{
			d1+=deltax;
			deltax+=bb2;
			x++;
		}
		else
		{
			d1+=deltax+deltay;
			deltax+=bb2;
			deltay+=aa2;
			x++;
			y--;
		}
		SetPixel(x+x0,y+y0,color);
		SetPixel(-x+x0,y+y0,color);
		SetPixel(x+x0,-y+y0,color);
		SetPixel(-x+x0,-y+y0,color);
	}
	d2=bb*(x+0.5)*(x+0.5)+aa*(y-1)*(y-1)-aa*bb;
	deltax-=bb;
	deltay+=aa;
	while(y>0)
	{
		if(d2<0)
		{
			d2+=deltax+deltay;
			deltax+=bb2;
			deltay+=aa2;
			x++;
			y--;
		}
		else
		{
			d2+=deltay;
			deltay+=aa2;
			y--;
		}
		SetPixel(x+x0,y+y0,color);
		SetPixel(-x+x0,y+y0,color);
		SetPixel(x+x0,-y+y0,color);
		SetPixel(-x+x0,-y+y0,color);
	
	}

}




void CGraph::FillEllipse(int x1, int y1, int x2, int y2, COLORREF color, COLORREF fillcolor)
{
	int x0,y0,a,b;
	x0=(x2+x1)/2;
	y0=(y2+y1)/2;
	a=abs(x2-x1)/2;
	b=abs(y2-y1)/2;
	if(a==0 && b==0) return;
	Ellipse0(x0,y0,a,b,color,fillcolor);
}

void CGraph::Ellipse0(int x0, int y0, int a, int b, COLORREF color, COLORREF fillcolor)
{
	int i,yy;
	int x,y,deltax,deltay;
	int aa,aa2,aa3,bb,bb2,bb3;
	double d1,d2;
	aa=a*a;
	aa2=aa*2;
	aa3=aa*3;
	bb=b*b;
	bb2=bb*2;
	bb3=bb*3;
		
	x=0;
	y=b;
	d1=bb+aa*(-b+0.25);
	deltax=bb3;
	deltay=-aa2*b+aa2;
	SetPixel(x+x0,y+y0,color);
	SetPixel(x+x0,-y+y0,color);
	while(bb*(x+1)<aa*(y-0.5))
	{
		yy=y;
		if(d1<0)
		{
			d1+=deltax;
			deltax+=bb2;
			x++;
		}
		else
		{
			d1+=deltax+deltay;
			deltax+=bb2;
			deltay+=aa2;
			x++;
			y--;
		}
		SetPixel(x+x0,y+y0,color);
		SetPixel(-x+x0,y+y0,color);
		SetPixel(x+x0,-y+y0,color);
		SetPixel(-x+x0,-y+y0,color);
		if(yy!=y)
		{
			for(i=-x+x0+1;i<x+x0;i++)
				SetPixel(i,y+y0,fillcolor);
			for(i=-x+x0+1;i<x+x0;i++)
				SetPixel(i,-y+y0,fillcolor);
		}
	}
	d2=bb*(x+0.5)*(x+0.5)+aa*(y-1)*(y-1)-aa*bb;
	deltax-=bb;
	deltay+=aa;
	while(y>0)
	{
		if(d2<0)
		{
			d2+=deltax+deltay;
			deltax+=bb2;
			deltay+=aa2;
			x++;
			y--;
		}
		else
		{
			d2+=deltay;
			deltay+=aa2;
			y--;
		}
		SetPixel(x+x0,y+y0,color);
		SetPixel(-x+x0,y+y0,color);
		SetPixel(x+x0,-y+y0,color);
		SetPixel(-x+x0,-y+y0,color);
	
			for(i=-x+x0+1;i<x+x0;i++)
				SetPixel(i,y+y0,fillcolor);
			for(i=-x+x0+1;i<x+x0;i++)
				SetPixel(i,-y+y0,fillcolor);
	}
}



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久亚洲二区三区| 蜜桃精品在线观看| 麻豆成人久久精品二区三区红| 激情图片小说一区| 欧美午夜不卡视频| 国产欧美日韩中文久久| 免费观看成人av| 欧美影院午夜播放| 中文字幕一区av| 国产精品一区专区| 欧美一卡二卡在线观看| 午夜天堂影视香蕉久久| 一本色道久久综合亚洲91| 精品av久久707| 免费不卡在线观看| 欧美另类一区二区三区| 亚洲欧洲韩国日本视频| 丁香婷婷深情五月亚洲| 久久综合999| 国产毛片精品视频| www.色精品| 国产精品色哟哟| 岛国一区二区在线观看| 久久久噜噜噜久久中文字幕色伊伊 | 日韩精品一区二区三区四区 | 国产欧美一二三区| 韩国精品主播一区二区在线观看| 欧美日韩在线综合| 亚洲成av人片在线观看| 欧美日韩综合在线免费观看| 亚洲最快最全在线视频| 91官网在线免费观看| 亚洲激情五月婷婷| 欧美亚洲另类激情小说| 亚洲电影一级黄| 欧美日本一区二区三区四区| 亚洲成精国产精品女| 欧美精品久久99| 蜜桃av一区二区三区电影| 欧美一区二视频| 久久国产综合精品| 欧美精品一区二区不卡| 国产成人在线观看| ㊣最新国产の精品bt伙计久久| 99精品国产热久久91蜜凸| 亚洲免费观看在线观看| 欧美精品欧美精品系列| 经典三级一区二区| 国产丝袜美腿一区二区三区| 99re66热这里只有精品3直播| 一区二区三区在线视频免费观看| 欧美日本乱大交xxxxx| 男人的天堂久久精品| 久久久久97国产精华液好用吗| 国产不卡在线一区| 亚洲第一激情av| 亚洲精品一区二区三区影院| 成人av电影免费在线播放| 亚洲久草在线视频| 日韩视频在线观看一区二区| 国产91高潮流白浆在线麻豆 | 婷婷久久综合九色综合伊人色| 精品精品国产高清一毛片一天堂| 成人av网站免费| 午夜电影久久久| 国产亚洲精久久久久久| 91福利在线看| 国产精品综合av一区二区国产馆| 亚洲人成网站在线| 久久综合丝袜日本网| 日本高清无吗v一区| 黑人巨大精品欧美一区| 一区二区三区在线不卡| 欧美xxxxx牲另类人与| 色综合天天做天天爱| 久久丁香综合五月国产三级网站| 中文字幕制服丝袜成人av| 91精品国产一区二区三区| 成人综合日日夜夜| 欧美aaaaa成人免费观看视频| 亚洲欧洲www| 久久婷婷综合激情| 欧美男男青年gay1069videost| 高清在线观看日韩| 青青草国产成人99久久| 亚洲国产日韩a在线播放| 欧美激情在线观看视频免费| 欧美一区二区三区视频| 色香蕉成人二区免费| 国产91精品露脸国语对白| 日本不卡一区二区三区高清视频| 亚洲女人的天堂| 国产精品色噜噜| 国产日韩欧美精品电影三级在线| 欧美一级片在线看| 欧美视频你懂的| 色婷婷国产精品| 波多野结衣一区二区三区| 极品美女销魂一区二区三区免费| 五月天婷婷综合| 一区二区三区在线观看国产| 亚洲欧美日韩系列| 国产精品国模大尺度视频| 国产精品蜜臀av| 国产精品视频线看| 国产精品人成在线观看免费| 久久久精品一品道一区| 久久久国产精品不卡| 久久久噜噜噜久久中文字幕色伊伊 | 亚洲精品视频一区二区| 国产精品久久国产精麻豆99网站| 国产欧美一区二区三区鸳鸯浴 | eeuss影院一区二区三区 | 日韩一区有码在线| 中文字幕日韩一区| 亚洲精品免费视频| 一区二区国产视频| 亚洲综合免费观看高清完整版| 亚洲黄色小说网站| 亚洲小少妇裸体bbw| 亚洲成av人片观看| 日韩av不卡一区二区| 久热成人在线视频| 韩国毛片一区二区三区| 懂色av噜噜一区二区三区av| 99久久综合国产精品| 色综合亚洲欧洲| 91精品国产乱| 国产亚洲成av人在线观看导航| 国产精品色在线观看| 亚洲一区二区在线免费看| 日日夜夜一区二区| 国产真实乱子伦精品视频| 国产99久久久精品| 色噜噜狠狠色综合中国| 欧美伦理视频网站| 精品av久久707| 亚洲色图另类专区| 午夜精品久久久久久久久久 | 日本韩国一区二区三区视频| 欧美一区2区视频在线观看| 国产网站一区二区| 夜夜嗨av一区二区三区网页| 日本少妇一区二区| 国产成人午夜精品5599| 日本乱人伦aⅴ精品| 日韩一区二区免费电影| 久久久精品免费观看| 亚洲永久免费av| 国产一区欧美二区| 欧美四级电影在线观看| www精品美女久久久tv| 一区二区高清视频在线观看| 精品中文av资源站在线观看| 95精品视频在线| 欧美精品一区二区三区久久久| 中文字幕一区在线| 久久69国产一区二区蜜臀| 91成人免费网站| 久久综合色播五月| 日本亚洲视频在线| 色诱视频网站一区| 中文字幕免费在线观看视频一区| 亚洲v日本v欧美v久久精品| 成人不卡免费av| 日韩欧美一级二级三级久久久| 亚洲欧洲av一区二区三区久久| 久久99久久久欧美国产| 在线观看91视频| 国产精品久久一级| 国产一区二区三区视频在线播放| 欧美中文字幕一二三区视频| 国产农村妇女毛片精品久久麻豆| 日本sm残虐另类| 欧美巨大另类极品videosbest | 国产久卡久卡久卡久卡视频精品| 欧美午夜不卡在线观看免费| 《视频一区视频二区| 国产不卡视频在线播放| 日韩亚洲欧美高清| 日韩高清电影一区| 欧美色中文字幕| 一区二区三区中文免费| 99国产精品久久久久久久久久| 国产视频在线观看一区二区三区| 久久国产三级精品| 日韩一区二区麻豆国产| 日韩av高清在线观看| 欧美喷潮久久久xxxxx| 亚洲www啪成人一区二区麻豆| 色噜噜狠狠色综合欧洲selulu| 中日韩av电影| 成人ar影院免费观看视频| 中文成人av在线| www.日韩大片| 一区二区三区在线视频播放| 欧洲av一区二区嗯嗯嗯啊| 亚洲精品亚洲人成人网 | 99精品黄色片免费大全| 国产精品乱码一区二区三区软件|