• 大小: 7.58MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-24
  • 语言: 其他
  • 标签: y-x算法  

资源简介

改进的有效边表算法(y-x算法)。可实现opengl环境下的多点间空白填充。

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
std::ifstream cin (“polypoints.txt“);
using std::vector;
using std::endl;
typedef struct _EdgeItem
{
    float   x;
    int     yMax;
    float   reverseK;                  
    _EdgeItem * next;
}EdgeItem;
vector g_pItemVector;
typedef struct _Point
{
    int x;
    int y;
}Point;
 
typedef struct _EdgePtr
{
    int     nScanLine;                 
    EdgeItem * pItem;                   
}EdgePtr;
 
typedef struct _PolyPoints
{
    Point * pPoint;                    
    int     n;                          
    int     yMax;                      
    int     yMin;                       
}PolyPoints;
 
EdgePtr * g_pEdgeList;                  
EdgePtr * g_pActiveEdgeList;                
PolyPoints g_polyPoints;                
 
void inputPoints (void)
{
    int n;
    cin>>n;
    if (n < 3)
    {
        std::cout<<“number of points can not be less than 3“<        exit (0);
    }
    g_polyPoints.n = n;
    g_polyPoints.pPoint = new Point[n];
    g_polyPoints.yMax = INT_MIN;
    g_polyPoints.yMin = INT_MAX;
    int x y;
    for (int i = 0; i < n; ++i)
    {
        cin>>x>>y;
        g_polyPoints.pPoint[i].x = x;
        g_polyPoints.pPoint[i].y = y;
        if (g_polyPoints.yMax < y)
        {
            g_polyPoints.yMax = y;
        }
        if (g_polyPoints.yMin > y)
        {
            g_polyPoints.yMin = y;
        }
    }
 
 
}

float calculateReverseK (const Point & p1 const Point & p2)
{
    return (float)(p2.x - p1.x) / (float)(p2.y - p1.y);
}
 

void sortOneScanLineEdgeList (EdgePtr & edgePtr)
{
    EdgeItem * pEdgeItem = edgePtr.pItem;
    EdgeItem * pNext;
    EdgeItem * pTmp;
    while (pEdgeItem)
    {
        pNext = pEdgeItem->next;
        pTmp = pEdgeItem;
        while (pNext)
        {
            if (pNext->x < pTmp->x)
            {
                pTmp = pNext;
            }
            pNext = pNext->next;
        }
        if (pTmp != pEdgeItem)
        {

            float fTmp = pTmp->x;
            pTmp->x = pEdgeItem->x;
            pEdgeItem->x = fTmp;

             
            int iTmp = pTmp->yMax;
            pTmp->yMax = pEdgeItem->yMax;
            pEdgeItem->yMax = iTmp;

            float kTmp = pTmp->reverseK;
            pTmp->reverseK = pEdgeItem->reverseK;
            pEdgeItem->reverseK = kTmp;
        }
        pEdgeItem = pEdgeItem->next;
    }

    pEdgeItem = edgePtr.pItem;
    EdgeItem * pStart = NULL;
    EdgeItem * pEnd = NULL;
    while (pEdgeItem)
    {

        pEnd = pStart = pEdgeItem;
        pNext = pStart->next;
        while (pNext && (pNext->x == pStart->x))
        {
            pEnd = pNext;
            pNext = pNext->next;
        }

        while (pStart != pEnd)
        {
            pTmp = pStart;
            pNext = pTmp->next;
            while (pN

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

     文件     112128  2013-11-05 21:18  改进的有效边表算法\Debug\改进的有效边表算法.exe

     文件     667788  2013-11-05 21:18  改进的有效边表算法\Debug\改进的有效边表算法.ilk

     文件    1084416  2013-11-05 21:18  改进的有效边表算法\Debug\改进的有效边表算法.pdb

     文件        650  2013-11-05 21:18  改进的有效边表算法\改进的有效边表算法\Debug\cl.command.1.tlog

     文件       7068  2013-11-05 21:18  改进的有效边表算法\改进的有效边表算法\Debug\CL.read.1.tlog

     文件        392  2013-11-05 21:18  改进的有效边表算法\改进的有效边表算法\Debug\CL.write.1.tlog

     文件          2  2013-11-05 21:18  改进的有效边表算法\改进的有效边表算法\Debug\link-cvtres.read.1.tlog

     文件          2  2013-11-05 21:18  改进的有效边表算法\改进的有效边表算法\Debug\link-cvtres.write.1.tlog

     文件          2  2013-11-05 21:18  改进的有效边表算法\改进的有效边表算法\Debug\link-rc.read.1.tlog

     文件          2  2013-11-05 21:18  改进的有效边表算法\改进的有效边表算法\Debug\link-rc.write.1.tlog

     文件       1194  2013-11-05 21:18  改进的有效边表算法\改进的有效边表算法\Debug\link.command.1.tlog

     文件       2790  2013-11-05 21:18  改进的有效边表算法\改进的有效边表算法\Debug\link.read.1.tlog

     文件        498  2013-11-05 21:18  改进的有效边表算法\改进的有效边表算法\Debug\link.write.1.tlog

     文件     334140  2013-11-05 21:18  改进的有效边表算法\改进的有效边表算法\Debug\Source.obj

     文件     265216  2013-11-05 21:18  改进的有效边表算法\改进的有效边表算法\Debug\vc110.idb

     文件     364544  2013-11-05 21:18  改进的有效边表算法\改进的有效边表算法\Debug\vc110.pdb

     文件        106  2013-11-05 21:18  改进的有效边表算法\改进的有效边表算法\Debug\改进的有效边表算法.lastbuildstate

     文件       1691  2013-11-05 21:18  改进的有效边表算法\改进的有效边表算法\Debug\改进的有效边表算法.log

     文件         54  2013-11-05 21:14  改进的有效边表算法\改进的有效边表算法\polypoints.txt

     文件      10955  2013-11-05 21:18  改进的有效边表算法\改进的有效边表算法\Source.cpp

     文件       4029  2013-11-05 20:59  改进的有效边表算法\改进的有效边表算法\改进的有效边表算法.vcxproj

     文件        955  2013-11-05 20:59  改进的有效边表算法\改进的有效边表算法\改进的有效边表算法.vcxproj.filters

     文件   36110336  2013-11-05 23:16  改进的有效边表算法\改进的有效边表算法.sdf

     文件        948  2013-11-05 20:58  改进的有效边表算法\改进的有效边表算法.sln

    ..A..H.     19968  2013-11-05 23:16  改进的有效边表算法\改进的有效边表算法.v11.suo

     目录          0  2013-11-05 21:18  改进的有效边表算法\改进的有效边表算法\Debug

     目录          0  2013-11-05 21:16  改进的有效边表算法\Debug

     目录          0  2013-11-05 21:10  改进的有效边表算法\改进的有效边表算法

     目录          0  2013-11-05 23:16  改进的有效边表算法

----------- ---------  ---------- -----  ----

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

评论

共有 条评论

相关资源