我有一个alpha通道的位图,显示不规则的形状。我尝试缩放并移动形状以适合给定半径的圆。任何想法如何以有效的方式做到这一点?这必须在运行时计算。
精度可以是1..2像素,更重要的是不要切掉形状。我想这可以通过逐步调整偏移和比例值,绘制和检查碰撞来完成,但这听起来很昂贵。
涉及Swift / iOS的解决方案非常受欢迎......
答案 0 :(得分:2)
作为第一步,扫描图像以找到所有前景像素,并计算它们的凸包(使用monotone chain方法,采用线性时间O(N),因为您可以按排序顺序检测点)。这将大大减少要考虑的点数。
然后你可以找到smallest enclosing circle,它可以用线性时间O(H)构建。
查找Nayuki's Smallest Enclosing Circle以了解随机算法的干净实现。
答案 1 :(得分:0)
你只需要将图像的周围矩形(我想图像尺寸被剪切为仅将图像包围没有任何白色边框)放入圆圈中。如你所知圆的半径(我希望),图像的比例因子应为
scaleFactor = (circle diameter) / (longest diagonal of image)
然后将缩放的图像居中放在圆圈上并完成。