Дано множество точек на плоскости. Сколько точек не принадлежит прямой, проходящей через две первые точки?
Помогите, пожалуйста, с таким заданием:
Дано множество точек на плоскости. Сколько точек не принадлежит прямой, проходящей через две первые точки?
Не совсем понимаю, какие точки именно нужно проверять ? Нужно новые вводить и проверять? Саму прямую я создал
Вот часть основного кода:
Код:
/////МАССИВ ТОЧЕК
int n, i, j;
Console.WriteLine("Введите количество точек: ");
n = Int32.Parse(Console.ReadLine());
Point[] mas = new Point[n];
for (i = 0; i < n; i++)
{
mas[i] = new Point();
mas[i].Input_Point();
}
int kol1 = 0, kol2 = 0, kol3 = 0;
int nom1 = 0, nom2 = 0;
Console.WriteLine("Введите номера точек массива для построения прямой:");
nom1 = Int32.Parse(Console.ReadLine());
nom2 = Int32.Parse(Console.ReadLine());
if (mas[nom1] == mas[nom2])
{
Console.WriteLine("Указаны две одинаковые точки. Прямую построить невозможно");
Console.ReadKey();
return;
}
Prjamaja pr3 = new Prjamaja(mas[nom1], mas[nom2]);
double a, b, c, d, k;
a = pr3.Koef_a;
b = pr3.Koef_b;
c = pr3.Koef_c;
d = -c / b;
k = -a / b;
for (i = 0; i < n; i++)
if (mas[i].koord_y > k * mas[i].koord_x + d)
kol1++;
else
if (mas[i].koord_y < k * mas[i].koord_x + d)
kol2++;
else
kol3++;
Console.WriteLine("Над прямой расположено точек: " + kol1);
Console.WriteLine("Под прямой расположено точек: " + kol2);
Console.WriteLine("На прямой расположено точек: " + kol3);
int n, i, j;
Console.WriteLine("Введите количество точек: ");
n = Int32.Parse(Console.ReadLine());
Point[] mas = new Point[n];
for (i = 0; i < n; i++)
{
mas[i] = new Point();
mas[i].Input_Point();
}
int kol1 = 0, kol2 = 0, kol3 = 0;
int nom1 = 0, nom2 = 0;
Console.WriteLine("Введите номера точек массива для построения прямой:");
nom1 = Int32.Parse(Console.ReadLine());
nom2 = Int32.Parse(Console.ReadLine());
if (mas[nom1] == mas[nom2])
{
Console.WriteLine("Указаны две одинаковые точки. Прямую построить невозможно");
Console.ReadKey();
return;
}
Prjamaja pr3 = new Prjamaja(mas[nom1], mas[nom2]);
double a, b, c, d, k;
a = pr3.Koef_a;
b = pr3.Koef_b;
c = pr3.Koef_c;
d = -c / b;
k = -a / b;
for (i = 0; i < n; i++)
if (mas[i].koord_y > k * mas[i].koord_x + d)
kol1++;
else
if (mas[i].koord_y < k * mas[i].koord_x + d)
kol2++;
else
kol3++;
Console.WriteLine("Над прямой расположено точек: " + kol1);
Console.WriteLine("Под прямой расположено точек: " + kol2);
Console.WriteLine("На прямой расположено точек: " + kol3);
От каждой точки строй перпендикуляр к твоей прямой (есть формула) - и вычисляй расстояние - те что попадают условно в 5% от длины - лежат...