आप अण्डाकार A
आरसी कमांड का उपयोग करना चाहते हैं । दुर्भाग्य से आपके लिए, आपको ध्रुवीय निर्देशांक (त्रिज्या, कोण) के बजाय प्रारंभ और अंत बिंदुओं के कार्टेशियन निर्देशांक (x, y) को निर्दिष्ट करने की आवश्यकता है, इसलिए आपको कुछ गणित करना होगा। यहां एक जावास्क्रिप्ट फ़ंक्शन है, जिसे काम करना चाहिए (हालांकि मैंने इसका परीक्षण नहीं किया है), और जो मुझे आशा है कि काफी आत्म-व्याख्यात्मक है:
function polarToCartesian(centerX, centerY, radius, angleInDegrees) {
var angleInRadians = angleInDegrees * Math.PI / 180.0;
var x = centerX + radius * Math.cos(angleInRadians);
var y = centerY + radius * Math.sin(angleInRadians);
return [x,y];
}
कौन सा कोण किन घड़ी स्थितियों के अनुरूप है, यह समन्वय प्रणाली पर निर्भर करेगा; बस स्वैप और / या पाप / कोस शब्दों को आवश्यक रूप से नकार दें।
चाप कमांड में ये पैरामीटर हैं:
rx, ry, x-axis-rotation, large-arc-flag, sweep-flag, x, y
अपने पहले उदाहरण के लिए:
rx
= ry
= 25 और x-axis-rotation
= 0, क्योंकि आप एक वृत्त चाहते हैं और एक दीर्घवृत्त नहीं। आप M
ऊपर दिए गए फ़ंक्शन, क्रमशः उपज (200, 175) और के बारे में (182.322, 217.678) का उपयोग करके, दोनों शुरुआती निर्देशांक (जो आपको ove चाहिए ) और निर्देशांक (x, y) को समाप्त कर सकते हैं। अब तक इन बाधाओं को देखते हुए, वास्तव में चार चाप हैं जिन्हें खींचा जा सकता है, इसलिए दो झंडे उनमें से एक का चयन करते हैं। मैं अनुमान लगा रहा हूं कि आप शायद एक छोटा चाप (अर्थ large-arc-flag
= 0) खींचना चाहते हैं , कोण की कमी (अर्थ sweep-flag
= 0) की दिशा में । सभी एक साथ, एसवीजी पथ है:
M 200 175 A 25 25 0 0 0 182.322 217.678
दूसरे उदाहरण के लिए (मान लें कि आप एक ही दिशा में जा रहे हैं, और इस तरह एक बड़ा चाप), एसवीजी पथ है:
M 200 175 A 25 25 0 1 0 217.678 217.678
दोबारा, मैंने इनका परीक्षण नहीं किया है।
(2016-06-01 को संपादित करें), @clocksmith की तरह, यदि आप सोच रहे हैं कि उन्होंने इस API को क्यों चुना है, तो कार्यान्वयन नोट्स पर एक नज़र डालें । वे दो संभावित आर्क मापदंडों का वर्णन करते हैं, "एंडपॉइंट पैरामीटराइजेशन" (जो उन्होंने चुना था), और "सेंटर पैरामीटराइजेशन" (जो कि प्रश्न का उपयोग करता है जैसा है)। "एंडपॉइंट पैरामीटराइजेशन" के वर्णन में वे कहते हैं:
समापन बिंदु परिमाणीकरण के लाभों में से एक यह है कि यह एक सुसंगत पथ सिंटैक्स की अनुमति देता है जिसमें सभी पथ कमांड नए "वर्तमान बिंदु" के निर्देशांक में समाप्त होते हैं।
इसलिए मूल रूप से यह अपनी अलग वस्तु के बजाय एक बड़े पथ के हिस्से के रूप में माना जा रहा है। मुझे लगता है कि यदि आपका एसवीजी रेंडरर अधूरा है, तो यह किसी भी पथ घटकों को छोड़ सकता है जो यह नहीं जानता कि कैसे रेंडर करना है, जब तक कि यह जानता है कि वे कितने तर्क लेते हैं। या हो सकता है कि यह कई घटकों के साथ एक पथ के विभिन्न हिस्सों के समानांतर प्रतिपादन में सक्षम हो। या हो सकता है कि उन्होंने यह सुनिश्चित करने के लिए यह किया हो कि गोलाई की त्रुटियां जटिल पथ की लंबाई के साथ न बनें।
कार्यान्वयन नोट्स मूल प्रश्न के लिए भी उपयोगी हैं, क्योंकि उनके पास दो मापदंडों के बीच परिवर्तित करने के लिए अधिक गणितीय छद्मकोड है (जो मुझे पता नहीं था जब मैंने पहली बार यह उत्तर लिखा था)।
arcSweep
चर वास्तव मेंlarge-arc-flag
svg A पैरामीटर को नियंत्रित कर रहा है । उपरोक्त कोड में,sweep-flag
पैरामीटर के लिए मान हमेशा शून्य होता है।arcSweep
शायद कुछ नाम बदला जाना चाहिएlongArc
।