Merhabalar;
Uzun zamandır üzerinde çalıştığım bir projenin son modülünde takıldım..
Soruya geçecek olursak,
Koordinatları verilen bir çokgenimiz var. Aynı zamanda ayrı bir nokta olan koordinatımız var.
Verilen nokta koordinat çokgenin içinde mi yoksa dışında mı kaldığını bulan bir fonksiyona ihtiyaç duymaktayım..
Ek'te bulunan resimde ki harflerin koordinatları aşağıda ki gibidir.
A ) X : -531601.7377 Y : -4485890.4722
B ) X : -530325.0695 Y : -4485890.4722
C ) X : -530325.0695 Y : -4487140.4174
D ) X : -531601.7377 Y : -4487140.4174
X ) X : -531132.7575 Y : -4486391.7523
Koordinatlar Negatif yada Pozitif olabiliyor.. Örnekteki bir dörtgen olsa da daha fazla noktalar halinde olabiliyor..
Şimdi en can alıcı noktaya geliyorum..
X Noktası bu koordinatlar içinde mi yoksa dışında mı ?
Teşekkürler..
Koordinatları verilen Çokgenin Merkez Noktasını Bulmak Hk.
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Koordinatları verilen Çokgenin Merkez Noktasını Bulmak Hk.
- Dosya ekleri
-
- MAP.png (2.52 KiB) 2272 kere görüntülendi
amatör küme programcı 

- sadettinpolat
- Moderator
- Mesajlar: 2131
- Kayıt: 07 Ara 2003 02:51
- Konum: Ankara
- İletişim:
Re: Koordinatları verilen Çokgenin Merkez Noktasını Bulmak H
http://www.efg2.com/Lab/Graphics/Basketball.htm burada ise yarar birseyler bulabilirsin gibi.
atilan basketin 2 sayilik mi 3 sayilik mi oldugu hesaplanmis.
atilan basketin 2 sayilik mi 3 sayilik mi oldugu hesaplanmis.
Re: Koordinatları verilen Çokgenin Merkez Noktasını Bulmak H
Merhaba hocam,
Cevap için teşekkür ederim..
Şaban (Şaban Şahin AKMAN) hocam da Skype üzerinde bir link paylaştı.. Şuan için doğru cevap alıyorum fakat test esnasında eğer bir yanlış sonuç döndürürse sizin verdiğiniz link üzerinden testlere devam edicem..
Fonksiyon Aşağıda ki gibidir..
Cevap için teşekkür ederim..
Şaban (Şaban Şahin AKMAN) hocam da Skype üzerinde bir link paylaştı.. Şuan için doğru cevap alıyorum fakat test esnasında eğer bir yanlış sonuç döndürürse sizin verdiğiniz link üzerinden testlere devam edicem..
Fonksiyon Aşağıda ki gibidir..
Kod: Tümünü seç
type
TPointReal = record
X, Y: Real;
end;
function PtInPoly(const Points: Array of TPointReal; X,Y: Real):Boolean;
var Count, K, J : Integer;
begin
Result := False;
Count := Length(Points) ;
J := Count-1;
for K := 0 to Count-1 do begin
if ((Points[K].Y <=Y) and (Y < Points[J].Y)) or
((Points[J].Y <=Y) and (Y < Points[K].Y)) then
begin
if (x < (Points[j].X - Points[K].X) * (y - Points[K].Y) /
(Points[j].Y - Points[K].Y) + Points[K].X) then
Result := not Result;
end;
J := K;
end;
end;
amatör küme programcı 

Re: Koordinatları verilen Çokgenin Merkez Noktasını Bulmak H
Zamanında çok düşünmüştük böyle şeyler üzerine. kusura bakmayın kod yazamam. (bu tür grafik kodlamayı bırakalı 10 yıldan fazla oldu) ama kesin kontrol eden mantığı anlatabilirim. x noktanızdan geçen x ve y ekseninde sonsuza giden yatay ve düşey birbirine dik ( + şeklinde ) 2 çizgi olduğunu düşünün. eğer bu 2 doğruyu solda, sağda, yukarıda ve aşağıda sizin kontrol edeceğiniz diğer doğrular kesiyor ise nokta o çokgenin içinde demektir. ama bir veya daha çok tarafta kesmiyorsa o çokgenin dışındasınızdır.
Re: Koordinatları verilen Çokgenin Merkez Noktasını Bulmak H
Güzel mantık. Her iki doğrunun kesiyor olması gerekiyor ancak birisi de her iki uçta verilen çokgen koordinatlarıyla kesişiyorsa nokta içerdedir denmez mi?cecihan yazdı:Zamanında çok düşünmüştük böyle şeyler üzerine. kusura bakmayın kod yazamam. (bu tür grafik kodlamayı bırakalı 10 yıldan fazla oldu) ama kesin kontrol eden mantığı anlatabilirim. x noktanızdan geçen x ve y ekseninde sonsuza giden yatay ve düşey birbirine dik ( + şeklinde ) 2 çizgi olduğunu düşünün. eğer bu 2 doğruyu solda, sağda, yukarıda ve aşağıda sizin kontrol edeceğiniz diğer doğrular kesiyor ise nokta o çokgenin içinde demektir. ama bir veya daha çok tarafta kesmiyorsa o çokgenin dışındasınızdır.
Yani nokta içerdeyse zaten kontrol edilen her açıdaki her doğrunun iki ucu da kesişecektir. O halde bir tek doğru kontrol edilse yetmez mi?
... Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!
Mustafa Kemal Atatürk...
Mustafa Kemal Atatürk...
Re: Koordinatları verilen Çokgenin Merkez Noktasını Bulmak H
CreatePolygonRgn & PtInRegion'da faydalı olabilir 
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
http://msdn.microsoft.com/en-us/library ... 85%29.aspx

http://msdn.microsoft.com/en-us/library ... 85%29.aspx
http://msdn.microsoft.com/en-us/library ... 85%29.aspx