分治法计算Voronoi图


分治法计算Voronoi图
资源截图
代码片段和文件信息
#include “StdAfx.h“
#include “iostream“
#include “stdio.h“
#include “conio.h“
#include “malloc.h“
#include “ConvexHull.h“


//struct edge;
//struct site;
//struct vertex;
//struct face ;




//判断(x3y3)是不是在(x1y1)(x2y2)连线的左边.以(x1y1)为出发点.
int ToLeft(double x1  double y1 double x2 double y2 double x3 double y3)
{
/*
 (
a.x * b.y - a.y * b.x
+ b.x * c.y - b.y * c.x
+ c.x * a.y - c.y * a.x);
 */
double itemp =    x1 * y2 - y1 * x2 
+  x2 * y3 - y2 * x3
+  x3 * y1 - y3 * x1;
return itemp <= 0 ;
}




convex::convex()
{
m_pFirstPoint = NULL;
m_iCount = 0;
m_pLeftMostPoint = NULL;
m_pRightMostPoint = NULL;

}

convex::convex( int iCount)
{
//为点分配空间
m_pFirstPoint = (point_chain *)malloc(iCount * sizeof(point_chain));
m_iCount = 0;
//初始化最右边和最左边的点为空
m_pLeftMostPoint = NULL;
m_pRightMostPoint = NULL;
}

//用三个点构造一个凸包
convex::convex( site * pFirstSite    site * pSecondSite   site * pThirdSite)
{
//生成三个元素
point_chain * pFirstChain  = new point_chain;
point_chain * pSecondChain = new point_chain;
point_chain * pThirdChain  = new point_chain;

//  site * pLeftSite ;
//  site * pMidSite  ;
//  site * pRightSite;

pFirstChain->pSite  = pFirstSite;
pSecondChain->pSite = pSecondSite;
pThirdChain->pSite  = pThirdSite;


if (ToLeft(pFirstSite->xpFirstSite->ypSecondSite->xpSecondSite->ypThirdSite->xpThirdSite->y) > 0)
{
pThirdChain->next = pSecondChain;
pSecondChain->next = pFirstChain;
pFirstChain->next = pThirdChain;


pFirstChain->previous  = pSecondChain;
pSecondChain->previous  = pThirdChain;
pThirdChain->previous  = pFirstChain;
}
else
{
pThirdChain->next = pFirstChain;
pSecondChain->next = pThirdChain;
pFirstChain->next = pSecondChain;


pFirstChain->previous  = pThirdChain;
pSecondChain->previous  = pFirstChain;
pThirdChain->previous  = pSecondChain;
}



if (pFirstSite->x < pSecondSite->x ||( pFirstSite->x == pSecondSite->x && pFirstSite->y < pSecondSite->y))
{
m_pLeftMostPoint = pFirstChain;
}
else
{
m_pLeftMostPoint = pSecondChain;
}

if (m_pLeftMostPoint->pSite->x > pThirdSite->x || (m_pLeftMostPoint->pSite->x == pThirdSite->x) && m_pLeftMostPoint->pSite->y > pThirdSite->y)
{
m_pLeftMostPoint = pThirdChain;
}



//最右边
if (pFirstSite->x > pSecondSite->x ||( pFirstSite->x == pSecondSite->x && pFirstSite->y > pSecondSite->y))
{
m_pRightMostPoint = pFirstChain;
}
else
{
m_pRightMostPoint = pSecondChain;
}

if (m_pRightMostPoint->pSite->x < pThirdSite->x || (m_pRightMostPoint->pSite->x == pThirdSite->x) && m_pRightMostPoint->pSite->y < pThirdSite->y)
{
m_pRightMostPoint = pThirdChain;
}

m_pFirstPoint = pFirstChain;
m_iCount = 3;//三个元素
}

//用两个点构造一个凸包
convex::convex( site * pFirstSite   site * pSecondSite)
{
point_chain * pFirstChain = new point_chain;
point_chain * pSecondChain = new point_chain;

if(

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      12570  2016-07-11 21:04  VoronoiDACConvexHull.cpp

     文件       1450  2007-01-04 00:58  VoronoiDACConvexHull.h

     文件       8284  2016-07-11 21:04  VoronoiDACDebugBuildLog.htm

     文件      39755  2016-07-11 21:04  VoronoiDACDebugConvexHull.obj

     文件          0  2016-07-11 21:04  VoronoiDACDebugConvexHull.sbr

     文件      18640  2016-07-11 21:02  VoronoiDACDebuginputdlg.obj

     文件          0  2016-07-11 21:02  VoronoiDACDebuginputdlg.sbr

     文件      36108  2016-07-11 21:02  VoronoiDACDebugMainFrm.obj

     文件          0  2016-07-11 21:02  VoronoiDACDebugMainFrm.sbr

     文件         67  2016-07-11 21:04  VoronoiDACDebugmt.dep

     文件      38698  2016-07-11 21:02  VoronoiDACDebugShape.obj

     文件          0  2016-07-11 21:02  VoronoiDACDebugShape.sbr

     文件     465407  2016-07-11 21:02  VoronoiDACDebugStdAfx.obj

     文件    3356663  2016-07-11 21:02  VoronoiDACDebugStdAfx.sbr

     文件     535552  2016-07-11 21:04  VoronoiDACDebugvc90.idb

     文件    2158592  2016-07-11 21:04  VoronoiDACDebugvc90.pdb

     文件     133781  2016-07-11 21:02  VoronoiDACDebugVoronoi.obj

     文件          0  2016-07-11 21:02  VoronoiDACDebugVoronoi.sbr

     文件    7728128  2016-07-11 21:04  VoronoiDACDebugVoronoiDAC.bsc

     文件     149504  2016-07-11 21:04  VoronoiDACDebugVoronoiDAC.exe

     文件        861  2016-07-11 21:04  VoronoiDACDebugVoronoiDAC.exe.intermediate.manifest

     文件      36781  2016-07-11 21:02  VoronoiDACDebugVoronoiDAC.obj

     文件   28508160  2016-07-11 21:02  VoronoiDACDebugVoronoiDAC.pch

     文件    3697664  2016-07-11 21:04  VoronoiDACDebugVoronoiDAC.pdb

     文件       8392  2016-07-11 21:04  VoronoiDACDebugVoronoiDAC.res

     文件          0  2016-07-11 21:02  VoronoiDACDebugVoronoiDAC.sbr

     文件      79144  2016-07-11 21:03  VoronoiDACDebugVoronoiDACDoc.obj

     文件          0  2016-07-11 21:03  VoronoiDACDebugVoronoiDACDoc.sbr

     文件     111782  2016-07-11 21:02  VoronoiDACDebugVoronoiDACView.obj

     文件          0  2016-07-11 21:02  VoronoiDACDebugVoronoiDACView.sbr

............此处省略54个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)