JavaScript:如何获取饼图切片的中心?

JavaScript:如何获取饼图切片的中心?,javascript,math,canvas,graph,Javascript,Math,Canvas,Graph,嗨,我正在尝试使用HTML画布元素创建一个简单的饼图。 我在网上找到了一个不错的教程,并开始学习如何做 现在我想添加一些文本,我需要知道如何在饼图中找到可以添加文本的每个部分的中心 以下是循环代码: for ( i = 0; i < t.data.length; i++ ) { label = t.data[i].label; value = t.data[i].value; color = t.data[i].color;

嗨,我正在尝试使用HTML画布元素创建一个简单的饼图。 我在网上找到了一个不错的教程,并开始学习如何做

现在我想添加一些文本,我需要知道如何在饼图中找到可以添加文本的每个部分的中心

以下是循环代码:

    for ( i = 0; i < t.data.length; i++ )
    {
        label = t.data[i].label;
        value = t.data[i].value;
        color = t.data[i].color;

        ctx.lineWidth = t.strokeLineWidth;
        ctx.strokeStyle = "#FFFFFF";
        ctx.fillStyle = color;

        ctx.beginPath();
        ctx.moveTo( centerX, centerY );
        ctx.arc( centerX, centerY, radius, lastEnd, lastEnd + ( Math.PI * 2 * ( value / total ) ), false );
        ctx.lineTo( centerX, centerY );
        ctx.fill();
        ctx.stroke();

        lastEnd += Math.PI * 2 * ( value / total );
    }
for(i=0;i
这道数学题太复杂了,我无法很快完成。您可以试试rgraph库。

这道数学题太复杂了,我无法很快地完成。您可以试试rgraph库。

只需将切片视为三角形,即忽略圆弧

有很多不同的方法来定义“中心”。看看如何做到这一点。您可能需要角平分线的交点,它被称为中心点。这是内接圆的中心,它为文本提供了最大的空间

中心的坐标计算如下:

设(xa,ya)、(xb,yb)和(xc,yc)为三角形三个角的坐标,设a,b和c为相对边的长度。例如,a=| | |(xb,yb)-(xc,yc)| |等。最后,让P=a+b+c。那么中心是

((a-xa+b-xb+c-xc)/p,(a-ya+b-yb+c-yc)/p)


干杯,

简单地将切片视为三角形,即忽略圆弧

有很多不同的方法来定义“中心”。看看如何做到这一点。您可能需要角平分线的交点,它被称为中心点。这是内接圆的中心,它为文本提供了最大的空间

中心的坐标计算如下:

设(xa,ya)、(xb,yb)和(xc,yc)为三角形三个角的坐标,设a,b和c为相对边的长度。例如,a=| | |(xb,yb)-(xc,yc)| |等。最后,让P=a+b+c。那么中心是

((a-xa+b-xb+c-xc)/p,(a-ya+b-yb+c-yc)/p)


干杯,

RGraph实际上有一些非常有用的三角函数,您可以使用它们:RGraph.getAngleByXY(cx,cy,x,y)RGraph.getHypLength(x1,y1,x2,y2)RGraph.getRadiusEndPoint(cx,cy,angle,radius)(这对您可能非常有用)。记住,角度是用弧度度量的。如果要使用它们,您需要稍微按摩一下,以便将它们从RGRAPHE公共核心文件中取出。RGRAPHE实际上有一些非常有用的三角函数,您可以使用:RGraph.getAngleByXY(cx,cy,x,y)RGraph.getHypLength(x1,y1,x2,y2)RGraph.getRadiusEndPoint(cx,cy,angle,radius)(这一个可能对你非常有用)。记住角度是用弧度来测量的。如果你要使用它们,你必须稍微按摩一下,才能将它们从RGRAPHE公共核心文件中取出。