Noktanın, İki Noktası Verilen Doğruya Uzaklığı

İletişim Bilgileri
Rasbian'a Paket Yüklerken SSL hatası

Size faydalı olduysa, sosyal medyada paylaşarak bize destek olun. Teşekkürler.

Proje Fotoğrafı:

Açıklama:

C++ dilinde opencv ile şerit takip programı yapıyordum, programı hazırlarken bir noktanın, iki noktası verilen doğruya uzaklığı kodu gerekti.

Böyle bir formülü veya kodu internette bulamadım. Bende İki noktası verilen bir doğrunun ax+by+c=0 şeklinde denklemini daha sonra bu doğrununda (k,l) noktasına olan uzaklığını bazı formüllerle hesapladım.

Program Kodu:

#include <iostream>

using namespace std;

float* noktadanDenklemOlustur(int x1, int y1, int x2, int y2)
{
	float katsayilar[3]; //üç elemanlı bir dizi, ax+by+c=0 denklemindeki  a,b,c değerleri

	//iki noktası bilinen doğrunun, ax+by+c=0 şeklinde denklemi bulundu 
	float m = float(y2 - y1) / float(x2 - x1); //eğim
	//cout << "m=" << m << endl;

	katsayilar[0] = -m; //a
	//cout << "a=" << katsayilar[0] << endl;

	katsayilar[1] = 1; //b
	//cout << "b=" << katsayilar[1] << endl;

	//y-y1=m(x-x1) denklemindeki tüm ifadeler sola atılıp c ifadesi belirleniyor
	//y-y1=mx-mx1
	//y-mx-y1+mx1=0
	//c=-y1+mx1
	katsayilar[2] = -y1 + m*x1; //c
	//cout << "c=" << katsayilar[2] << endl;

	//cout << katsayilar[0] << "x+" <<katsayilar[1] << "y+" << katsayilar[2] << "=0" << endl;
	return katsayilar;
}

float noktaninDogruyaUzakligi(int k, int l, float a, float b, float c) // (x0,y0) noktasının ax+by+c=0 doğrusuna uzaklığı
{
	float d; // (k,l) noktasının ax+by+c=0 doğrusuna uzaklığı
			 //d=|ak+bl+c|/karekök(a^2+b^2) denklemi ile noktanın doğruya uzaklığu bulunuyor
	d = float(abs(a*k + b*l + c) / sqrt(pow(a, 2) + pow(b, 2)));
	//cout << "d=" << d << endl;

	return d;
}

float ikiNoktadanGecenDogrununNoktayaUzaklıgı(int k, int l, int x1, int y1, int x2, int y2)
{
	//(x1, y1) ve (x2, y2) noktasından geçen doğrunun denklemini ax+by+c=0 şeklinde oluştur.
	float *katsayilar = noktadanDenklemOlustur(x1, y1, x2, y2);

	float d= noktaninDogruyaUzakligi(k, l, katsayilar[0], katsayilar[1], katsayilar[2]);

	return d;
}
int main()
{
	int k = 1;
	int l = 0;

	int x1 = 0;
	int y1 = 0;
	int x2 = 3;
	int y2 = 5;

	//(a,b) noktasının (x1, y1) ve (x2, y2) noktasından geçen doğruya uzaklığı
	float uzaklik = ikiNoktadanGecenDogrununNoktayaUzaklıgı(k, l, x1, y1, x2, y2);
	cout<< uzaklik <<endl;

	system("pause");
}

 

Size faydalı olduysa, sosyal medyada paylaşarak bize destek olun. Teşekkürler.

İletişim Bilgileri
Rasbian'a Paket Yüklerken SSL hatası