Basit Aptal Dönüşüm Hunisi Algoritması nasıl çalışır?


Yanıtlar:


18

Algoritma, daha önce bulduğunuz bir yolla başlar, bu durumda üçgenlerin bir listesi:

yol

Mikko'nun blog gönderisinin altındaki kod, yolun çokgenleri arasındaki çizgi parçalarını temsil eden çizgi parçalarının bir listesi olan portals dizisini oluşturur. Bunlar, düzleştirilmiş yolun geçmesi gereken "portallar" dır (veya "çokgen kenar orta noktalarını izleyelim" den çokgen kenarlar). Portallar listesinin, başlangıç ​​ve hedef noktalarında yozlaşmış çizgi parçalarıyla başladığını ve biteceğini unutmayın.

Bu portal listesi, resimlerinde sarı noktalı çizgi parçaları olarak gösterilir.

portalları

Algoritma, geniş bir huni ile başlar ve huniyi (AD) sıktığı sürece, huni taraflarını portal yan noktaları (çizgi segmentlerinin uç noktaları) boyunca tekrar tekrar ileriye doğru hareket ettirerek ilerler.

algoritması

Bu, ileriye doğru yapılan her hareketin huni kenarlarını içe doğru hareket ettirmesi gerektiği anlamına gelir; bu , eski tarafı ve potansiyel yeni tarafı temsil eden vektörlerin çapraz çarpımı ile kontrol edilebilir ( aşağıdaki resimde P × Q ; triarea2Mikko koduna da bakınız ). Bir taraf için ileriye doğru bir hareket huniyi sıkmazsa, o tarafı portalların mevcut yinelemesi için güncellemeyiz (E).

içe hareket etmek

Ele alınması gereken diğer bir durum, huninin bir çizgi segmentine yozlaşmasıdır. Bu algoritma, kontroller için hesap için iki yandan biri, yine huni apeks ve sırasıyla sağ ve sol yan uç noktaları ile (yapılan vektörler bu kez çapraz ürün kullanılarak "yanlış" tarafında ise R, X S bölgesindeki aşağıdaki resim).

dejenere huni

Bu durumda, huni tepesindeki vektör ve doğru yan uç noktasından düzeltilmiş yola ( yukarıdaki resimde R ) eklenir ve algoritma, yeni apeks (FG) olarak bitiş noktasıyla yeniden başlatılır, Tabii ki, hedef noktası ise.


2
@Rolfcore Yanıt açık mı? Değilse, hangi parçaların iyileştirilmesi gerekiyor?
Eric

Bence sadece cevabı kabul etmeyi unuttum, bu çok iyi ve seri olarak iptal edilmeli ^ ^.
GameDeveloper

Belki, tonly gotcha, F hareketinde tekrar sıfırdan başlamadığımızı söylemezsiniz, çünkü güneyi işaret eden sıkı bir köşenin en sıkı bir huniyi mümkün kılma şansı vardır, bu yüzden bot taraflarının aslında başarısız olmasını beklemek zorundayız. sadece bir tane değil, test edin. Yani bunu F yerine G'de yapıyoruz .. yine de iyi açıklama :)
GameDeveloper
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.