.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;
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д