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

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

?? suanfa.cpp

?? 用Visual C++編寫的一個實現矩形窗口對多邊形的裁剪!
?? CPP
字號:
#include "stdafx.h"
#include "suanfa.h"

//在指定的pDC設備中,畫多邊形
bool CGraphics::DrawPloyon(CDC* pDC)
{
	if(PointCount < 3)
		return false;
	//若多邊形小于三個點則返回

	pDC->MoveTo(Point[0]);
	for(int i=1;i<PointCount;i++)
	{	
		pDC->LineTo(Point[i]);
	}
	pDC->LineTo(Point[0]);
	//在pDC中畫出多邊形
     return true;
}

bool CGraphics::CutRect(CRect rect)
{
	CPoint rectPoint[4];
	rectPoint[0].x = rect.left;
	rectPoint[0].y = rect.top;
	rectPoint[1].x = rect.right;
	rectPoint[1].y = rect.top;
	rectPoint[3].x = rect.left;
	rectPoint[3].y = rect.bottom;
	rectPoint[2].x = rect.right;
	rectPoint[2].y = rect.bottom;
	//獲取裁減矩形的四個點的坐標,第一個點為左上,第二個點為右上,第三個點為右下,第四個點為左下
	int i;
	CArray<CPoint,CPoint&> myArray;//裁減后,保存的多邊形的依次各點的坐標
	for(int rectNum=0;rectNum<4;rectNum++)
	{
		//對裁減矩形的四條邊進行循環
		for(i=0;i<PointCount;i++)
		{
			//對每條邊進行循環
			CPoint PointCross;
			int beforeI=BeforeIndex(i),afterI=AfterIndex(i);
			int afterrectNum = ((rectNum == 3)?0:rectNum+1);
			//判斷是否跟線段相交
			if(InterCross(Point[beforeI],Point[i],rectPoint[rectNum],rectPoint[afterrectNum],PointCross))
			{
				if(PointCross==Point[i])
				{
					myArray.Add(Point[i]);//交點在線段頂點上,直接添加頂點坐標在保存多邊形的數組中
				}
				else 
					if(PointCross==Point[beforeI])
					{
						if(IsInSquareRgn(rect,Point[i],rectNum))
							myArray.Add(Point[i]);//判斷是否可視,若是,則添加點坐標
					}
					else
					{
						myArray.Add(PointCross);//跟線段相交,但交點不在頂點上,添加交點坐標
						if(IsInSquareRgn(rect,Point[i],rectNum))
							myArray.Add(Point[i]);//判斷是否可視,若是,則添加點坐標

					}
					
			}
			else
				if(IsInSquareRgn(rect,Point[i],rectNum))
					myArray.Add(Point[i]);//線段不相交,但需判斷是否可視,若是,則添加點坐標
			
		}
		PointCount=myArray.GetSize();
		if(Point)
			delete Point;
		Point = new CPoint[PointCount];
		for(i=0;i<PointCount;i++)
			Point[i]=myArray.GetAt(i);//重新賦予點坐標的值
		myArray.RemoveAll();
	}
	return true;
}

