বহুভুজকে স্ফীত / ডিফ্লেটিং (অফসেটিং, বাফারিং) করার জন্য একটি অ্যালগরিদম


202

আমি কীভাবে বহুভুজকে "ফুলে" দেব? এটি, আমি এর অনুরূপ কিছু করতে চাই:

বিকল্প পাঠ

প্রয়োজনীয়তাটি হ'ল নতুন (স্ফীতিত) বহুভুজের প্রান্তগুলি / বিন্দুগুলি পুরান (মূল) বহুভুজের (একই চিত্রের উপরে নয়) থেকে একই ধ্রুবক দূরত্বে রয়েছে, তখন থেকে এটি স্ফীতভাবে উল্লম্বগুলির জন্য আরক ব্যবহার করতে হবে, তবে আসুন আপাতত সে সম্পর্কে ভুলে যাও;))।

আমি যা খুঁজছি তার গাণিতিক শব্দটি আসলে অভ্যন্তরীণ / বাহ্যিক বহুভুজ অফসেটিং । এটি চিহ্নিত করার জন্য +1 করুন bal বিকল্প নামকরণ বহুভুজ বাফারিং

আমার অনুসন্ধানের ফলাফল:

এখানে কয়েকটি লিঙ্ক রয়েছে:


17
এটি মোটেই তুচ্ছ প্রশ্ন নয়: যদি পক্ষাঘাত / মুদ্রাস্ফীতি সামান্য হয় তবে গুরুতর কিছু ঘটে না, তবে এক পর্যায়ে, শীর্ষস্থানগুলি অদৃশ্য হয়ে যায়। সম্ভবত এটি আগে করা হয়ে গেছে, তাই আমি বলব: অন্য কারও অ্যালগরিদম ব্যবহার করুন, নিজের তৈরি করবেন না।
মার্টিজন

1
প্রকৃতপক্ষে, যদি আপনার বহুভুজটি শুরু করতে অবিচল থাকে (উপরের উদাহরণ হিসাবে) আপনাকে নির্ধারণ করতে হবে যে নির্দোষ অ্যালগরিদম একটি স্ব-
ছেদকারী

হ্যাঁ, প্রধান সমস্যা হ'ল বহুভুজের অবতল অংশ, এখানেই জটিলতা রয়েছে। আমি এখনও মনে করি যখন নির্দিষ্ট নির্দিষ্ট শীর্ষবিন্দুটি নির্মূল করতে হয় তখন এটি গণনা করা উচিত নয় should মূল প্রশ্নটি কী ধরণের এ্যাসিম্পোটিক জটিলতার প্রয়োজন হবে।
ইগোর ব্রেজক

হ্যালো, এটি আমারও সমস্যা, 3 ডি-তে আমার এটি করা দরকার না need Arxiv.org/pdf/0805.0022.pdf কাগজে বর্ণিত ত্রি-মাত্রিক পলিয়েড্রার পদ্ধতির স্ট্রেইট কঙ্কালের বিকল্প আছে কি ?
স্টেফানমগ

উত্তর:


138

আমি ভেবেছিলাম আমি সংক্ষেপে আমার নিজস্ব বহুভুক্ত ক্লিপিং এবং অফসেট লাইব্রেরি উল্লেখ করতে পারি - ক্লিপার

ক্লিপার মূলত বহুভুজ ক্লিপিং অপারেশনের জন্য ডিজাইন করা হলেও এটি বহুভুজ অফসেটিংও করে। লাইব্রেরিটি ডেলফি, সি ++ এবং সি # তে লিখিত ওপেন সোর্স ফ্রিওয়্যার । এটিতে বিনা ব্যতীত ফ্রিওয়্যার এবং বাণিজ্যিক অ্যাপ্লিকেশন উভয় ক্ষেত্রেই এটি ব্যবহারের অনুমতি দেয় এমন একটি অত্যন্ত বিনা বিযুক্ত বুস্ট লাইসেন্স রয়েছে।

