Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

köşe kordinatları verilen üçgenin içinde mi dışında mı


BoDrUmLu

Öne çıkan mesajlar


float GLWidget::calculateTriArea(QPointF p1, QPointF p2, QPointF p3){
float areadd = (1/2 *(fabsf( p1.x()*(p2.y()-p3.y()) - p1.y()*(p2.x() - p3.x())+ (p2.x()*p3.y())-(p3.x()*p2.y()) )));
return areadd;
}



QPointF bir(2,0);
QPointF iki(0,2);
QPointF uc(0,0);
calculateTriArea(bir,iki,uc);


Sıfır donuyo hep delircem ya . Alan nasıl sıfır olur
Link to comment
Sosyal ağlarda paylaş

ABC üçgenini al A-B-C ve A-C-B açılarını bul. Daha sonra Nokta-B-C ve Nokta-C-B açılarını bul.

Eğer Nokta-B-C<=A-B-C && Nokta-C-B <= A-C-B ise nokta üçgenin içindedir. Yanlız bunu yaparken atan2 gibi açı dönüş yönünü gözeten fonksiyonlar kullanman lazım yoksa üçgenin BC kenarındaki karşısındaki eş üçgeni içersindeki noktaları da senin üçgenin içindeymiş gibi sayar. Atan2 kullanmak istemiyorum dersen alternatif olarak başta şöyle bir koşul getirebilirsin

mesafe (nokta-A) < mesafe(CBkenarı-A)

yani noktanın A'ya uzaklığı CB kenarından A'ya uzanan yükseklikten kısa olmalı (söylemeye gerek yok tabi mutlak değerleri).

Bütün bunları da en temel vektör cebiri ile yapabilirsin :p


Daha yavaş olacağını düşündüğüm ve uzunluklara bağlı metod:

üçgenin her kenar için üç tane yüksekliğini bulursun sonra da noktanın her kenara olan uzaklığın o yüksekliklerden kısa olup olmadığına bakarsın. eğer birinden bile büyükse nokta üçgenin içinde değildir, eğer üçünden de kısaysa veya eşitse üçgenin içindedir.
Link to comment
Sosyal ağlarda paylaş

uyumaya çalışırken aklıma bi fikir geldi yazayım

ABC üçgeni var ya, AB BC CA doğrularının eğimlerinden yola çıkarak o noktadan geçen üç farklı doğru geçir.


(|AB| diye yazılıyordu doğru parçaları yanlış hatırlamıyorsam da geçin orasını)

görüldüğü gibi içindeyse 3 doğru da kenarlardan biriyle kesişiyor.

ama dışındaysa ikisi kesişiyor, bir kenara paralel olan doğru hiç kesişmiyor.

o kenarları da birer doğruya çevir (atıyorum A(1,1) B(4,10) ise y=3x gibi) , k1 k2 k3 olsun onlar da.

ardından d1 d2 ve d3 ü sırayla k1 k2 k3 ile ortak çözümü var mı diye karşılaştır.

mesela k1:y=3x e tekabül edecek olan kenara paralel d1:y-1=3x doğrusu oluştu, k2 ve k3 ile ortak çözümü olmasına rağmen y=3x ile ortak çözümü olmadığı için o nokta dışarıdadır, hem ne tarafta olduğunu da belirleyebilirsin...


...diye umuyorum.

Link to comment
Sosyal ağlarda paylaş

ha bir de şeyi unutmuşum, mesela üçğenin bir köşesinin baktığı kenara paralel olan daha uzaktaki bir doğrunun içindeyse üç doğru da kesişmiyor. bunun gibi bazı "özel" durumlar oluyor benim düşündüğüm yönteme göre ama onları da if döngüleriyle halledersin sanırım.
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...