bool CGraphics::InterCross(CPoint objectP1,CPoint objectP2,CPoint scanP1,CPoint scanP2,CPoint& coordinate)
{
	//objectP1、objectP2是一條線段的頂點坐標,而scanP1、scanP2是另一條線段的頂點坐標
	if(objectP1 == objectP2)
		return false;//若objectP1、objectP2相等,則構不成線段,退出
	if(scanP1 == scanP2)
		return false;//若scanP1、scanP2等,則構不成線段,退出
	if( ( objectP1.y - objectP2.y ) * ( scanP1.x - scanP2.x )
		== ( scanP1.y - scanP2.y ) * ( objectP1.x - objectP2.x))
	{
		//對斜率相等的情況下的處理
		if((objectP1.y-objectP2.y)*(scanP1.x-objectP1.x)==(objectP1.x-objectP2.x)*(scanP1.y-objectP1.y))
		{
			//判斷兩條線段是不是同一條線段
			coordinate=objectP2;
			return true;
		}
		else
			return false;
	}
	if(objectP1.x == objectP2.x)
	{
		//當第一條線段斜率不存在時,處理辦法
		double x,y;
		x = objectP1.x;
		y = (scanP1.y-scanP2.y)*1.0/(scanP1.x-scanP2.x)*(objectP1.x-scanP1.x)+scanP1.y;
		y = (float)((int)(y+0.5));
		if(((objectP1.y-y)*(y-objectP2.y)>=0) && ((objectP1.x-x)*(x-objectP2.x)>=0))
		{
			//判斷交點是不是在該兩條線段上
			coordinate.x = objectP1.x;
			coordinate.y = (int)(y+0.5);
			return true;
		}
		return false;
	}
	else
	{
		if(scanP1.x == scanP2.x)
		{
			//當第二條線段斜率不存在時,處理辦法
			double x,y;
			x = scanP1.x;
			y = (objectP1.y-objectP2.y)*1.0/(objectP1.x-objectP2.x)*(scanP1.x-objectP1.x)+objectP1.y;
			y = (float)((int)(y+0.5));
			if(((objectP1.y-y)*(y-objectP2.y)>=0) && ((objectP1.x-x)*(x-objectP2.x)>=0))
			{
				//判斷交點是不是在該兩條線段上
				coordinate.x = scanP1.x;
				coordinate.y = (int)(y+0.5);
				return true;
			}
			return false;
		}
		else
		{
			//兩條線段斜率都存在時的處理辦法
			double k1,k2;
			k1 = ( objectP1.y - objectP2.y ) * 1.0 / ( objectP1.x - objectP2.x);
			k2 = ( scanP1.y - scanP2.y ) * 1.0 / ( scanP1.x - scanP2.x );
			//k1,k2為計算的兩線段的斜率
			double x,y;
			x = (scanP1.y-objectP1.y-k2*scanP1.x+k1*objectP1.x)/(k1-k2);
			y = (k1*k2*scanP1.x-k1*k2*objectP1.x+k2*objectP1.y-k1*scanP1.y)/(k2-k1);
			x=(float)((int)(x+0.5));
			y = (float)((int)(y+0.5));

			if(((objectP1.y-y)*(y-objectP2.y)>=0) && ((objectP1.x-x)*(x-objectP2.x)>=0))
			{
				//判斷交點是不是在該兩條線段上
				coordinate.x = (int)(x+0.5);
				coordinate.y = (int)(y+0.5);
				return true;
			}
			return false;
		}
	}
	return true;
}