বহুভুজ অফসেটিং তিনটি অফসেট শৈলীর একটি ব্যবহার করে করা যায় - স্কোয়ারড, গোল এবং মাইটার্ড।

বহুভুজ অফসেটিং শৈলী


2
খুব ঠান্ডা! 2 বছর আগে আপনি কোথায় ছিলেন? :) শেষ পর্যন্ত আমাকে নিজের অফসেটিং যুক্তি প্রয়োগ করতে হয়েছিল (এবং এতে অনেক সময় হারাতে পেরেছি)। বহুভুজ অফসেটিং, বিটিডব্লিউ জন্য আপনি কোন অ্যালগরিদম ব্যবহার করছেন? আমি গ্রাসফায়ার ব্যবহার করেছি। আপনি বহুভুজ মধ্যে গর্ত পরিচালনা করবেন?
ইগোর ব্রেজক

2
2 বছর আগে আমি বহুভুজ ক্লিপিংয়ের একটি সচ্ছল সমাধানের সন্ধান করছিলাম যা জটিল লাইসেন্স সংক্রান্ত সমস্যাগুলির সাথে জড়িত ছিল না :)। এজ অফসেটিং সমস্ত প্রান্তের জন্য ইউনিট নরমাল জেনারেট করে অর্জন করা হয়। আমার বহুভুজ ক্লিপার দ্বারা প্রান্তে যোগ দেওয়া হয়েছে কারণ এই ওভারল্যাপযুক্ত ছেদগুলির চৌম্বকগুলি বহুভুজগুলির অভিমুখের বিপরীতে রয়েছে। গর্তগুলি অবশ্যই স্ব-ছেদকারী বহুভুজ ইত্যাদি হিসাবে পরিচালনা করা হয় their তাদের ধরণ বা সংখ্যার কোনও সীমাবদ্ধতা নেই। এখানে " বহুগুণ
অ্যাঙ্গাস জনসন

ওহো! এক সেকেন্ডের জন্য ভাববেন না এই প্রশ্নটি "ভুলে যাওয়া"! আমি গত সপ্তাহে এখানে দেখেছি - আমি এখানে ফিরে আসার আশা করছিলাম না! একটি গুচ্ছ ধন্যবাদ!
ক্রিস বার্ট-ব্রাউন

পলি বাফারিংয়ের বিষয়ে ক্লিপারের ডক্স এখানে রয়েছে: অ্যাঙ্গাসজেড
ড্রউ নোকস

5
যে কেউ এটি করতে চায় তাদের জন্য, অন্য বিকল্পটি হ'ল জিওএস এবং যদি আপনি পাইথন ব্যবহার করেন তবে জিইওএসের মোড়কে শেপলি। সত্যিই সুন্দর উদাহরণ: toblerity.github.com/shapely/manual.html#object.buffer
পেলসন

40

আপনি যে বহুভুজটির সন্ধান করছেন তাকে গণ্য জ্যামিতিতে অভ্যন্তরীণ / বাহ্যিক অফসেট বহুভুজ বলা হয় এবং এটি সরল কঙ্কালের সাথে ঘনিষ্ঠভাবে সম্পর্কিত

জটিল বহুভুজের জন্য এগুলি বেশ কয়েকটি অফসেট বহুভুজ:

এবং এটি অন্য বহুভুজের জন্য সরাসরি কঙ্কাল:

অন্যান্য মন্তব্যে যেমন উল্লেখ করা হয়েছে, তেমনি, আপনি আপনার বহুভুজকে "স্ফীত / ডিফ্লেট" করার কতটা পরিকল্পনা করছেন তার উপর নির্ভর করে আপনি আউটপুটটির জন্য বিভিন্ন সংযোগ স্থাপন করতে পারেন।

