【问题标题】:How to calculate the circumference of the circle如何计算圆的周长
【发布时间】:2017-05-24 13:10:07
【问题描述】:

我已经使用开始和结束角度创建了 SVG 弧。我需要计算该弧的周长吗?如何计算。

            function polarToCartesian(centerX, centerY, radius, angleInDegrees) {
                var angleInRadians = (angleInDegrees-90) * Math.PI / 180.0;
                return {
                    x: centerX + (radius * Math.cos(angleInRadians)),
                    y: centerY + (radius * Math.sin(angleInRadians))
                };
            }

            function describeArc(x, y, radius, startAngle, endAngle){
                var start = polarToCartesian(x, y, radius, endAngle);
                var end = polarToCartesian(x, y, radius, startAngle);
                var largeArcFlag = endAngle - startAngle <= 180 ? "0" : "1";
                var d = [
                    "M", start.x, start.y, 
                    "A", radius, radius, 0, largeArcFlag, 0, end.x, end.y
                ].join(" ");
                return d;       
            }

            window.onload = function() {
                document.getElementById("circle").setAttribute("d", describeArc(150, 150, 100, 0, 270));
            };

示例链接:https://jsfiddle.net/ndmsqmao/

使用这个我已经渲染了圆圈...... 如果这是一个完整的圆圈,则意味着我可以使用以下公式找到圆周

周长 = 2 * Math.PI * r

但这不是一个完整的循环。那你能分享一下,如何找到周长?

【问题讨论】:

  • r * 角度(弧度)
  • @JaromandaX 能否提供示例或代码?
  • 任何高中数学课本
  • (lol) 你学过吗?
  • 没有。我午餐吃了我的数学课本。似乎我通过渗透获得了一些知识

标签: javascript svg


【解决方案1】:

您可以从总圆角 360 计算周长。考虑 360 是整个圆,它的比率是 1。对于半圆 180 是 0.5。因此,您可以将弧角转换为 (1/360) * yourArcTotalAngle = 弧的比率。

周长 = Math.PI * 直径 * ((1/360) * yourArcTotalAngle);

【讨论】:

    【解决方案2】:

    我不确定你为什么要在弧度的 var 角中减去 90,也许我在那里遗漏了一些东西。但是对于计算不完整圆的周长的部分,它将是radius * Δ ϴ (in radians)。从度数到弧度的转换如下pi * angle / 180 或者如果您更喜欢2 * pi * angle / 360(它们都是相同的,但有些人更喜欢另一个,因为它看起来类似于2πr)。 所以与你的代码集成它应该看起来像这样......var circumference = radius * Math.PI * Math.abs(startAngle-endAngle) / 180;。 希望解释有所帮助,请随时就此提出任何进一步的问题。

    【讨论】:

      【解决方案3】:

      正如您所提到的,圆的完整周长是2 * Math.PI * r。如果您只有该圆的一部分,您可以通过将圆弧的角度除以 360(您提供的代码使用度数)得到您绘制的圆的百分比来找到圆周。

      使用您示例中的变量,这将是2 * Math.PI * radius * (endAngle - startAngle) / 360

      【讨论】:

      • 当角度以弧度表示时要简单得多
      • 嗯,是的,在这种情况下,您只需发送2 * radius * angle
      猜你喜欢
      • 1970-01-01
      • 2015-08-22
      • 1970-01-01
      • 1970-01-01
      • 2022-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-05
      相关资源
      最近更新 更多