1

我有一个带有半个圆圈的圆圈,我将用它来创建发光效果 - 我真正想做的是让它成为新月形

有人知道如何将半圆做成新月形,让它看起来更像 3d 吗?

这是我到目前为止所拥有的

http://jsfiddle.net/Hf79W/3/

var paper = Raphael("holder", 550, 550/1.5);
var rad = Math.PI / 180;
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);
}
var circle = paper.circle(100, 100, 50).attr({"fill":"brown"});
var fifty = sector(100,100,50,0,180,{"fill":"white","opacity":"0.4"});
4

2 回答 2

2

我对 main 函数进行了一些修改以实现相同的效果。

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", x1, y1, 
    "A", r, r, 0, +(endAngle - startAngle > 180), 0, x2, y2, 
    "A", r*1.1, r*1.1, 0, +(endAngle - startAngle > 180), 1, x1, y1, 
    "z"]).attr(params);
}

在绘制第二条曲线时,将绘制的感觉反转并稍微增加半径。希望有帮助。

于 2013-05-17T08:05:23.763 回答
0

我通过在inkscape中绘制新月然后保存为SVG解决了这个问题

于 2013-05-17T07:41:50.237 回答