我试图理解这个raphael.js演示上的数学:

http://raphaeljs.com/pie.js

结帐扇区方法:

function sector(cx, cy, r, startAngle, endAngle, params) {
    var x1 = cx + r * Math.cos(-startAngle * rad),
        x2 = cx + r * Math.cos(-endAngle * rad),
        y1 = cy + r * Math.sin(-startAngle * rad),
        y2 = cy + r * Math.sin(-endAngle * rad);
    return paper.path(["M", cx, cy, "L", x1, y1, "A", r, r, 0, +(endAngle - startAngle > 180), 0, x2, y2, "z"]).attr(params);
}

这是实际的演示:http://raphaeljs.com/pie.html

我的数学有点生锈,我正在尝试理解扇区函数 - 鉴于起始人和危害参数(每个启动点和终点值在0和360之间绘制ARC),为什么此函数起作用?

有帮助吗?

解决方案

这完全取决于您如何对待 startAngleendAngle. 。看来这将它们视为从水平到右侧(即0的角度向东)开始,然后沿钟形(因此,一个45度的角度指向东南。

通常在数学中,我们会考虑从水平到右侧开始的角度,但是逆时针增加...但是,如果您要求非数学家绘制一个角度,他们可能会从垂直上(即北)进行顺时针方向增加。这看起来像是混合的:)这里没有真正的“错误”或“正确”的答案 - 这都是定义问题。

由于图片很受欢迎,这是我描述的三个系统,每个系统都假设该行长度很长 r:

正常数学:X轴的逆时针

First diagram
(来源: Arachsys.com)

要求街上的男人绘制一个角度(顺时针从Y轴循环)

Second diagram

此代码使用的角度(x轴顺时针)

Third diagram

其他提示

只要看看什么罪和cos 意思是 圈子:alt text

如果您在形成角α的圆上有一个点,则cos alpha是sin alpha是y部分的点的x部分。

该插图解释了为什么否定角度的原因。alt text

这意味着,您现在可以指定 顺时针 角度,大多数具有模拟时钟的人更喜欢。

因为与中心(CX,CY)和半径r的圆周的任意点具有以下坐标(它直接遵循COS和SIN几何定义 - 相应的心理和斜边的长度之间的比率):

x = cx + R*cos(a)
y = cy + R*sin(a) for  0 <= a < 2π

因此,将角度a设置限制A您可以定义任意弧。

如果您将0°作为水平升高,x增加,垂直升高,垂直升高,y升高,则为:

cos(0) = 1
sin(0) = 0

cos(90) = 0
sin(90) = 1

您可以通过将X值乘以余弦来改变X值,并通过将其乘以正弦来改变Y值。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top