如何计算圆的周长

时间:2017-05-24 04:32:47

标签: javascript svg

我使用开始和结束角度创建了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

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

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:3)

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

答案 2 :(得分:2)

正如您所提到的,圆圈的整周将是sharedpreferences = this.getSharedPreferences("pref", Context.MODE_PRIVATE); String lanSettings = sharedpreferences.getString("name", null); 。如果您只有该圆的一部分,则可以通过将弧的角度除以360(您提供的代码使用度数)获得绘制的圆的百分比来找到圆周。

使用示例中的变量,这将是2 * Math.PI * r