.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;
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5
Похожие ответы