Witam,
Mam takie zadanie: "Dany jest trójkąt o współrzędnych A=(-4,-4), B=(4,-2), C=(6,6). Wczytaj od użytkownika współrzędne punktu P=(x,y). Wypisz na ekranie informację czy punkt P leży wewnątrz, na zewnątrz, czy też na boku trójkąta ABC."
Wskazówka : Wyznacz proste AB, AC i BC oraz sprawdź położenie punktu P względem wyznaczonych prostych.
Napisałem taki kod:
using System;
namespace _5._3
{
class Program
{
static void Main(string[] args)
{
const int x1 = -4, y1 = 4; // AB
const int x2 = 4, y2 = -2; // AC
const int x3 = 6, y3 = 6; // BC
int x0, y0;
Console.Write("Podaj współrzędną x: ");
x0 = Convert.ToInt32(Console.ReadLine());
Console.Write("Podaj współrzędną y: ");
y0 = Convert.ToInt32(Console.ReadLine());
// AB
double A_AB = (y2 - y1 / x2 - x1);
double B_AB = (y1 - (y2 - y1 / x2 - x1) * x1);
// AC
double A_AC = (y3 - y1 / x3 - x1);
double B_AC = (y1 - (y3 - y1 / x3 - x1) * x1);
// BC
double A_BC = (y3 - y2 / x3 - x2);
double B_BC = (y2 - (y3 - y2 / x3 - x2) * x2);
// y=ax+b
if ((y0 > (A_AB * x0 + B_AB)) && (y0 < (A_AC * x0 + B_AC)) && ((y0 > A_BC * x0 + B_BC))) Console.WriteLine("Punkt leży |wewnątrz| trójkąta.");
else if ((y0 == (A_AB * x0 + B_AB)) || (y0 == (A_AC * x0 + B_AC)) || ((y0 == A_BC * x0 + B_BC))) Console.WriteLine("Punkt leży |na boku| trójkąta.");
else Console.WriteLine("Punkt leży |na zewnątrz| trójkąta.");
Console.ReadKey();
}
}
}
Wzorowałem się na tym: https://forum.pasja-informatyki.pl/202754/czy-punkt-p-lezy-wewnatrz-trojkata
Tylko że po wpisaniu x=-1 i y=-2 pokazuje mi że jest na zewnątrz, a jest w środku.