, чтобы начать с того, что я сделал простой код, который проверяет, сталкиваются ли 2 строки на основе 4 точек, заданных их координатами x и y. Он проверяет, совпадает ли угол (переменная k в моем коде) обеих линий, в этом случае они параллельны, иначе они сталкиваются. Угол (k) был рассчитан на основе математического равенства Click here [k = (y2-y1)/(x2-x1)]. Теперь я не уверен, как понять, в чем они столкнулись. Я был бы очень признателен, если бы вы могли мне помочь. Заранее спасибо.Найти координаты пересечения линейных линий в C#
Мой код: (метод, который я называю, чтобы вычислить угол)
static void MetodaTrazenjaPresjeka(Duzina d1, Duzina d2)
{
int k11 = d1.Krajy - d1.Pocy; //y2-y1 - first line
int k12 = d1.Krajx - d1.Pocx; //x2-x1 - first line
double k1 = (double)k11/k12; //angle of the first line
int k21 = d2.Krajy - d2.Pocy; //y2-y1 - second line
int k22 = d2.Krajx - d2.Pocx; //x2-x1 - second line
double k2 = (double)k21/k22; //angle of the second line
if (k1 == k2)
{
//they are parallel
Console.WriteLine("MOJA METODA:");
Console.WriteLine("-----------------------------------");
Console.Write("Pravci zadani tockama su paralelni!");
}
else
{
//lines are colliding
Console.WriteLine("MOJA METODA:");
Console.WriteLine("-----------------------------------");
Console.Write("Pravci zadani tockama se sijeku!");
}
}
код в классе Duzina: уравнение
class Duzina
{
private int pocx, pocy, krajx, krajy;
//read/write attribute for the x coordinate of the first point
public int Pocx
{
get { return pocx; }
set { pocx = value; }
}
//read/write attribute for the y coordinate of the first point
public int Pocy
{
get { return pocy; }
set { pocy = value; }
}
//read/write attribute for the x coordinate of the second point
public int Krajx
{
get { return krajx; }
set { krajx = value; }
}
//read/write attribute for the y coordinate of the second point
public int Krajy
{
get { return krajy; }
set { krajy = value; }
}
//method that will print out coordinates of the given points
public void Ispis()
{
Console.Write("Pocetna tocka: ({0},{1})",Pocx,Pocy);
Console.Write("Krajnja tocka: ({0},{1})", Krajx, Krajy);
}
}
Возможный дубликат [Как вы обнаруживаете, где пересекаются два отрезка?] (http://stackoverflow.com/questions/563198/how-do-you-detect -where-two-line-segment-intersect) – KISKE
Не хотите использовать авто-свойства, чтобы сделать код короче? –
Я нахожусь в старшей школе, и это способ убедиться, что я не забываю, что мы изучаем в классе @ThomasWeller –