2013-05-16 90 views
1

我有它一个半圈,我打算使用创建光泽效果的圆形月牙形状 - 我真正想要做的是使一个月牙形状SVG - 在拉斐尔

有人知道如何让半圈变成月牙形,所以它看起来更多一点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"}); 
+0

您仍然可以查看下面提供的解决方案以了解洞察。 – NRC

回答

2

我已经修改的主要功能有点解决了这个达到相同。

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); 
} 

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

+0

这是完美的,赞赏。 –

+0

乐于帮助。 :) – NRC

0

我通过绘制在Inkscape中的cresecent,然后保存为SVG