আপনি উপবৃত্তাকার 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
উপরের ফাংশনটি ব্যবহার করে প্রারম্ভিক স্থানাঙ্কগুলি (যা আপনার বোঝা উচিত ) এবং শেষ স্থানাঙ্কগুলি (x, y) উভয়ই গণনা করতে পারবেন , যথাক্রমে (200, 175) এবং প্রায় (182.322, 217.678) ফলন করুন। এখনও অবধি এই প্রতিবন্ধকতাগুলি দেওয়া, এখানে চারটি আরক রয়েছে যা আঁকতে পারে, তাই দুটি পতাকা তাদের মধ্যে একটি নির্বাচন করে। আমি অনুমান করছি আপনি সম্ভবত একটি ক্ষুদ্রতর চাপ আঁকতে চান (অর্থাত্ 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 সম্পাদনা করুন), যদি @ ক্লকস্মিথের মতো আপনিও ভাবছেন যে তারা কেন এই এপিআইটি বেছে নিয়েছে, বাস্তবায়ন নোটগুলিতে একবার দেখুন । তারা দুটি সম্ভাব্য আর্ক প্যারামিটারাইজেশন, "এন্ডপয়েন্ট প্যারামিটারাইজেশন" (যা তারা বেছে নিয়েছিল) এবং "সেন্টার প্যারামিটারাইজেশন" (যা প্রশ্নটি ব্যবহার করে তার মতো) বর্ণনা করে। "শেষ পয়েন্ট প্যারামিটারাইজেশন" এর বিবরণে তারা বলে:
এন্ডপয়েন্ট প্যারামিটারাইজেশনের অন্যতম সুবিধা হ'ল এটি একটি সামঞ্জস্যপূর্ণ পাথ সিনট্যাক্সের অনুমতি দেয় যাতে নতুন "বর্তমান পয়েন্ট" এর স্থানাঙ্কে সমস্ত পাথ কমান্ড শেষ হয়।
সুতরাং মূলত এটি আরাক্সের একটি পার্শ্ব-প্রতিক্রিয়া যা তাদের নিজস্ব পৃথক বস্তুর চেয়ে বৃহত্তর পথের অংশ হিসাবে বিবেচিত হয়। আমি মনে করি যে যদি আপনার এসভিজি রেন্ডারারটি অসম্পূর্ণ থাকে তবে এটি কেবল যে কোনও পথের উপাদানগুলি এড়িয়ে যেতে পারে এটি রেন্ডার করতে জানে না, যতক্ষণ না তারা জানে যে তারা কত যুক্তি গ্রহণ করে। অথবা হতে পারে এটি অনেকগুলি উপাদান সহ কোনও পথের বিভিন্ন অংশের সমান্তরাল রেন্ডারিং সক্ষম করে। অথবা সম্ভবত তারা নিশ্চিত করেছেন যে কোনও জটিল পথের দৈর্ঘ্যের সাথে গোলাকার ত্রুটিগুলি তৈরি হয় নি।
বাস্তবায়ন নোটগুলি মূল প্রশ্নের জন্যও দরকারী, যেহেতু দুটি প্যারামিটারাইজেশনের মধ্যে রূপান্তর করার জন্য তাদের কাছে আরও গাণিতিক সিউডোকোড রয়েছে (যা আমি এই উত্তরটি যখন প্রথম লিখলাম তখন বুঝতে পারিনি)।
arcSweep
ভেরিয়েবলটি আসলেlarge-arc-flag
এসভিজি এ প্যারামিটারটি নিয়ন্ত্রণ করে । উপরের কোডে,sweep-flag
পরামিতিটির মান সর্বদা শূন্য।arcSweep
সম্ভবত কিছু ভালো নামকরণ করা উচিতlongArc
।