গণনার দৃষ্টিকোণ থেকে: একবার আপনার কাছে সরাসরি কঙ্কাল থাকলে তুলনামূলকভাবে সহজেই অফসেট বহুভুজগুলি তৈরি করতে সক্ষম হওয়া উচিত। ওপেন সোর্স এবং (অ-বাণিজ্যিক জন্য বিনামূল্যে) সিজিএল লাইব্রেরিতে এই কাঠামোগুলি কার্যকর করার জন্য একটি প্যাকেজ রয়েছে। দেখুন এই কোড উদাহরণস্বরূপসিজিএল ব্যবহার করে অফসেট বহুভুজগুলি গণনা করতে ।

প্যাকেজ ম্যানুয়াল আপনি একটি ভাল কিভাবে এই কাঠামো এমনকি যদি আপনি CGAL ব্যবহার না করার যাচ্ছি গঠন করা বিন্দু শুরু দিই এবং গাণিতিক সংজ্ঞা ও বৈশিষ্ট্য সঙ্গে কাগজপত্র উল্লেখ রয়েছে উচিত:

সিজিএল ম্যানুয়াল: 2 ডি স্ট্রেইট কঙ্কাল এবং বহুভুজ অফসেটিং


11

এই ধরণের জিনিসের জন্য আমি সাধারণত জেটিএস ব্যবহার করি । প্রদর্শনের উদ্দেশ্যে আমি এই জেএসফিডেলটি তৈরি করেছি যা জেএসটিএস ( জেএসএসের জাভাস্ক্রিপ্ট পোর্ট) ব্যবহার করে। আপনাকে কেবল জেএসটিএস স্থানাঙ্কগুলিতে রূপান্তর করতে হবে:

function vectorCoordinates2JTS (polygon) {
  var coordinates = [];
  for (var i = 0; i < polygon.length; i++) {
    coordinates.push(new jsts.geom.Coordinate(polygon[i].x, polygon[i].y));
  }
  return coordinates;
}

ফলাফলটি এরকম কিছু:

এখানে চিত্র বর্ণনা লিখুন

অতিরিক্ত তথ্য : আমি সাধারণত কোনও মানচিত্রে (লিফলেট বা গুগল মানচিত্র সহ) বহুভুজগুলির উপর ব্যাসার্ধের সীমানা নির্ধারণের জন্য এই ধরণের স্ফীত / ডিফল্টিং (আমার উদ্দেশ্যে সামান্য পরিবর্তিত) ব্যবহার করি। আপনি কেবল (ল্যাট, এলএনজি) জোড়গুলিকে জেএসটিএস স্থানাঙ্কে রূপান্তর করেন এবং অন্য সমস্ত কিছু একই। উদাহরণ:

এখানে চিত্র বর্ণনা লিখুন


9

আপনি যা চান তা আমার কাছে মনে হচ্ছে:

  • একটি শীর্ষবিন্দু থেকে শুরু করে, সংলগ্ন প্রান্তের সাথে অ্যান্টি-ক্লকওয়াসের মুখোমুখি।
  • পুরানোটির d"বামে" দূরত্বে রাখা নতুন, সমান্তরাল প্রান্তটি প্রান্তটি প্রতিস্থাপন করুন ।
  • সমস্ত প্রান্তের জন্য পুনরাবৃত্তি করুন।
  • নতুন শীর্ষগুলি পেতে নতুন প্রান্তের ছেদগুলি সন্ধান করুন।
  • আপনি একটি ক্রস বহুভুজ হয়ে গিয়েছেন এবং এটি সম্পর্কে কী করবেন তা সিদ্ধান্ত নিন। সম্ভবত ক্রসিং-পয়েন্টে একটি নতুন ভার্টেক্স যুক্ত করুন এবং কিছু পুরানোগুলি থেকে পরিত্রাণ পান। আমি নিশ্চিত না যে এটি সনাক্ত করার জন্য আরও ভাল উপায় আছে কিনা কেবল প্রতিটি জোড়-সংলগ্ন প্রান্তের সাথে তুলনা করার জন্য যদি তাদের ছেদটি উভয় জোড়ের মাঝে ছেদ করে।

