计算机图形学 |
您所在的位置:网站首页 › 填充算法包括了 › 计算机图形学 |
浏览 720
扫码
分享
2023-11-18 12:32:27
1.逐点法2.有序边表法3.种子填充算法 本文主要分析并实现了三种常见的多边形填充算法:逐点法、有序边表法和种子填充算法 1.逐点法在逐点法实现中,用到了两个函数。 其中的实现原理十分简单,不过PointInPolygon(int pointNumOfPolygon, CPoint tarPolygon[], CPoint testPoint)函数的实现比较复杂,但这个函数也十分实用,在后面的三角剖分中也有使用。 算法描述: (1)将给定多边形输入; (2)求出多边形的最小包含矩形; (3)逐点扫描最小矩形的每一点,并判断是否位于多边形内部,从最小点到最大点一次判断,如果在该多边形内部,则将该点上色; (4)判断位于多边形内部的方法是,过每一点水平向右作射线,与多边形边界求交点,如果交点个数为奇数,则说明该点在多边形内部,偶数则说明在多边形外部。 效果如下: 实现代码: //逐点法填充void PointFillpoly(int pNumbers, CPoint *points, CDC *pDC){ BoxRect_t polyRect; polyRect = getPolygonRect(pNumbers, points); m_pDC->MoveTo(polyRect.minX, polyRect.minY); m_pDC->LineTo(polyRect.minX, polyRect.maxY); m_pDC->LineTo(polyRect.maxX, polyRect.maxY); m_pDC->LineTo(polyRect.maxX, polyRect.minY); m_pDC->LineTo(polyRect.minX, polyRect.minY); CPoint testPoint; //从最小点到最大点一次判断,如果在该多边形内部,则进行填充 for (testPoint.x = polyRect.minX; testPoint.x |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |