我希望沿着光栅化圆弧迭代像素,给定其半径,以弧度为单位的起点和终点角度,例如:
template<typename Functor>
void arc(float startRadians, float endRadians, int radius, Functor f);
用作:
arc(0.f, M_PI, 10, [](int x, int y) {
std::cout << "got: " << x << " " << y << "\n";
});
有一些捕获:
radius
也是一个整数radius
的弧与半径为radius-1
在下图中:
radius
,radius-1
之间的扇区限制。我认为Bresenham's circle algorithm并不直接适用于这个问题,因为角度约束和访问顺序。
在stackoverflow中,我认为这是最密切相关的问题:
最后,OpenCV在精神上有类似/相关的东西,但仅限于行:
答案 0 :(得分:0)
它将x,y坐标系中的图像映射到极地。得到的图像是行 - &gt;角度和列 - &gt;半径。那时你的光栅就是循环行列顺序没有特殊的功能光栅。
这意味着每一行都是dtheta = 2*Pi/(rowNum)
因此你的弧就会
是startAngle = angle1/dtheta
,同样是endAngle = angle2/dtheta
。
类似地,您的半径计算drad = maxRad/(columnNum)
。
所以要从极地图像中获取弧线:
for(int i = maxRad; i > 0; i--) // start at longest radius spiral in
{
for(int j = startAngle; j < endAngle;j++) angle
{
// do action on polarImage[i,j];
}
}