【问题标题】:How to find the middle point of an arc slice?如何找到圆弧切片的中点?
【发布时间】:2012-02-20 12:21:00
【问题描述】:

我有一个圆的切片(由 moveTo、lineTo、arc 等组成),需要找到切片的中点。

找到下图所示点的数学原理是什么?

【问题讨论】:

  • 极坐标,半径的一半,导线的一半……?我想这取决于你如何定义“中点”,但似乎知道这意味着你知道问题的答案......
  • 看起来超过半径的一半......再次取决于图像的准确度
  • 图片不准确。我一直认为插图有助于解决这类问题。
  • @Feeney 绝对!一张图片价值数百个字(除非它的代码)

标签: javascript math html5-canvas


【解决方案1】:

设C为中心点,P1和P2为圆周上的点,切片角度小于Pi(180度)。

一种可能性:

X = C + 半径/2 * UnitVector(P1 + P2 - 2* C)

另一个:

X = 1/3 * (P1 + P2 + C)

(取决于具体要求)

【讨论】:

【解决方案2】:

在我看来,它看起来是该扇区的“中心”。

它的坐标(x轴沿半径通过质心,原点在中心)

centroidX = (4/3)r(sin(A)/A)

质心Y = 0

其中“A”是圆弧在圆心处形成的角度(以弧度为单位),“r”是半径。

编辑:

这是一种很容易推导出来的公式。 任何形状的几何质心是所有点的平均值(加权平均值)。 在物理学中,物体的质心(AKA center of mass)是可以假设整个物体的质量集中的点(例如,物体可以在质心处的针上保持平衡)。有些公式可以直接用于规则形状。对于不规则形状,通过积分计算。

它的基本逻辑是将所有点的x坐标相加并除以总数。点数,它给出质心的 x 坐标,y 坐标类似。 由于形状上的点不是离散的,因此使用积分。

【讨论】:

  • 这是否使用三角形的中值来计算质心?您能否剖析一下,以便我更好地理解。谢谢
  • 如果可以将形状完全划分为三角形,可以使用中位数法。因此,对于涉及圆形(或其部分)的形状,不能使用中值方法(尽管实际上可以通过选择大量小三角形来完成,这是一个近似值)
  • 所以如果 A、B 和 C 是一个角度的 3 个点。质心.X = (A.x + B.x + C.x)/3;质心.Y = (A.y + B.y + C.y)/3;
  • 三角形中的所有点都需要用于积分/求和,而不仅仅是顶点
  • 这对我有用: //find middle of bigSeg(chosen sector) //circleX & circleY is coOrds middle if (bigSeg == 0) {a = (5*Math.PI) /3; b=(3*数学.PI)/2; } if (bigSeg == 1) {a = (11*Math.PI)/6; b=(5*Math.PI)/3; } if (bigSeg == 2) {a = 0; b = (11*Math.PI)/6;} var angle1X = 512 + dataSlider1[bigSeg].radius * Math.cos(a); var angle1Y = 330 + dataSlider1[bigSeg].radius * Math.sin(a); var angle2X = 512 + dataSlider1[bigSeg].radius * Math.cos(b); var angle2Y = 330 + dataSlider1[bigSeg].radius * Math.sin(b); var circleX = (512 + angle1X + angle2X) / 3; var circleY = (330 + angle1Y + angle2Y) / 3;
猜你喜欢
  • 1970-01-01
  • 2018-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-10
  • 1970-01-01
  • 1970-01-01
  • 2020-12-23
相关资源
最近更新 更多