任意多边形裁剪圆的实现思路
2015-05-25 19:41
393 查看
多边形裁剪圆的实现思路:
1.求出多边形与圆的交点,记录公共点(包括交点与切点)位置与数量
(1)求出多边形每一条边与圆的公共点位置与数量
(2)汇总多边形所有边与圆交点的位置与数量
2.根据多边形与圆的公共点数量对圆进行分类
(1)公共点个数为0的为“无公共点圆”
(2)公共点数量大于0的位“有公共点圆”
3.对“无公共点圆”进行裁剪
(1)从圆心出发,向左右水平方向取两个圆上的点
(2)判断所取的点是否在多边形内
(3)若所取的点在多边形内,则绘制整个圆
(4)若所取的点不在多边形内,则不绘制这个圆
注:有的论文认为判断“无公共点圆”的圆心与多边形边界的关系就够了,这是不正确的,圆心在边界内的圆的圆弧可以完全在边界外。
4.对“有公共点圆”进行裁剪
(1)对该“有公共点”圆与多边形的交点按逆时针方向排序
(2)对由该“有公共点”圆与多边形的交点在圆上所分割出的圆弧取圆弧中点
(3)判断圆弧中点与多边形的关系(在内、在外、在边界上)
(4)若圆弧中点在边界内,则该圆弧在多边形内,则绘制该圆弧
(5)若圆弧中点在边界外,则该圆弧在多边形外,则不绘制该圆弧
注:这里的圆弧中点不可能落在边界上,假设圆弧中点落在边界上,则该点理应在获取圆与多边形公共点的过程中被记录为公共点,就不可能在本次计算中作为圆弧中点了。
关于实现细节在下一篇文章
1.求出多边形与圆的交点,记录公共点(包括交点与切点)位置与数量
(1)求出多边形每一条边与圆的公共点位置与数量
(2)汇总多边形所有边与圆交点的位置与数量
2.根据多边形与圆的公共点数量对圆进行分类
(1)公共点个数为0的为“无公共点圆”
(2)公共点数量大于0的位“有公共点圆”
3.对“无公共点圆”进行裁剪
(1)从圆心出发,向左右水平方向取两个圆上的点
(2)判断所取的点是否在多边形内
(3)若所取的点在多边形内,则绘制整个圆
(4)若所取的点不在多边形内,则不绘制这个圆
注:有的论文认为判断“无公共点圆”的圆心与多边形边界的关系就够了,这是不正确的,圆心在边界内的圆的圆弧可以完全在边界外。
4.对“有公共点圆”进行裁剪
(1)对该“有公共点”圆与多边形的交点按逆时针方向排序
(2)对由该“有公共点”圆与多边形的交点在圆上所分割出的圆弧取圆弧中点
(3)判断圆弧中点与多边形的关系(在内、在外、在边界上)
(4)若圆弧中点在边界内,则该圆弧在多边形内,则绘制该圆弧
(5)若圆弧中点在边界外,则该圆弧在多边形外,则不绘制该圆弧
注:这里的圆弧中点不可能落在边界上,假设圆弧中点落在边界上,则该点理应在获取圆与多边形公共点的过程中被记录为公共点,就不可能在本次计算中作为圆弧中点了。
关于实现细节在下一篇文章
相关文章推荐
- 任意多边形切割/裁剪(附C#代码实现)
- android实现使用绘图作出一种裁剪任意多边形快速算法 (转自 cafelette)
- java 使用TexturePaint和Graphics2D可以实现多边形图片裁剪
- 直线的多边形裁剪及任意多边形互裁剪
- UIView实现任意角裁剪圆角
- unity实现任意多边形三角剖分
- C# 实现图片任意裁剪以及羽化功能
- 多边形裁剪圆的实现细节之求直线段与圆的交点
- 多边形裁剪圆的实现细节之求出一段圆弧的中点
- C# 实现 任意多边形切割折线算法
- 用开源项目cropper实现对图片中任意部分进行裁剪
- NGUI裁剪粒子的实现,完全仿照原有的NGUI SoftClip逻辑思路,可多层裁剪
- jquery实现图片裁剪思路及实现
- 判断一个点是否在多边形内部,射线法思路,C#实现
- AGG第五十课 任意多边形的裁剪
- hdoj2036 c语言实现(任意多边形的面积
- google map上实现通过点击地图任意点进行标记并形成多边形
- ArcEngine调用GP工具实现多边形Clip裁剪功能
- php+js实现裁剪任意形状图片
- jquery实现图片裁剪思路及实现