Sistemimizde, bazı kaynak hatlarını (düşük hassasiyetle) referans hatlarına (yüksek hassasiyetle) taşımak istediğimiz gereksinimler vardır. Aşağıdaki resimler normal kullanım durumlarını verir. Kırmızı olan bir kaynak hattı ve mavi olan bir referans hattıdır.
Bu durumda, kaynak hattı kısmen hareket ettirilecek ve sonuç yeşil çizginin gösterdiği gibi olacaktır:
Kaynak hattının tamamen taşınması gereken durumlar vardır.
Sonuç:
Şu anda çözümümüz, kaynak hattının kafa / bitiş noktasını referans çizgisine yansıtmak ve bunun tersi, daha sonra kaynak ve referans çizgisinde yansıtılan noktaları bulmaktır. Bu öngörülen noktalarla, kaynak ve referans hattının gerekli kısmını çıkarabilir ve sonra bunları yeni bir tane halinde birleştirebiliriz.
Bu çoğu durumda işe yarar, ancak bu yöntemin çalışmadığı durumlar da vardır. Özellikle, çizgiden herhangi biri "C" benzeri bir şekle sahipse veya kafa noktası bitiş noktasına çok yakın olduğunda. Sonraki iki resim senaryoyu veriyor.
Algoritmamı uygulayarak sonucu elde ederiz:
Bir şekilde anlaşılabilir, çünkü mevcut algoritma sadece yansıtılan noktaları bulur ve satırları çıkarır.
Beklediğimiz şey şudur:
Bunu yapmak için daha sağlam bir algoritmaya ihtiyacım olan şey, böylece önceki gibi özel durumları da ele alabilir. Bir çizgiden diğerine her noktayı yansıtmaya ve yansıtılan çizginin baş / bitiş noktasına en yakın olan iki yansıtılan noktayı bulmaya çalıştım, ancak şans yoktu. Yine de beklenmedik sonuçlar veren vakalar bulabiliyorum.
Daha önce benzer sorunlarla karşılaşan biri var mı? Aynı işi yapabilen bir yazılım veya kütüphane olması da harika olurdu. Herhangi bir cevap takdir edilecektir.