在“蜘蛛网”内获取矩形?
想象一下,围绕一个中心的给定增加半径的圆,由给定旋转的线交叉 - 我如何能够在一个网格位置内绘制一个近似的4边框矩形,如图所示在图像中的一个点位置?在“蜘蛛网”内获取矩形?
详细信息:我使用Lua的移动应用中。左上角坐标为0,0,所以中心为maxX/2,maxY/2;我正在使用变量rotationStep和radiusStep来创建网络。
* 6点或更多点的多边形可能看起来更好。
谢谢!
找出圆心与指定点之间的夹角。然后找到两条与它关闭角度的线,它将在这两条线之间。
计算你的点距离圆心的距离。
沿着你的线(D)绘制相同的距离,除以圆之间的距离。你会以这种方式得到所有4分。
首先计算形状的四个角。
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.希望这是有道理的。
这里的想法就像在一个规则的网格。
- 一个起始点
- 一个指向 “正确的”(在规则网格X + 1,rotationStep + 1这里)
- 一个点“DOWN2(Y + 1在一个规则的网格,radiusStep +1这里)
- 然后一个点右和下来。
现在只画与点之间的四行瞧!
大多数图形软件包也有一个DrawArc
排序方法。这可以用来绘制出性能非常高的两个圆弧,同时使它看起来更漂亮!
非常感谢,这看起来非常好,我会试一试! – 2012-04-08 19:32:12
那么我已经有2行了,我有两个圆圈,现在我怎么得到4个矩形点?也许在伪代码?谢谢! – 2012-04-06 15:21:18
当你说你有他们时,你的意思是什么?你有没有找到使你感兴趣的领域的2线和2个圈子? – 2012-04-06 16:07:23
Mk,是的,我有这个,但我仍然不太确定如何绘制矩形(或6 +点折线)。我通过将点位置除以radiusStep得到的圆圈,通过'math.ceil(math.ceil((math.atan((app.center.y - point.y)/(app.center.x - point.x))* 180)/ math.pi)/ app.rotationStep)' – 2012-04-07 10:23:43