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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? mappolygon.cpp

?? windows mobile gis system
?? CPP
字號(hào):
#include "stdafx.h"
#include "global.h"
#include "MapPolygon.h"

IMPLEMENT_DYNAMIC(CMapPolygon,CObject)

CMapPolygon::CMapPolygon()
{


}

CMapPolygon::CMapPolygon(CMapPolygon& mappolygon )
{

   int i,iCount;
   CMapParts *pParts;
   
   iCount = m_Polygon.GetSize() - 1;
   for ( i = 0 ; i <= iCount ; i++ )
   { 
		pParts = new CMapParts(*mappolygon.GetParts(i));
		m_Polygon.Add(pParts); 	
   }
}

CMapPolygon::~CMapPolygon()
{

     Clear();
}

long CMapPolygon::GetCount()
{

	return m_Polygon.GetSize(); 
}

CMapRectangle CMapPolygon::GetExtent()
{

    return m_Extent;
}

void CMapPolygon::SetExtent(CMapRectangle& extent)
{
	m_Extent.SetLeft( extent.GetLeft());
	m_Extent.SetRight( extent.GetRight());
	m_Extent.SetTop(extent.GetTop());
    m_Extent.SetBottom(extent.GetBottom());
}

CMapParts* CMapPolygon::GetParts(long lIndex)
{

	int iCount;
    CMapParts  *pParts;

	iCount = m_Polygon.GetSize()-1;
	if ( lIndex < 0 || lIndex > iCount )
		return NULL;
    pParts = m_Polygon.GetAt(lIndex);
	return pParts;
}

double CMapPolygon::GetArea()
{

	return 0;
}

void CMapPolygon::Add(CMapParts* pParts)
{

    if ( pParts == NULL )
		return;
	m_Polygon.Add( pParts );

}

void CMapPolygon::Set(long lIndex , CMapParts* pParts)
{
	
	int iCount;
	CMapParts *pOldParts;

	if ( pParts == NULL )
		return;

	iCount = m_Polygon.GetSize()-1;
	if ( lIndex < 0 || lIndex > iCount )
		return ;
    pOldParts = m_Polygon.GetAt( lIndex );
    m_Polygon.SetAt(lIndex,pParts);
    delete pOldParts; 
}

void CMapPolygon::Remove(long lIndex)
{
	int iCount;
	CMapParts *pParts;
	
	iCount = m_Polygon.GetSize()-1;
	if ( lIndex < 0 || lIndex > iCount )
		return ;
	pParts = m_Polygon.GetAt( lIndex );  
    m_Polygon.RemoveAt(lIndex,1);   
	delete pParts; 
}

void CMapPolygon::Insert(long lIndex , CMapParts* pParts)
{
	int iCount;
	
	iCount = m_Polygon.GetSize()-1;
	if ( lIndex < 0 || lIndex > iCount )
		return ;
	m_Polygon.InsertAt(lIndex,pParts);
}

void CMapPolygon::Clear()
{

   int i,iCount;
   CMapParts *pParts;
   
   iCount = m_Polygon.GetSize() - 1;
   for ( i = iCount ; i >= 0   ; i-- )
   {
		pParts = m_Polygon.GetAt(i);
		delete pParts;
   } 
   m_Polygon.RemoveAll(); 
}

/*************************************************
  描述:         判斷點(diǎn)是否在多邊形內(nèi) 
  輸入:         點(diǎn)對(duì)象
  輸出:        在返回TRUE 不在返回FALSE
*************************************************/
BOOL CMapPolygon::IsPointIn(CMapPoint& pt )
{
    int i,j,k,iNumber;
	double dblTemp;
	CMapParts*  pParts;
	CMapPoints* pPoints;
	CMapPoint  *ptFirst,*ptSecond;
	CMapPoint	ptInfint;
	
	iNumber = 0;
	//不在矩形范圍內(nèi)直接返回 
	if ( !m_Extent.IsPointIn(pt) ) 
		  return FALSE;
	//做一條通過(guò)pt點(diǎn)的射線
	dblTemp = pt.GetY();
	ptInfint.SetY( dblTemp );
	dblTemp = infinity;
	ptInfint.SetX(dblTemp);
	//獲得復(fù)合多邊形的每一個(gè)多邊形
	for ( i = 0 ; i < m_Polygon.GetSize() ; i++ )
    {
		pParts = (CMapParts*)m_Polygon.GetAt(i); 
		//獲得一個(gè)多邊形的點(diǎn)集合
		for ( j = 0 ; j < pParts->GetCount() ; j++ )
		{	
			pPoints = (CMapPoints*)pParts->Get(j);
			//獲得每個(gè)點(diǎn)集合的頂點(diǎn)坐標(biāo)
			for ( k = 0 ; k < pPoints->GetCount() - 1 ; k++ )
			{
				ptFirst  = (CMapPoint*)pPoints->Get(k);
				ptSecond = (CMapPoint*)pPoints->Get(k+1);
				if (pt.IsPointInLine(*ptFirst,*ptSecond) )
					return TRUE; //該點(diǎn)在多邊形邊上
                if ( ptSecond->GetY() == ptFirst->GetY() )
					continue;  //略過(guò)水平邊
				
				if ( ptFirst->IsPointInLine(  pt , ptInfint ))
				{
					//邊與射線相交于邊第一個(gè)頂點(diǎn)
					if ( ptFirst->GetY() > ptSecond->GetY() )
						iNumber++;	
				}
				else if( ptSecond->IsPointInLine( pt , ptInfint ))
				{
					//邊與射線相交于邊的第二個(gè)頂點(diǎn)
					if ( ptFirst->GetY() > ptSecond->GetY() )
					    iNumber++;	
	
				} //判斷是否有公共交點(diǎn)
				else if ( isIntersect(pt,ptInfint,*ptFirst,*ptSecond) )
						iNumber++ ; 
			} 
		} 
		
	} 
	if ( iNumber % 2 )
		return TRUE;
    else
	    return FALSE;
}

