Geometry 获取“内的矩形”;蜘蛛网;?

Geometry 获取“内的矩形”;蜘蛛网;?,geometry,Geometry,想象一个给定半径的圆围绕一个中心,由给定旋转的线交叉——我如何能够根据图像中的点位置,在一个网格位置内绘制一个近似的四边矩形*,如图所示 详细信息:我正在将Lua用于移动应用程序。左上角坐标为0,0,因此中心为maxX/2,maxY/2;我使用变量rotationStep和radiusStep来创建网络 *6点或更多点的多边形可能看起来更好 谢谢 计算圆中心与指定点之间的角度。然后找到与它有闭合角度的两条线,它将位于这两条线之间 计算点与圆中心的距离 沿直线(D)绘制相同的距离,除以圆圈之间的

想象一个给定半径的圆围绕一个中心,由给定旋转的线交叉——我如何能够根据图像中的点位置,在一个网格位置内绘制一个近似的四边矩形*,如图所示

详细信息:我正在将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个扇区,则旋转比例为2PI/n。如果你有m个“带”,那么半径刻度是R/m,网络中最外层的圆有半径R。希望这有意义

这里的想法就像是在一个规则的网格中

  • 一个起点
  • 指向“右侧”的一点(常规栅格中的x+1,此处的旋转步骤+1)
  • 一点向下2(规则网格中的y+1,此处的radiusStep+1)
  • 然后向右和向下各一点
现在只需在点与点之间画四条线,瞧


大多数图形软件包也有一个排序方法。
DrawArc
可以用来绘制两个高性能的圆弧,同时使它看起来更漂亮!

我已经有了两条直线,我有了两个圆,我现在如何得到4个矩形点?可能是伪代码?谢谢!你能告诉我什么当你说你有它们的时候?你找到你感兴趣的扇区的2条直线和2个圆了吗?Mk,是的,我有这个,但我仍然不太确定如何从中绘制矩形(或6+点多段线)。我通过将点位置除以半径步长得到的圆,我通过
math.ceil(math.ceil((math.atan((app.center.y-point.y)/(app.center.x-point.x))*180)/math.pi)/app.rotationStep)