2013-05-16 112 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