.NET 4.x Нахождение точки пересечения двух отрезков заданных координатами - C#

Узнай цену своей работы

Формулировка задачи:

Есть ли у кого решение на нахождение точки пересечения двух отрезков заданных координатами A(x1,y1,z1) и B(x2,y2,z2)? Спасибо.

Решение задачи: «.NET 4.x Нахождение точки пересечения двух отрезков заданных координатами»

textual
Листинг программы
  1. using System;
  2.  
  3. class Program
  4. {
  5.     static void Main(string[] args)
  6.     {
  7.         Point A = new Point(4, -1, 2);
  8.         Point B = new Point(-4, 8, 5);
  9.         Point C = new Point(4, -4, 2);
  10.         Point D = new Point(-28, 38, 14);
  11.  
  12.         Point IX = Intersection(A, B, C, D);
  13.  
  14.         Console.WriteLine("{0} {1} {2}", IX.X, IX.Y, IX.Z);
  15.         Console.ReadKey();
  16.     }
  17.  
  18.     static public Point Intersection(Point A, Point B, Point C, Point D)
  19.     {
  20.         double xo = A.X, yo = A.Y, zo = A.Z;
  21.         double p = B.X - A.X, q = B.Y - A.Y, r = B.Z - A.Z;
  22.  
  23.         double x1 = C.X, y1 = C.Y, z1 = C.Z;
  24.         double p1 = D.X - C.X, q1 = D.Y - C.Y, r1 = D.Z - C.Z;
  25.  
  26.         double x = (xo * q * p1 - x1 * q1 * p - yo * p * p1 + y1 * p * p1) /
  27.             (q * p1 - q1 * p);
  28.         double y = (yo * p * q1 - y1 * p1 * q - xo * q * q1 + x1 * q * q1) /
  29.             (p * q1 - p1 * q);
  30.         double z = (zo * q * r1 - z1 * q1 * r - yo * r * r1 + y1 * r * r1) /
  31.             (q * r1 - q1 * r);
  32.  
  33.         return new Point(x, y, z);
  34.     }
  35.  
  36. }
  37.  
  38. class Point
  39. {
  40.     public double X { get; set; }
  41.     public double Y { get; set; }
  42.     public double Z { get; set; }
  43.     public Point() { }
  44.     public Point(double x, double y, double z)
  45.     {
  46.         X = x;
  47.         Y = y;
  48.         Z = z;
  49.     }
  50. }

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


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

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

6   голосов , оценка 3.667 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы