gpt4 book ai didi

javascript - SVG、Raphael.js、绘图

转载 作者:行者123 更新时间:2023-11-29 22:24:29 25 4
gpt4 key购买 nike

我猜这更像是一个数学问题或者可能是一个 SVG 问题。我正在考虑修改我在 raphael.js 网站上找到的一些示例代码。我已经将其修改为具有自定义中心点。现在我想修改它,以便我可以指定弧的起始 Angular 。 (类似于 d3.js,所以我可以用它来制作类似中间缺失的条形图的东西)。

但是我不知道从哪里开始或如何开始。我的数学很糟糕,我不知道什么是 alpha 和 a 变量。或者为什么 x 和 y 是这样计算的。我一直在一遍又一遍地阅读 SVG 规范,但我缺少一些重要的基础知识,我不知道。

有人能给我指出正确的方向,以便我开始理解这些东西吗?

window.onload = function () {
var r = Raphael("holder", 600, 600),
R = 200,
init = true,
param = {stroke: "#fff", "stroke-width": 30};
// Custom Attribute
r.customAttributes.arc = function (xPos, yPos, value, total, R) {
var alpha = 360 / total * value,
a = (90 - alpha) * Math.PI / 180,
x = xPos + R * Math.cos(a),
y = yPos - R * Math.sin(a),
var path = [["M", xPos, yPos - R], ["A", R, R, 0, +(alpha > 180), 1, x, y]];
return {path: path};
};
var sec = r.path().attr(param).attr({arc: [300, 300, 3, 60, R]});
};

运行代码产生:

<svg height="600" version="1.1" width="600" xmlns="http://www.w3.org/2000/svg" style="overflow: hidden; position: relative;">
<path style="" fill="none" stroke="#bfb5b5" d="M300,100A200,200,0,0,1,361.8033988749895,109.7886967409693" stroke-width="30">
</svg>

我也不知道圆弧参数如何协同工作来绘制它们正在绘制的内容。

很抱歉没有关注这个问题。

编辑:它基于极地时钟示例。 http://raphaeljs.com/polar-clock.html

最佳答案

我认为该示例的作者正在尝试创建自定义属性,以便轻松创建基于时钟旋转的弧。基本上,自定义属性的 total 参数表示时钟的总移动量(60 秒),而 value(在您的情况下为 3)表示时钟的长度(以秒为单位)您正在尝试绘制的圆弧。所以基本上你有 3 秒的弧度。

现在是数学:

  • alpha :圆弧的 Angular (以度为单位)。您注意到从秒到度的转换:3 秒 -> 18 度

  • a :以弧度表示的 Angular 。三 Angular 函数公式使用弧度而不是度数,因此您需要进行这种转换。出于某种我不明白的原因,这是互补 Angular (90 - alpha)
    编辑:余 Angular (可能)用于补偿在三 Angular 学中 y 轴指向上方而在 svg Canvas 上它指向下方的事实。

  • x, y :您正在绘制的路径(圆弧)的终点。这些是使用初等三 Angular 函数计算的(抱歉..你在这里没有得到任何帮助)。

此处描述了 svg arc 的参数:http://www.w3.org/TR/SVG/paths.html#PathDataEllipticalArcCommands

关于javascript - SVG、Raphael.js、绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10439903/

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