javascript - 画一个漂亮整齐的弧线,没有大的直 Angular ,而是有漂亮的 Angular

标签 javascript vector path automatic-ref-counting raphael

我在Raphael中画了一条弧线,我的目标只是一条弧线,没有 其中有一个大直 Angular 。

所以只有一条没有直 Angular 的平滑曲线。

它非常基本,使用拉斐尔椭圆弧。

您可以在 http://jsfiddle.net/mailrox/uuAjV/1/ 看到它

代码如下:

    var raph = Raphael(0, 0, 1000, 1000);

var x = 150;
var y = 150;
var r = 100; //radius
var value = 100;
var maxValue = 360;

var pi = Math.PI;
var cos = Math.cos;
var sin = Math.sin;
var t = (pi/2) * 3; //translate
var rad = (pi*2 * (maxValue-value)) / maxValue + t;

var p = [
  "M", x, y,
  "l", r * cos(t), r * sin(t),
  "A", r, r, 0, +(rad > pi + t), 1, x + r * cos(rad), y + r * sin(rad),
  "z"
];

var param = {"stroke-width": 30}

var d = raph.path(p).attr(param);

我所做的一种方法是我可以屏蔽线条的直 Angular 部分,但是我不想这样做,而只是拥有一次漂亮的曲线,而不是同时管理当前路径和顶部的 mask 。

非常感谢您的帮助!

最佳答案

试试这个。只需从 SVG 路径定义中取出闭合路径(“z”)即可(注意我没有测试此解决方案):

var raph = Raphael(0, 0, 1000, 1000);

var x = 150;
var y = 150;
var r = 100; //radius
var value = 100;
var maxValue = 360;

var pi = Math.PI;
var cos = Math.cos;
var sin = Math.sin;
var t = (pi/2) * 3; //translate
var rad = (pi*2 * (maxValue-value)) / maxValue + t;

var p = [
  "M", x, y,
  "l", r * cos(t), r * sin(t),
  "A", r, r, 0, +(rad > pi + t), 1, x + r * cos(rad), y + r * sin(rad)
];

var param = {"stroke-width": 30}

var d = raph.path(p).attr(param);

jsFiddle

关于javascript - 画一个漂亮整齐的弧线,没有大的直 Angular ,而是有漂亮的 Angular ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14141458/

相关文章:

javascript - JavaScript 数组如何具有非数字键?

javascript - 从 Controller Angular js显示模态

c++ - C++ 如何从子类向父类(super class)添加方法

android - Android SDK 的推荐 .zshrc 设置

windows - 如何在 Win 64 上使用 32 位 JDK 启动 Oracle SQL Developer 4?

python - 系统路径中安装了多个Python

javascript - 根据正整数或负整数更改文本颜色

C++ 如何通过超出大小向指针数组添加元素

vector - 在向量中存储 C++ std::function 的 Rust 等价物是什么?

javascript - 如何在阶乘计算时打印动态生成的乘法运算字符串?