Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/140: Рейтинг темы: голосов - 140, средняя оценка - 4.86
 Аватар для skilllab
296 / 236 / 58
Регистрация: 03.02.2011
Сообщений: 2,045
Записей в блоге: 1
.NET 4.x

Нахождение точки пересечения двух отрезков заданных координатами

23.03.2014, 11:23. Показов 26176. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть ли у кого решение на нахождение точки пересечения двух отрезков заданных координатами A(x1,y1,z1) и B(x2,y2,z2)?
Спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.03.2014, 11:23
Ответы с готовыми решениями:

Задачка на нахождение пересечения двух функций, заданных линейно
Помогите решить задачку. Нужно найти точку пересечения двух функций, заданных линейно. На вход вводится угол. Вот мои потуги:...

Нахождение точки пересечения отрезков в трехмерном пространстве
Как найти точку пересечения отрезков(и если пересекаются) в трехмерном пространстве, если известны координаты начала и конца отрезков?...

Определение точки пересечения двух отрезков
#include "stdafx.h" #include <iostream> #include <cmath> using namespace std; struct line { double x0, y0, x1, y1; }; ...

9
338 / 327 / 154
Регистрация: 29.10.2012
Сообщений: 949
24.03.2014, 13:25
Либо Вы еще 2 точки утоили, либо задачу не целиком сформулировали. Каждый из отрезков, на сколько я помню, должен обозначается двумя точками, а не одной.
Иначе у Ваc 2 отрезка полностью совпадают: первый отрезок AB и второй отрезок BA.
0
 Аватар для skilllab
296 / 236 / 58
Регистрация: 03.02.2011
Сообщений: 2,045
Записей в блоге: 1
24.03.2014, 13:51  [ТС]
Утаил))) Каюсь.
Отрезки AB и CD
A(x1,y1,z1), B(x2,y2,z2), C(x3,y3,z,3), D(x4,y4,z4)

Добавлено через 5 минут
Гуглом искал. Решения есть для двухмерной системы, да и то на нахождение факта пересечения, не точки.
Советы типа "да чего там сложного, реши систему из 4-х уравнений" ставят в ступор Это как возьми в руки клаву и напиши код, чего там сложного.
Ищу именно хоть какую-то реализацию на шарпе по точкам с 3-мя координатами.
0
3 / 3 / 0
Регистрация: 09.02.2014
Сообщений: 20
24.03.2014, 14:42
В двумерной системе нет ничего сложного: по двум точкам мы находим уравнения прямых, содержащих данные отрезки kx+b=y. Вместо x и y подставляем координаты точек и получаем 2 системы уравнений, откуда найдем k и b. Соответственно, точка пересечения - где x и y совпадают.

А для трехмерной - нужно рассматривать каноническое уравнение? Для описания прямой в пространстве нужна точка и направляющий вектор...
0
 Аватар для skilllab
296 / 236 / 58
Регистрация: 03.02.2011
Сообщений: 2,045
Записей в блоге: 1
24.03.2014, 14:53  [ТС]
Находил математику Точка пересечения двух прямых в пространстве
Спрашивал сам Найти точку пересечения прямых в пространстве
Пытался что-то накодить. Но так как почти забыл всё это. то спрашиваю помощи на форуме. По сути, нужно просто математику переложить на программирование. Всё вроде есть. Но как это сделать, ума не приложу.
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
24.03.2014, 20:10
skilllab, составляем СЛАУ по уравнению: Найти точку пересечения прямых в пространстве
решаем СЛАУ: Решение систем линейных уравнений методом Жордана-Гаусса (метод Gauss) относительно x,y,z

имеем 4 вектора: а1 = АМ и а2 = МВ; b1= СМ и b2 = MD(порядок букв важен)
для них проверяем чтоб a1*a2 = - |a1|*|a2| и b1*b2 = - |b1|*|b2| - чтоб удостоверится что точка М лежит между точками, а не между ними
0
338 / 327 / 154
Регистрация: 29.10.2012
Сообщений: 949
24.03.2014, 22:31
Лучший ответ Сообщение было отмечено skilllab как решение

Решение

Можно вот так (для удобства использовал дополнительный класс - точка):
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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;
    }
}
Точка пересечения должна быть: -12, 17, 8;
P.S. Отсутствует проверка на то, будет ли точка пересечения принадлежать отрезкам, вычисления происходят для 2х прямых заданных точками.
3
 Аватар для skilllab
296 / 236 / 58
Регистрация: 03.02.2011
Сообщений: 2,045
Записей в блоге: 1
25.03.2014, 09:13  [ТС]
То, что нужно!!!
Все проверки сам введу.

Добавлено через 32 минуты
Цитата Сообщение от kmaffa Посмотреть сообщение
P.S. Отсутствует проверка на то, будет ли точка пересечения принадлежать отрезкам
В моём случае, я точно знаю что будет. Это контролируется немного другими методами и условиями.
0
6 / 6 / 1
Регистрация: 12.10.2016
Сообщений: 141
11.10.2018, 22:40
Цитата Сообщение от skilllab Посмотреть сообщение
Все проверки сам введу.
Привет, можешь сказать как ты с этих точек "return new Point(x, y, z);" определил пересечение?
0
0 / 0 / 0
Регистрация: 28.05.2018
Сообщений: 6
06.05.2019, 16:33
Добрый день. Подскажите пожалуйста ход своих мыслей при составлении формулы определения координат пересечения. А то готовый вариант меня не устраивает, а мозгов додуматься самому как все превратилось именно в такую формулу не хватает.

P.S. я понимаю, что времени прошло куча, но попытаться стоит )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.05.2019, 16:33
Помогаю со студенческими работами здесь

Координаты точки пересечения двух отрезков
День добрый уважаемые читатели форума. Разбираю задачу по расчету Координаты точки пересечения двух отрезков и столкнулся с проблемой. ...

Определить суммы длин двух отрезков, заданных координатами концов
Два отрезка прямой на плоскости заданы координатами своих концов.Определить суммы длин этих отрезков.

Определить количество общих точек у двух отрезков, заданных координатами своих концов
Помогите пожалуйсто. Условие задачи на Делфи Определить количество общих точек у двух отрезков, заданных координатами своих концов....

Нахождение общей точки у двух отрезков
Добрый день. Подскажите, пожалуйста, как в Delphi можно найти общую точку у двух отрезков, заданных координатами своих концов (x0,y0:x1,y1...

Нахождение точки пересечения двух полиномов
Прошу помочь в решении !!! Даны: 1) коэффициенты, аппроксимирующие полиномы 7-й степени W1(w) и W2(w): P1=; P2=; 2)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru