gpt4 book ai didi

raphael js 从 6 点钟开始绘制圆弧

转载 作者:行者123 更新时间:2023-12-04 04:56:25 25 4
gpt4 key购买 nike

我能够在 http://raphaeljs.com/polar-clock.html 找到一个 Polar 时钟的例子。

我修改了它来绘制同心圆,但我需要弧从6点开始。我试图剖析它是如何工作的,但一直无法弄清楚。

JS fiddle :

http://jsfiddle.net/5frQ8/

var r = Raphael("holder", 600, 600);

// Custom Attribute
r.customAttributes.arc = function (value, total, R, color)
{
var alpha = 360 / total * value,
a = (90 - alpha) * Math.PI / 180,
x = 300 + R * Math.cos(a),
y = 300 - R * Math.sin(a),
path;
if (total == value)
{
path = [["M", 300, 300 - R], ["A", R, R, 0, 1, 1, 299.99, 300 - R]];
}
else
{
path = [["M", 300, 300 - R], ["A", R, R, 0, +(alpha > 180), 1, x, y]];
}
return {path: path, stroke: color,"stroke-width": 30};
};

//West
r.path().attr({arc: [575, 2000, 200, '#19A69C']});

//Total#
r.path().attr({arc: [1000, 2000, 160, '#FEDC38']});

//East
r.path().attr({arc: [425, 2000, 120, '#7BBD26']});

最佳答案

我修改了 main 函数,使圆弧从 6 点钟的等效位置开始。请注意,在极坐标中查找点的公式始终为:

x = centerX + radius * cos(angle)
y = centerY + radius * sin(angle)

相应地找到起点和终点。

要通过“delta”更改起始角度,所有角度都应添加“delta”。因此,
newAngle = angle + delta

对于分别从 12 点钟和 6 点钟开始的弧,delta 的值为 -90 和 +90。

圆弧绘制功能相应更改。
// Custom Attribute
r.customAttributes.arc = function (value, total, R, color)
{
var angleShift = 90,
alpha = 360 / total * value,
a = (alpha + angleShift) * Math.PI / 180,
x = 300 + R * Math.cos(a),
y = 300 + R * Math.sin(a),
path;
if (total == value)
{
path = [["M", 300, 300 + R], ["A", R, R, 0, 1, 1, 300.01, 300 + R]];
}
else
{
path = [["M", 300, 300 + R], ["A", R, R, 0, +(alpha > 180), 1, x, y]];
}
return {path: path, stroke: color,"stroke-width": 30};
};

关于raphael js 从 6 点钟开始绘制圆弧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16699640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com