.NET 4.x Нахождение точки пересечения двух отрезков заданных координатами - C#
Формулировка задачи:
Есть ли у кого решение на нахождение точки пересечения двух отрезков заданных координатами A(x1,y1,z1) и B(x2,y2,z2)?
Спасибо.
Решение задачи: «.NET 4.x Нахождение точки пересечения двух отрезков заданных координатами»
textual
Листинг программы
using System;
class Program
{
static void Main(string[] args)
{
Point A = new Point(4, -1, 2);
Point B = new Point(-4, 8, 5);
Point C = new Point(4, -4, 2);
Point D = new Point(-28, 38, 14);
Point IX = Intersection(A, B, C, D);
Console.WriteLine("{0} {1} {2}", IX.X, IX.Y, IX.Z);
Console.ReadKey();
}
static public Point Intersection(Point A, Point B, Point C, Point D)
{
double xo = A.X, yo = A.Y, zo = A.Z;
double p = B.X - A.X, q = B.Y - A.Y, r = B.Z - A.Z;
double x1 = C.X, y1 = C.Y, z1 = C.Z;
double p1 = D.X - C.X, q1 = D.Y - C.Y, r1 = D.Z - C.Z;
double x = (xo * q * p1 - x1 * q1 * p - yo * p * p1 + y1 * p * p1) /
(q * p1 - q1 * p);
double y = (yo * p * q1 - y1 * p1 * q - xo * q * q1 + x1 * q * q1) /
(p * q1 - p1 * q);
double z = (zo * q * r1 - z1 * q1 * r - yo * r * r1 + y1 * r * r1) /
(q * r1 - q1 * r);
return new Point(x, y, z);
}
}
class Point
{
public double X { get; set; }
public double Y { get; set; }
public double Z { get; set; }
public Point() { }
public Point(double x, double y, double z)
{
X = x;
Y = y;
Z = z;
}
}