Live Demo
calcPointsCirc
4 तर्क, केंद्र x/y, त्रिज्या, और डैश की लंबाई लेता है। यह अंक, एक्स, वाई, एक्स, आईई की एक सरणी देता है। आप धराशायी सर्कल को आकर्षित करने के लिए बस बिंदुओं के माध्यम से लूप कर सकते हैं। ऐसा करने के लिए शायद अधिक शानदार तरीके हैं लेकिन लगाए गए आईडी ने इसे एक शॉट दिया है।
function calcPointsCirc(cx,cy, rad, dashLength)
{
var n = rad/dashLength,
alpha = Math.PI * 2/n,
pointObj = {},
points = [],
i = -1;
while(i < n)
{
var theta = alpha * i,
theta2 = alpha * (i+1);
points.push({x : (Math.cos(theta) * rad) + cx, y : (Math.sin(theta) * rad) + cy, ex : (Math.cos(theta2) * rad) + cx, ey : (Math.sin(theta2) * rad) + cy});
i+=2;
}
return points;
}
var canvas = document.getElementById('canvas'),
ctx = canvas.getContext('2d');
canvas.width = canvas.height= 200;
var pointArray= calcPointsCirc(50,50,50, 1);
ctx.strokeStyle = "rgb(255,0,0)";
ctx.beginPath();
for(p = 0; p < pointArray.length; p++){
ctx.moveTo(pointArray[p].x, pointArray[p].y);
ctx.lineTo(pointArray[p].ex, pointArray[p].ey);
ctx.stroke();
}
ctx.closePath();
उपयोग करके स्निपेट और डेमो के लिए धन्यवाद। जेएसफ़िल्ड काफी अच्छा है! – Chris
एक गड़बड़ी है जिसे मैं आपको ठीक करने में मदद करने के लिए कहूंगा। Http://jsfiddle.net/YP23U/ देखें - केवल मेरे द्वारा किए गए परिवर्तन रंग हैं। यह आरजीबीए के साथ अजीब काम करता है। कृपया सलाह दें। धन्यवाद! –