bool CGraphics::IsInSquareRgn(CRect rect,CPoint Point,int flag)
{
	//對多邊形裁減時,判斷線段端點是否在可視一側,判斷就是直接判斷點坐標的關系
	switch(flag) 
	{
	case 0:
		if(Point.y > rect.top)
			return true;
		else 
			return false;
		break;
	case 1:
		if(Point.x < rect.right)
			return true;
		else 
			return false;
		break;
	case 2:
		if(Point.y < rect.bottom)
			return true;
		else 
			return false;
		break;
	case 3:
		if(Point.x > rect.left)
			return true;
		else 
			return false;
		break;
	default:
		break;
	}
	return true;
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩精品一二三区| 一区二区三区国产精品| 国产精品一区二区在线观看网站| 麻豆视频一区二区| 亚洲一卡二卡三卡四卡五卡| 中文字幕在线视频一区| 精品少妇一区二区三区视频免付费 | 欧美日韩视频专区在线播放| 成人激情免费视频| 欧美一区午夜视频在线观看| 日韩中文字幕91| 亚洲国产精品精华液2区45| 人人超碰91尤物精品国产| 国产三级久久久| 亚洲视频每日更新| 亚洲图片激情小说| 日韩av高清在线观看| 蜜臀av性久久久久蜜臀aⅴ| 狠狠色丁香久久婷婷综| 91精品国产色综合久久不卡电影 | 亚洲电影你懂得| 欧美国产1区2区| 麻豆视频一区二区| 欧美中文字幕一区二区三区| 欧美一区二视频| 亚洲视频精选在线| 国产精品系列在线观看| 欧美xfplay| 日韩精品乱码免费| 欧美日免费三级在线| 国产丝袜欧美中文另类| 久久se精品一区二区| 亚洲人午夜精品天堂一二香蕉| 国产欧美一区二区三区网站| 亚洲已满18点击进入久久| 成人少妇影院yyyy| 国产一区二区日韩精品| 91.xcao| 精品一区二区成人精品| 中文字幕亚洲视频| 日韩一区二区在线观看视频 | 欧美日韩成人激情| 亚洲男同性恋视频| 亚洲成人av电影在线| 91久久久免费一区二区| 日本女人一区二区三区| 国产精品久久影院| 欧美日韩精品三区| 国产精品一区二区三区四区| 午夜一区二区三区视频| 中文一区二区在线观看| 欧美变态tickling挠脚心| 欧美最新大片在线看| 国产精品18久久久久久久网站| 性做久久久久久| 一区在线中文字幕| 中文无字幕一区二区三区| 精品日韩在线观看| 正在播放亚洲一区| 欧美日韩国产一级片| 91视频.com| aa级大片欧美| 九九热在线视频观看这里只有精品 | 亚洲卡通动漫在线| 欧美国产一区二区| 精品国内片67194| 日韩一二三四区| 在线播放中文字幕一区| 欧美日韩久久一区| 欧美性一二三区| 精品视频一区二区三区免费| 欧洲精品在线观看| 欧美日韩在线精品一区二区三区激情| www.日本不卡| 99精品久久只有精品| 国产99久久久国产精品| 亚洲午夜久久久| 一区二区三区日韩精品| 亚洲最新在线观看| 婷婷综合五月天| 日韩影院在线观看| 免费观看一级特黄欧美大片| 免费成人美女在线观看.| 九九久久精品视频| 成人国产视频在线观看| www.在线欧美| 欧美天堂一区二区三区| 欧美亚洲国产一区在线观看网站| 91社区在线播放| 91麻豆6部合集magnet| 成人av高清在线| 一本大道久久a久久精二百| 日本二三区不卡| 欧美精品第1页| 久久久久久黄色| 国产精品久久久久一区二区三区共| 综合在线观看色| 日本中文字幕不卡| 国产精品白丝av| 大美女一区二区三区| 99国产精品99久久久久久| 在线日韩一区二区| 日韩欧美的一区| 亚洲欧洲av一区二区三区久久| 亚洲欧美视频在线观看| 日日夜夜精品视频免费| 韩日精品视频一区| 91黄色免费看| 日韩精品最新网址| 亚洲视频精选在线| 麻豆成人91精品二区三区| 久久99精品久久久久久| 91网页版在线| 日韩片之四级片| 亚洲欧洲精品天堂一级| 青青草一区二区三区| 成人午夜碰碰视频| 69p69国产精品| 中文字幕一区二区三区四区不卡| 亚洲一区二区三区四区在线免费观看 | 色婷婷久久一区二区三区麻豆| 欧美巨大另类极品videosbest | 亚洲人成电影网站色mp4| 亚洲国产精品久久不卡毛片| 午夜免费久久看| 懂色av一区二区在线播放| 欧洲精品在线观看| 国产亚洲精品bt天堂精选| 亚洲自拍偷拍av| 国产精品自拍一区| 欧美视频第二页| 欧美激情一区二区三区不卡| 日一区二区三区| 色偷偷一区二区三区| 久久精品人人做人人爽人人| 亚洲一区二区三区爽爽爽爽爽| 国产在线国偷精品产拍免费yy| 91成人网在线| 国产精品毛片久久久久久久 | 国产永久精品大片wwwapp| 欧美艳星brazzers| 国产精品美女一区二区在线观看| 日韩成人精品视频| 欧美三级在线播放| 自拍av一区二区三区| www.欧美精品一二区| 国产成人精品aa毛片| 亚洲一区二区三区四区五区中文| 国产成人小视频| 亚洲精品在线网站| 日本伊人色综合网| 在线观看成人免费视频| 国产精品免费人成网站| 国产一区 二区| 日韩欧美卡一卡二| 一级日本不卡的影视| 成人h版在线观看| 国产精品久久久久久久久久久免费看| 国产乱码一区二区三区| 日韩欧美国产wwwww| 麻豆视频观看网址久久| 91精品久久久久久蜜臀| 日韩成人免费看| 欧美一级搡bbbb搡bbbb| 午夜免费欧美电影| 91精品国产黑色紧身裤美女| 亚洲一区二区视频| 欧美专区亚洲专区| 亚洲黄色免费网站| 91国偷自产一区二区三区观看 | 精品国产一区二区三区av性色 | 亚洲精品一区二区三区福利| 精品国产污污免费网站入口| 青青草国产精品亚洲专区无| 欧美一级专区免费大片| 日本va欧美va精品| 欧美日韩成人在线一区| av激情成人网| 亚洲欧美另类久久久精品| 国产一区二区三区四区五区美女| 精品日产卡一卡二卡麻豆| 午夜av一区二区| 精品欧美一区二区久久| 国产一区二区中文字幕| 日本一区免费视频| 91亚洲国产成人精品一区二区三| 亚洲色图欧洲色图| 欧美日韩不卡在线| 国产一区二区三区免费| 国产欧美日韩激情| 色美美综合视频| 香蕉加勒比综合久久| 精品国产一区二区精华| 精品制服美女丁香| 国产精品久久久久精k8| 在线观看三级视频欧美| 美日韩一区二区| 国产精品网友自拍| 4438亚洲最大| 高清成人在线观看|