/*****************************************************************************
  描述:  判斷兩條直線是否相交 且交點(diǎn)不是頂點(diǎn)
  參數(shù): p1 --- 線段起點(diǎn) p2 ---線段終點(diǎn)  p3 --- 線段起點(diǎn) p4 --- 線段終點(diǎn)
  返回值  在直線上 返回TRUE 否則返回FALSE
******************************************************************************/

BOOL CMapPolygon::isIntersect(CMapPoint& p1 , CMapPoint& p2 , CMapPoint& p3 , CMapPoint& p4 )
{
	double dblMulti,dblTmp1,dblTmp2;
	//頂點(diǎn)相交
	if ( p1.IsEqual(p3) || p1.IsEqual(p4) || p2.IsEqual(p3) || p2.IsEqual(p4) )
		return FALSE;
    //判斷兩條線段外接矩形是否相交
	if ( min(p1.GetX(),p2.GetX()) > max(p3.GetX(),p4.GetX()) || max(p1.GetX(),p2.GetX())
		< min(p3.GetX(),p4.GetX()) || min(p1.GetY(),p2.GetY()) > max(p3.GetY(),p4.GetY())
		|| max(p1.GetY(),p2.GetY()) < min(p3.GetY(),p4.GetY()))
		return FALSE;
    //計(jì)算叉積  
	dblTmp1 = (double)((p1.GetX() - p3.GetX())*(p4.GetY()-p3.GetY()) - (p4.GetX()-p3.GetX())*(p1.GetY() - p3.GetY()));
	dblTmp2 = (double)((p4.GetX() -p3.GetX())*(p2.GetY() - p3.GetY()) - (p2.GetX()-p3.GetX())*(p4.GetY()-p3.GetY()));        ;
	dblMulti = dblTmp1 * dblTmp2;
	
	if ( dblMulti >= 0 )
		return TRUE;
	else
		return FALSE;

}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美高清视频在线高清观看mv色露露十八| 日韩你懂的在线播放| 日本成人在线不卡视频| 国产日韩高清在线| 欧美一区二区三区公司| 91免费版pro下载短视频| 国产一区二区三区高清播放| 亚洲成av人片在www色猫咪| 中文欧美字幕免费| 精品国产人成亚洲区| 欧美日韩在线三区| 99久久久久久| 国产成人亚洲综合a∨猫咪| 日日嗨av一区二区三区四区| 自拍偷拍亚洲综合| 欧美激情综合五月色丁香小说| 日韩一级高清毛片| 欧美日韩国产综合一区二区| 色成人在线视频| heyzo一本久久综合| 韩国一区二区三区| 捆绑紧缚一区二区三区视频 | 一区二区久久久久| 欧美国产日韩一二三区| www一区二区| 欧美一区二区不卡视频| 欧美天堂亚洲电影院在线播放 | 精品久久久久久久人人人人传媒 | 国产麻豆91精品| 蜜桃一区二区三区四区| 五月天精品一区二区三区| 亚洲精品日韩综合观看成人91| 中文成人综合网| 国产精品福利影院| 中文字幕免费在线观看视频一区| 国产日韩精品一区| 国产精品亲子伦对白| 国产精品日日摸夜夜摸av| 亚洲国产精品ⅴa在线观看| 久久精品视频一区二区| 久久久国产午夜精品| 国产网站一区二区| ㊣最新国产の精品bt伙计久久| 国产精品免费看片| 亚洲视频网在线直播| 亚洲综合另类小说| 亚洲 欧美综合在线网络| 日韩精品一区第一页| 免费观看91视频大全| 蜜桃一区二区三区在线观看| 国产综合色视频| 高清不卡在线观看av| 99re热这里只有精品视频| 一道本成人在线| 欧美日韩国产美| 日韩欧美在线网站| 久久久久久99久久久精品网站| 国产精品免费视频网站| 一个色妞综合视频在线观看| 午夜欧美2019年伦理| 卡一卡二国产精品 | 91浏览器打开| 欧美精品久久99| 久久精品人人做人人爽97| 日韩一区有码在线| 日韩福利视频导航| 国产精品77777| 色综合一个色综合亚洲| 欧美一区二区三区在线观看 | 国精产品一区一区三区mba视频| 国产福利电影一区二区三区| 99re免费视频精品全部| 欧美精品三级在线观看| 欧美精品一区男女天堂| 国产精品女同一区二区三区| 亚洲精品乱码久久久久| 久久精品国产精品亚洲精品| www.日韩精品| 91精品国产一区二区三区| 国产日本一区二区| 亚洲第一福利一区| 国产电影精品久久禁18| 欧美午夜精品久久久久久超碰| 日韩免费观看高清完整版| 亚洲欧洲综合另类| 国产乱国产乱300精品| 在线观看成人小视频| 久久九九全国免费| 婷婷国产v国产偷v亚洲高清| 国产福利91精品| 欧美剧在线免费观看网站| 中文字幕国产一区二区| 天天综合网天天综合色| 成人性生交大片免费看中文网站| 91麻豆精品国产91久久久久 | 成人免费在线视频观看| 日本vs亚洲vs韩国一区三区二区| 99精品视频一区二区三区| 精品国精品自拍自在线| 亚洲一区二区精品久久av| 国产成人99久久亚洲综合精品| 在线电影一区二区三区| 亚洲靠逼com| 成人免费视频app| 久久中文娱乐网| 日本欧美久久久久免费播放网| 色综合天天天天做夜夜夜夜做| 久久嫩草精品久久久精品| 日韩中文字幕区一区有砖一区| 99国产精品一区| 国产精品嫩草影院av蜜臀| 国产一区二区三区| 91精品国产综合久久久蜜臀粉嫩 | 欧美日韩亚洲综合一区二区三区| 国产女主播视频一区二区| 激情综合网激情| 7777精品久久久大香线蕉| 一级日本不卡的影视| 一本久久精品一区二区| 国产清纯在线一区二区www| 精品一区中文字幕| 日韩一区二区三区精品视频| 丝瓜av网站精品一区二区| 欧美日韩视频在线第一区| 一区二区三区日韩在线观看| a4yy欧美一区二区三区| 国产精品麻豆久久久| 成人激情文学综合网| 久久久亚洲高清| 国产精品996| 欧美国产1区2区| 成人激情综合网站| 亚洲视频狠狠干| 在线观看免费亚洲| 亚洲成av人片一区二区梦乃| 欧美天天综合网| 日本在线观看不卡视频| 欧美一二三区在线| 韩国欧美国产1区| 国产亚洲一区二区在线观看| 国产成人午夜视频| 国产精品免费视频网站| 91丝袜美女网| 亚洲成人动漫在线免费观看| 欧美电影一区二区三区| 久久精品国内一区二区三区| 久久看人人爽人人| 成人一区二区三区视频在线观看| 国产午夜精品一区二区| 99精品视频在线观看| 亚洲国产美国国产综合一区二区| 欧美日韩国产综合一区二区三区| 日韩二区三区四区| 久久嫩草精品久久久久| av在线综合网| 午夜精品久久久| 26uuu国产日韩综合| 成人av动漫在线| 性做久久久久久免费观看| 欧美一区二区三区在线看| 国产激情一区二区三区| 亚洲免费成人av| 欧美日高清视频| 国产九色sp调教91| 亚洲视频你懂的| 日韩欧美资源站| 99久久99久久精品国产片果冻 | 亚洲一二三四区| 精品播放一区二区| 欧美精品在线一区二区三区| 卡一卡二国产精品| 亚洲欧洲av在线| 91麻豆精品国产| 成人激情午夜影院| 日韩电影在线观看网站| 国产精品婷婷午夜在线观看| 欧美性大战久久久| 国内成人精品2018免费看| 亚洲理论在线观看| 久久亚洲二区三区| 在线视频亚洲一区| 国产伦精一区二区三区| 一个色综合网站| 26uuu久久综合| 欧美视频中文字幕| 成人综合日日夜夜| 青青草97国产精品免费观看| 国产欧美精品国产国产专区| 欧美美女一区二区在线观看| 国产成人在线免费观看| 爽好多水快深点欧美视频| 欧美激情综合在线| 欧美一区日本一区韩国一区| 成av人片一区二区| 国产在线不卡视频| 午夜精品在线视频一区| 亚洲欧洲国产日韩| 精品久久久久av影院| 欧美日韩色一区| 91视频免费观看|