CBS uygulamalarında doğru kesişimleri
Uzun zamandır tezimin raster kısmını bitirmiş, vektör kısmı üstünde çalışmaktaydım. 3 haftadır da vektör sınıfındaki problemi bulmak için uğraşıyordum.
Neyse ki dün gece sorunu buldum. Sorun vektörlerin doğru-doğru kesişimini bulan fonksiyondaymış. Fonksiyon görüntü dışında olan noktaları da kesişim gibi gösterip negatif değerler ile geri döndürüyormuş. Pocket PC’de hata ayıklamak normal masaüstüne göre daha zor olduğu için ancak bulabildim sorunu. Doğru-doğru kesişim fonksiyonunu buraya da ekleyeceğim ki ilerde kullanmak isteyen benim kadar zorlanmasın
Doğru-Doğru kesişim fonksiyonu (C++)
Not: Bu fonksiyon geriye nokta (POINT) döndürür. Nokta (-1,-1) ise nokta kesişmiyor demektir.
—————————————————————————————————
POINT CDeneme2View::FindPointIntersectionY(POINT p1, POINT p2, POINT p3, POINT p4)
{
POINT fp;
float ua_t, ub_t, u_b;
ua_t = (p4.x - p3.x) * (p1.y - p3.y) - (p4.y - p3.y) * (p1.x - p3.x);
ub_t = (p2.x - p1.x) * (p1.y - p3.y) - (p2.y - p1.y) * (p1.x - p3.x);
u_b = (p4.y - p3.y) * (p2.x - p1.x) - (p4.x - p3.x) * (p2.y - p1.y);
if ( u_b != 0 ) {
float ua = ua_t / u_b;
float ub = ub_t / u_b;
if ( 0 <= ua && ua <= 1 && 0 <= ub && ub <= 1 ) {
fp.x = p1.x + ua * (p2.x - p1.x);
fp.y = p1.y + ua * (p2.y - p1.y);
} else {
fp.x = -1;
fp.y = -1;
}
}
else {
if ( ua_t == 0 || ub_t == 0 ) {
fp.x = -1;
fp.y = -1;
}
else {
fp.x = -1;
fp.y = -1;
}
}
return fp;
}
Bu yazı ile ilgili rastgele seçilmiş 10 yazı :
- Google PicasaWeb'de Güncellemeler
- TurkSat 1-C nerde?
- ESRI UC 2007 ve ArcGIS Server 9.3
- MapGuide Enterprise çıktı
- Türkiye Haritaları yavaş yavaş piyasaya çıkıyor.
- X-Men III sinemada, Mutantlar nerede?
- Uzun zaman sonra...
- Clamav 0.88.2 güncellemesi
- Autodesk Civil 3D 2007 ve Google Earth
- Oracle Spatial Shape dosyası problemi





