想象一下围绕中心的给定增量半径的圆,由给定旋转的线交叉 - 我如何能够在其中一个网格位置内绘制一个近似的4边框矩形*,如图所示,基于图像中的点位置?
详细信息:我正在使用Lua作为移动应用。左上角坐标为0,0,因此中心为maxX / 2,maxY / 2;我正在使用变量rotationStep和radiusStep来创建网络。
* 6点或更多点的多边形可能看起来更好。
谢谢!
答案 0 :(得分:1)
首先计算形状的四个角。
x1 = cx + radialScale*radiusStep*cos(rotationScale * rotationStep)
y1 = cy + radialScale*radiusStep*sin(rotationScale * rotationStep)
x2 = cx + radialScale*(radiusStep+1)*cos(rotationScale * rotationStep)
y2 = cy + radialScale*(radiusStep+1)*sin(rotationScale * rotationStep)
x3 = cx + radialScale*radiusStep*cos(rotationScale*(rotationStep+1))
y3 = cy + radialScale*radiusStep*sin(rotationScale*(rotationStep+1))
x4 = cx + radialScale*(radiusStep+1)*cos(rotationScale*(rotationStep+1))
y4 = cy + radialScale*(radiusStep+1)*sin(rotationScale*(rotationStep+1))
其中(cx,cy)是中心点 - 在你的情况下(maxX / 2,maxY / 2)。
常量rotationScale和radialScale只是将步骤向上扩展到整个范围。例如,如果您有n个扇区,则rotationScale为2PI / n。如果你有m个“波段”,则radialScale是R / m,网中最外面的圆圈是半径R.希望这是有意义的。
这里的想法就像在常规网格中一样。
现在只需绘制两点之间的四条线即可!
大多数图形包也有DrawArc
种方法。这可以用来绘制具有非常高性能的两个圆弧,同时使它看起来更漂亮!
答案 1 :(得分:0)
计算圆心和指定点之间的角度。然后找到与它关闭角度的2条线,它们将在这两条线之间。
计算点与圆心的距离。
沿着线(D)绘制相同的距离,除以圆之间的距离。你会以这种方式获得全部4分。