ফলস্বরূপ বহুভুজটি পুরান বহুভুজ থেকে শীর্ষে অবস্থিত "শীর্ষে" শীর্ষে অবস্থিত। একটি শীর্ষবিন্দুর কাছে, দূরত্বে পয়েন্টগুলির সেটd পুরাতন বহুভুজ থেকে , যেমন আপনি বলেছেন, বহুভুজ নয়, তাই বর্ণিত প্রয়োজনীয়তা পূরণ করা যায় না।

আমি জানি না যে এই অ্যালগরিদমের কোনও নাম আছে, ওয়েবে উদাহরণ কোড আছে, বা একটি কাল্পনিক অপ্টিমাইজেশন রয়েছে তবে আমি মনে করি এটি আপনাকে কী চায় তা বর্ণনা করে।


6

জিআইএসের বিশ্বে কেউ এই কাজের জন্য নেতিবাচক বাফারিং ব্যবহার করে: http://www-users.cs.umn.edu/~npramod/enc_pdf.pdf

JTS গ্রন্থাগার আপনার জন্য এমনটি করা উচিত নয়। বাফার অপারেশনের জন্য ডকুমেন্টেশন দেখুন: http://tsusiatsoftware.net/jts/javadoc/com/vividsolutions/jts/operation/buffer/package-summary.html

মোটামুটি ওভারভিউয়ের জন্য বিকাশকারী গাইডও দেখুন: http://www.vividsolutions.com/jts/bin/JTS%20 ডেভেলপার ১০০ গুইড.পিডিএফ


5

প্রতিটি লাইনের বিমানটিকে "ভিতরে" এবং "রূপরেখায়" বিভক্ত করা উচিত; আপনি সাধারণ অভ্যন্তরীণ-পদ্ধতি পদ্ধতি ব্যবহার করে এটি খুঁজে পেতে পারেন।

সমস্ত লাইন কিছু দূরত্বে বাইরের দিকে সরান।

প্রতিবেশী রেখাগুলির সমস্ত জুড়ি বিবেচনা করুন (রেখাগুলি, লাইন বিভাগ নেই), ছেদটি সন্ধান করুন। এগুলি হল নতুন ভার্টেক্স।

কোনও ছেদকৃত অংশগুলি সরিয়ে নতুন ভার্টেক্স পরিষ্কার করুন। - আমাদের এখানে কয়েকটি মামলা রয়েছে

(ক) মামলা 1:

 0--7  4--3
 |  |  |  |
 |  6--5  |
 |        |
 1--------2

আপনি যদি এটির ব্যয় করে থাকেন তবে আপনি এটি পেয়েছেন:

0----a----3
|    |    |
|    |    |
|    b    |
|         |
|         |
1---------2

7 এবং 4 ওভারল্যাপ .. যদি আপনি এটি দেখতে পান তবে আপনি এই পয়েন্টটি এবং এর মধ্যে সমস্ত পয়েন্ট সরিয়ে ফেলবেন।

(খ) কেস ২

 0--7  4--3
 |  |  |  |
 |  6--5  |
 |        |
 1--------2

যদি আপনি এটি দুটি দ্বারা ব্যয় করেন তবে আপনি এটি পেয়েছেন:

0----47----3
|    ||    |
|    ||    |
|    ||    |
|    56    |
|          |
|          |
|          |
1----------2

এটি সমাধানের জন্য, লাইনের প্রতিটি বিভাগের জন্য, আপনাকে এটি পরীক্ষা করতে হবে যে এটি পরের অংশগুলির সাথে ওভারল্যাপ হয়।

(গ) কেস ৩

       4--3
 0--X9 |  |
 |  78 |  |
 |  6--5  |
 |        |
 1--------2

এটি 1 এর ক্ষেত্রে আরও সাধারণ ঘটনা expend

(d) মামলা 4

কেস 3 হিসাবে একই, তবে দুটি দ্বারা ব্যয় করা।

