Vayler-Athertonni kesish algoritmi - Weiler–Atherton clipping algorithm

The Vayler – Atherton ko'pburchakqirqish algoritm. Kabi sohalarda qo'llaniladi kompyuter grafikasi va ko'pburchaklarni kesish zarur bo'lgan o'yinlarni rivojlantirish. Bu a-ni qirqishga imkon beradi mavzu yoki nomzod ko'pburchagi o'zboshimchalik bilan shakllangan kesish ko'pburchagi / maydon / mintaqa.

Odatda bu faqat amal qiladi 2D. Biroq, u ishlatilishi mumkin 3D ko'rinadigan sirtni aniqlash orqali va samaradorlikni oshirish orqali Z buyurtma berish.[1]

Old shartlar

Vayler-Atherton algoritmi bilan bo'linish

Ko'pburchakka qo'llanilishidan oldin algoritm bir nechta old shartlarni bajarishni talab qiladi:

  • Nomzod ko'pburchaklar soat yo'nalishi bo'yicha yo'naltirilishi kerak.
  • Nomzod ko'pburchaklar o'zaro kesishmasligi kerak (ya'ni, qayta ishtirok etuvchi).
  • Algoritm teshiklarni qo'llab-quvvatlashi mumkin (soat millariga teskari yo'naltirilgan ko'pburchaklar kabi, ularning ota-ona ko'pburchagi ichida), lekin qaysi ko'pburchaklar teshik ekanligini aniqlash uchun qo'shimcha algoritmlarni talab qiladi, shundan so'ng ko'pburchaklarni birlashtirish algoritmning bir varianti yordamida amalga oshirilishi mumkin.

Algoritm

A ko'pburchak qirqish hududi sifatida va B ko'pburchak kesiladigan mavzu ko'pburchak sifatida berilgan bo'lsa, algoritm quyidagi bosqichlardan iborat:

  1. Kesish mintaqasi A ko'pburchagi va B predmeti bo'lgan ko'pburchakning tepalarini sanab o'ting.
  2. B mavzusidagi ko'pburchakning sanab o'tilgan uchlarini A qirqish hududining ichida yoki tashqarisida belgilang.
  3. Barcha ko'pburchak chorrahalarni toping va ularni ikkala ro'yxatga kiriting, ularni kesishmalardagi ro'yxatlarni bog'lang.
  4. "Kiruvchi" chorrahalar ro'yxatini yarating - kesishgan joydan B mavzusidagi ko'pburchakning keyingi tepaligigacha bo'lgan vektor kesish hududida boshlanadigan kesishmalar.
  5. Boshlang'ich pozitsiyasi topilmaguncha bog'langan ro'yxatlar atrofida har bir kesishmani soat yo'nalishi bo'yicha kuzatib boring.

Agar kesishish bo'lmasa, uchta shartdan biri to'g'ri bo'lishi kerak:

  1. A B ichida - qirqish uchun A, birlashish uchun B qaytaring.
  2. B A ichida - Bni qirqish uchun, A ni birlashtirish uchun qaytaring.
  3. A va B bir-biriga mos kelmaydi - None-ni qirqish uchun yoki A & B-ni birlashtirish uchun qaytaring.

Xulosa

Bir yoki bir nechta konkav ko'pburchaklari bir nechta kesishgan ko'pburchak hosil qilishi mumkin. Qavariq ko'pburchaklar faqat bitta kesishgan ko'pburchakka ega bo'ladi.

Xuddi shu algoritm ikkita ko'pburchakni kirish joyidan emas, balki chiqib ketish chorrahalaridan boshlab birlashtirish uchun ishlatilishi mumkin. Biroq, bu soat miliga teskari teshiklarni hosil qilishi mumkin.

Ba'zi ko'pburchak birikmalarini hal qilish qiyin bo'lishi mumkin, ayniqsa teshiklarga ruxsat berilganda.

Boshqa ko'pburchakning chetiga juda yaqin nuqtalar barcha kesishmalar topilgandan va tekshirilgandan so'ng ularning holati tasdiqlanguniga qadar ikkalasi ham tashqarida deb hisoblanishi mumkin; ammo, bu murakkablikni oshiradi.

Ushbu yorliqning tezligini oshirish va undan keyin davom etmaslik uchun turli xil strategiyalardan foydalanish mumkin. Ko'pburchaklar chekka bo'lgan joyda ehtiyot bo'lish kerak bo'ladi.

Shuningdek qarang

Adabiyotlar

  1. ^ Fuli, Jeyms, Andris van Dam, Stiven Fayner va Jon Xyuz. "Kompyuter grafikasi: printsip va amaliyot". Addison-Uesli nashriyot kompaniyasi. Reading, Massachusets: 1987. 689-693 betlar