【问题标题】:Get vertices of an Arc where I have its StartPoint, Center and EndPoint获取弧的顶点,我有它的起点、中心和终点
【发布时间】:2015-02-21 07:36:07
【问题描述】:

我想知道弧的顶点,我有它的起点、中心和终点以及弧的半径。我知道绘制的弧是通过创建具有参数中指定的精度的小线。我想要实现的是计算多边形的面积,其中可能有一个弧,看起来就像我附在这个问题上的图像。

  • SP = 弧的起点。
  • EP = 弧的终点。
  • CP = 弧的中心。

【问题讨论】:

    标签: c# geometry


    【解决方案1】:

    知道弧的起点、中心和终点不足以唯一地定义它。你必须知道一些其他参数。

    当弧线定义好时,可以计算出circular segment geometrically的面积

    编辑:因为你也知道半径R,我们可以计算一个面积:

    Theta = 2 * ArcSin(Distance_SPtoEP/(2*R))
    Area = 1/2 * R * R * (Theta - Sin(Theta))
    

    快速检查:

    R = 1, semicircle. 
    Theta = 2 * ArcSin(2/2) = 2 * Pi/2 = Pi
    Area = 1/2 * (Pi - 0) = Pi/2 - true
    

    Edit2: 连接SP和EP得到剩余多边形,比建立折线逼近弧和计算百顶点多边形面积更简单。

    折线近似:
    我们希望弧线距离不超过某个限制 d。所以我们将计算小弧角A

    d = R * (1-Cos(A/2))
    A = 2 * ArcCos(1-d/R)
    

    现在将大弧分成角度为A的小块,并生成新的顶点

    【讨论】:

    • 我确实有它的半径。这对我没有帮助吗?
    • 我想上面的解决方案会很好。但是我也有剩余的多边形来计算面积。如果我要得到弧的顶点,我可以使用这里指定的算法stackoverflow.com/questions/2034540/…
    • @PankajNikam 我不同意有一个明确定义的半径。这绝不是圆弧。
    【解决方案2】:

    您的绘图似乎是一个半椭圆。

    长轴 (A) 应为 SP-EP,短轴 (B) 应指定。区域为Pi.A.B/8

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多