প্রকৃতপক্ষে, আপনি যদি কেস 4 পরিচালনা করতে পারেন তবে অন্যান্য সমস্ত কেসগুলি কিছু লাইন বা ভার্টেক্সের ওভারল্যাপিংয়ের সাথে এটির কেবল বিশেষ কেস।

কেস। করার জন্য, আপনি ভার্টেক্সের একটি স্ট্যাক রেখেছেন .. আপনি যখন লাইনটি লাস্টার লাইন দিয়ে ওভারল্যাপিং পেয়েছেন তখন চাপ দিন, আপনি যখন লটারটি পাবেন তখন পপ করুন। - উত্তল-হালায় আপনি যা করেন ঠিক তেমনই।


আপনি কি এর জন্য কোনও psedo অ্যালগরিদম জানেন?
EmptyData

5

এখানে বিকল্প সমাধান রয়েছে, দেখুন আপনি এটি আরও ভাল পছন্দ করেন কিনা।

  1. একটি ত্রিভুজাকরণ করুন , এটি ডেলাউন হতে হবে না - কোনও ত্রিভুজাকরণ হবে।

  2. প্রতিটি ত্রিভুজ স্ফীত - এটি তুচ্ছ হতে হবে। আপনি যদি ত্রিভুজটি অ্যান্টি-ক্লকওয়াইজ ক্রমে সংরক্ষণ করেন, কেবল লাইনগুলি ডান-হাতের দিকে সরান এবং ছেদ করুন।

  3. একটি পরিবর্তিত ওয়েইলার-অ্যাথার্টন ক্লিপিং অ্যালগরিদম ব্যবহার করে তাদের মার্জ করুন


আপনি ত্রিভুজগুলি ঠিক কীভাবে ফুটিয়ে তুলবেন? আপনার আউটপুট কি ত্রিভুজানের উপর নির্ভর করে? বহুভুজটি সঙ্কুচিত করার সময় আপনি এই পদ্ধতির সাহায্যে কেস পরিচালনা করতে পারবেন?
বালিন্ট.মিক্লোস

আপনি কি নিশ্চিত যে এই পদ্ধতিটি বহুভুজ মুদ্রাস্ফীতিটির জন্য সত্যই কাজ করে? বহুভুজের অবতল অংশগুলিকে এতদূর স্ফীত করা হয় তখন কিছু ঘটে যা কিছু অংশকে খণ্ডন করতে হয়। জিনিসটি হ'ল: যখন আপনি দেখেন পলির পরে ত্রিভুজগুলির কী ঘটে। মূল্যস্ফীতি, ত্রিভুজগুলি স্ফীত হয় না, পরিবর্তে তারা বিকৃত হয়।
ইগোর ব্রেজক

1
ইগর: ওয়েইলার-অ্যাথার্টন ক্লিপিং অ্যালগরিদম "কিছু অংশকে বিছিন্ন করতে হবে" কেসটি সঠিকভাবে পরিচালনা করতে পারে;
জে -16 এসডিআইজেড

@ ব্যালিন্ট: একটি ত্রিভুজকে স্ফীত করা তুচ্ছ: আপনি যদি যথাযথভাবে উল্লম্বটি সঞ্চয় করেন তবে ডান হাতের দিকটি সর্বদা "বাহ্যিক" থাকে। এই লাইন বিভাগটিকে কেবল রেখার মতো আচরণ করুন, তাদের বাহ্যিক দিকে সরান, এবং মিথস্ক্রিয়াটি সন্ধান করুন - এগুলিই নতুন ভার্টেক্স। ত্রিভুজনের জন্য নিজেই, দ্বিতীয় চিন্তায়, ডেলাউন ট্রায়াঙ্গুলেশন আরও ভাল ফলাফল দিতে পারে।
জে -16 এসডিআইজেড

