Hi
mache gerade meine ersten Gehversuche mit dem Canvas-Element.
Versuche, ähnlich wie ich das mit GD2 mache, "Quasi-Kreise" zu zeichnen,
deren maximaler vertikaler Durchmesser die Hälfte ihres maximal horizontalen
Durchmessers beträgt.
Der nachstehende Code produziert "Nur-2D"-Pie Charts. Kann mir jemand einen Tip geben, wie ich möglichst geschmeidig zum vorbeschriebenen 3D-Effekt komme. Mir fehlen da gerade die Ideen bzw. Quellen.
Code:
<html>
<head>
<script type="application/javascript">
function getRadians(deg) {
return (Math.PI/180) * deg;
}
sum = function(o){
for(var s = 0, i = o.length; i; s += o[--i]);
return s;
};
randomCol = function(minVal,maxVal) {
back = parseInt(minVal + Math.random() * maxVal);
return back.toString();
}
function draw_pie(x,y,radius,pie_values,alpha,canvasId) {
var canvas = document.getElementById(canvasId);
var ctx = canvas.getContext("2d");
totalSum = sum(pie_values);
parts = pie_values.length;
pie_part_start = 0;
for(i=0;i<=parts;i++) {
partPerc = parseFloat(pie_values[i]) / totalSum;
part_size = partPerc * 360;
pie_part_stop = pie_part_start + part_size;
r = randomCol(20,220);
g = randomCol(20,220);
b = randomCol(20,220);
colorNow = "rgba(" + r + "," + g + "," + b + "," + alpha.toString() + ")";
ctx.fillStyle = colorNow;
ctx.beginPath();
ctx.moveTo(x,y);
ctx.arc(x,y,radius,getRadians(pie_part_start),getRadians(pie_part_stop),false);
ctx.lineTo(x,y);
ctx.fill();
pie_part_start = pie_part_stop;
}
}
function startUp() {
draw_pie(150,150,100,[20,30,50,60,10],0.5,'canvas')
}
</script>
</head>
<body onload="startUp();">
<canvas style="border: 2px solid green" id="canvas" width="300" height="300"></canvas>
</body>
</html>