GraphicsPath Polygon Fitting in C#
我需要将任意形状的GraphicsPath“拟合”到定义的空间(几乎总是一个矩形或圆形)。
我目前使用Matrix对象缩放GraphicsPath并且缩放工作正常,但问题是获得缩放因子。
我能想到的最好的技术是将GraphicsPath转换为Region,将Rectangle或Circle转换为Region,然后执行:
rgnShape.Intersect(rgnCircle);
然后检查是否:
rgnShape.IsEmpty()
然而,这只是告诉我,如果形状太大而不适合,并且有必要缩小形状,并再试一次(可能很多次)。
有没有一种简单的方法可以立即计算缩放因子以适合多边形GraphicsPath,使其完全适合圆形。结果应该是仍然完全适合圆圈的最大多边形。
没有找到相关结果
已邀请:
5 个回复
混侩闯空坷
来检查它是否有效。如果失败,则取每条曲线并抓住距离您找到的圆心最远的点(对于任何给定区域,可能有多个这样的点)。 将它们添加到您的点列表中重新应用算法。你不需要从头开始;您不需要考虑不在边界上的点(即,忽略原始调用算法找不到的“Set Q”中的点)。 请注意,这不再是线性的,因为生成递归调用的概率不再是第i个点的1 / i。 这有一个必须明确处理的边缘条件。如果在步骤1的第一次迭代期间发现的区域之外找到的曲线之一是完全圆形并且接触外圆,则在“设置Q”内将存在无限点,并且该算法将失败地失败。所以,在第一次应用
之后,你应该明确地检查任何完美的圆形曲线。例如,如果你的形状是
,你应该明确地检查
(为了讨论的目的,假装
是一个圆圈),如果
位于第一次迭代中找到的区域之外。 这仍然很糟糕,但它比将每条曲线变成点更好。
瞧叮
和
。 取较小的比例,并将其用作比例因子来缩放您的形状。 如果目标是圆形而不是矩形,则可以通过采用
的比率使用类似的解决方案,并将其用作缩放系数。
磁辫覆氓
苛肠倒俱
坛沤疲撑拆