4
আমি মনে করি এই পদ্ধতিটি সহজেই খারাপ ফলাফল দিতে পারে। এমনকি ত্রিভুজযুক্ত হিসাবে ত্রিভুজযুক্ত হিসাবে একটি সাধারণ উদাহরণ। দুটি বর্ধিত ত্রিভুজগুলির জন্য আপনি পাবেন: img200.imageshack.us/img200/2640/counterm.png এবং তাদের ইউনিয়ন আপনি যা খুঁজছেন ঠিক তা নয়। এই পদ্ধতিটি কীভাবে কার্যকর তা আমি দেখতে পাচ্ছি না।
ব্যালিন্ট.মিক্লোস

3

ক্লিপার লাইব্রেরির জন্য অ্যাঙ্গাস জনসনকে অনেক ধন্যবাদ। Http://www.angusj.com/delphi/clipper.php#code এ ক্লিপার হোমপেজে ক্লিপিং স্টাফগুলি করার জন্য ভাল কোড স্যাম্পল রয়েছে তবে আমি বহুভুজ অফসেট করার জন্য উদাহরণ পাইনি। সুতরাং আমি ভেবেছিলাম যে আমার কোডটি পোস্ট করা হলে এটি কারও পক্ষে কার্যকর হবে:

    public static List<Point> GetOffsetPolygon(List<Point> originalPath, double offset)
    {
        List<Point> resultOffsetPath = new List<Point>();

        List<ClipperLib.IntPoint> polygon = new List<ClipperLib.IntPoint>();
        foreach (var point in originalPath)
        {
            polygon.Add(new ClipperLib.IntPoint(point.X, point.Y));
        }

        ClipperLib.ClipperOffset co = new ClipperLib.ClipperOffset();
        co.AddPath(polygon, ClipperLib.JoinType.jtRound, ClipperLib.EndType.etClosedPolygon);

        List<List<ClipperLib.IntPoint>> solution = new List<List<ClipperLib.IntPoint>>();
        co.Execute(ref solution, offset);

        foreach (var offsetPath in solution)
        {
            foreach (var offsetPathPoint in offsetPath)
            {
                resultOffsetPath.Add(new Point(Convert.ToInt32(offsetPathPoint.X), Convert.ToInt32(offsetPathPoint.Y)));
            }
        }

        return resultOffsetPath;
    }

2

আরও একটি বিকল্প বুস্ট :: বহুভুজ ব্যবহার করা - ডকুমেন্টেশনের কিছুটা অভাব রয়েছে তবে আপনাকে খুঁজে পাওয়া উচিত যে পদ্ধতিগুলি resizeএবং bloatওভারলোডেড +=অপারেটর যা আসলে বাফারিং বাস্তবায়ন করে। সুতরাং উদাহরণস্বরূপ বহুভুজের (বা বহুভুজের একটি সেট) আকারের কিছু মান বাড়ানো যতটা সহজ হতে পারে:

poly += 2; // buffer polygon by 2

আমি বুঝতে পারছি না যে আপনি কীভাবে বর্ধন :: বহুভুজ দিয়ে কিছু করার কথা বলছেন কেননা এটি কেবল পূর্ণসংখ্যার স্থানাঙ্ককে সমর্থন করে? বলুন আমার একটি সাধারণ (ভাসমান পয়েন্ট স্থানাঙ্ক) বহুভুজ রয়েছে এবং আমি এটি প্রসারিত করতে চাই - আমি কী করব?
ডেভিড ডরিয়া

@ ডেভিডডোরিয়া: এটি আপনার স্থানাঙ্কগুলির জন্য আপনার কী রেজোলিউশন / নির্ভুলতা এবং গতিশীল পরিসর প্রয়োজন তার উপর নির্ভর করে তবে আপনি একটি উপযুক্ত স্কেলিং ফ্যাক্টর সহ 32 বিট বা 64 বিট ইন্ট ব্যবহার করতে পারেন। ঘটনাক্রমে আমি অতীতে দুর্ঘটনাক্রমে বহুত্বের সমন্বয়গুলি সহ বহুভোজন ব্যবহার করেছি এবং এটি ঠিক আছে বলে মনে হচ্ছে, তবে এটি 100% শক্তিশালী নাও হতে পারে (ডক্সরা এর বিরুদ্ধে সতর্ক করে!)!
পল আর

