Çizim İşlemleri İçin Bir Algoritma Sorusu
-
Merhaba,
Kendimi c#'ta geliştirmek için bir uygulama yapıyorum. Ekrana farklı geometriler çizdiriyorum. Bu geometrilerin bazıları temas halinde. Temas eden Line'lari bir liste içine atmak istiyorum. Siz olsanız nasıl bir yöntem izlerdiniz. Pointler point sınıfından türetilmiştir. X ve Y kordinatları olduğunu hatırlatırım.
Örnek olarak
p1-p3 noktaları arasındaki line ile p2-p3 arasındaki line temas halinde.
Saygılarımla.
-
savunma sanayi mi hocam?
-
-
oyunlardaki ya da fizik simülasyonlarında çarpışma algılama nasıl yapılır hakikaten?
-
ltcelik bunu yazdı
oyunlardaki ya da fizik simülasyonlarında çarpışma algılama nasıl yapılır hakikaten?
Collision detection olarak aratabilirsin hocam. Benim aradığım sadece üst üste binen çizgileri kestirmek. Basit bir yöntemim var ama bazen arkadaşların daha yenilikçi yaklaşımları olabiliyor.
-
Normalde iki doğrunun kesişip kesişmedigi doğru denklemleri ortak çözülerek bulunur.
-
Hocam cizimi direk kendin mi yaptiriyorsun bu tarz işler için kullanılan cizim componenlerinden mi faydalaniyorsun ?
cizim componenti kullaniyorsan bir eventlarina vs bak. onHit gibi bir sey vardi benim zamaninda kullandiğim bir componente.
Eğer yok ise bir foreach ile donerek objenin X ve Ysi + objenin size'i 2. bir objenin x,y+size scalasini içeriyor mu diye bakabilirsin.
-
foreach intersect.koordinatlisteleri
-
iki doğrunun denklemini çözdürüp, o noktalar arasında kesişim var mı yok mu diye baktırabilirsin.
-
@rakkoc
Teşekkürler Recep abi. Drawing sınıfı ile kendim çizdiriyorum. Önerini deneyeceğim.
@ComputerWolf,@NoktaliVirgul
Teşekkürler. Önerilerinize bakacağım.
-
cisimlerin katı gibi davranıyorsa yani birbirlerinin içinden geçmiyorsa iş biraz hafifler.. cisimlerin paketleme boyutu etrafındaki cisimlerle çakışmayı araştırırsın..
çakışmanın 1.şartı doğru denklemlerin aynı (parametrelerinin ,eğimlerinin eşit y= mx + c deki m ve c lerinin ) eşit olması
ve küçük Xmax değerli doğru parçasının [ gerideki, orijine daha yakın olan doğru parçasınının ucu ] büyük x değeri diğer doğru parçasınının en küçük x değerineden büyük olmasıdır.. (şimdi uydurdum )
max Xa - min Xb > 0 ise çakışma vardır
= 0 ise nokta teması var
< 0 ise aynı doğrultuda fakat çakışma yok...
Dik doğrular için 0 a bölme hatasına dikkat et ..bayrak dik x max min yerine y max min de yazılabilir pekala..
Ama hissiyatım ağır işlerde matirslerin daha kullanışlı
olabileceği yönünde