আমি "বেশিরভাগ সময় এটি কাজ করবে" :) এর সাথে আমি ঠিক আছি। আমি এটি চেষ্টা করেছি: ideone.com/XbZeBf কিন্তু এটি সংকলন করে না - কোন চিন্তা?
ডেভিড ডরিয়া 15

আমি স্পষ্টত ভুল কিছু দেখতে পাচ্ছি না, তবে আমার ক্ষেত্রে আমি রেকটিলাইনার স্পেশালাইজেশন (বহুভুজ_৯০) ব্যবহার করছিলাম তাই আমি জানি না যে এটি কোনও পার্থক্য করে কিনা। যদিও এই নিয়ে আমি প্রায় খেলেছি কয়েক বছর হয়ে গেছে।
পল আর

ঠিক আছে - এটি এখন আমার কাছে ফিরে আসছে - আপনি কেবলমাত্র +=বহুভুজ সেট দিয়ে ব্যবহার করতে পারেন , পৃথক বহুভুজ দিয়ে নয়। বহুভুজগুলির একটি std :: ভেক্টর দিয়ে এটি ব্যবহার করে দেখুন। (অবশ্যই ভেক্টরের একটি মাত্র বহুভুজ রয়েছে))
পল আর

1

@ জোশ'ব্রায়ানের পরামর্শের ভিত্তিতে, এটি উপস্থিত rGeosরয়েছে যে Rভাষার প্যাকেজটি এই অ্যালগরিদমকে প্রয়োগ করে। দেখুন rGeos::gBuffer


0

এমন বেশ কয়েকটি গ্রন্থাগার রয়েছে যা ব্যবহার করতে পারেন (3 ডি ডেটার সেটগুলির জন্যও ব্যবহারযোগ্য)।

  1. https://github.com/otherlab/openmesh
  2. https://github.com/alecjacobson/nested_cages
  3. http://homepage.tudelft.nl/h05k3/Projects/MeshThickeningProj.htm

অ্যালগরিদমগুলি আরও বিশদে বোঝার জন্য এই লাইব্রেরির জন্য সংশ্লিষ্ট প্রকাশনাগুলিও খুঁজে পেতে পারেন।

সর্বশেষেরটির সর্বনিম্ন নির্ভরতা রয়েছে এবং এটি স্বয়ংসম্পূর্ণ এবং .obj ফাইলগুলিতে পড়তে পারে।

শুভেচ্ছা, স্টিফান


0

আমি সাধারণ জ্যামিতি ব্যবহার করি: ভেক্টর এবং / বা ত্রিকোণমিতি

  1. প্রতিটি কোণে মধ্য ভেক্টর এবং মাঝের কোণটি সন্ধান করুন। মিড ভেক্টরটি কোণার প্রান্তগুলি দ্বারা সংজ্ঞায়িত দুটি ইউনিট ভেক্টরের গাণিতিক গড়। মিড অ্যাঙ্গেল প্রান্ত দ্বারা সংজ্ঞায়িত কোণের অর্ধেক।

  2. আপনি যদি প্রতিটি প্রান্ত থেকে d এর পরিমাণে আপনার বহুভুজকে প্রসারিত (বা চুক্তি) করতে চান; নতুন কোণার পয়েন্ট পেতে আপনার d (sin) পরিমাণে (মাঝখানে) বের হওয়া উচিত।

  3. সমস্ত কোণে এটি পুনরাবৃত্তি করুন

*** আপনার দিক সম্পর্কে সতর্ক থাকুন। কোণার নির্ধারণ করে তিনটি পয়েন্ট ব্যবহার করে কাউন্টারক্লকওয়িজ পরীক্ষা করুন; কোন উপায়টি বাইরে আছে তা খুঁজে বের করতে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.