Точка пересечения 2 векторов
Координаты x,y я то нашел, спроецировав на плоскость вектора.
stl
А что такое пересечение векторов?
Есть обобщенная задача — поиск двух БЛИЖАЙШИХ ТОЧЕК у двух отрезков в пространстве. Я щас не дома и не могу показать код, да и в двух словах алгоритм не опишешь. Гугли.
stl
>Даны 2 вектора: x1,y1,z1; x2,y2,z2;
Как найти точку пересечения?
Элементарно: (0; 0; 0)
если честно , я не понял ваших ответов. Мне нужны не ближайшие точки, и причем тут 0,0,0 я тоже не понял.
2 вектора точно пересекаются в пространстве в какой-то точке. У векторов есть координаты начала и конца. Найти x,y точки пересечения легко — проецируем на экран, отбрасывая z, находим.
А как найти координату z, если она может потребоваться в дальнейшем?

stl
>2 вектора точно пересекаются в пространстве в какой-то точке. У векторов есть
>координаты начала и конца.
У настоящих брутальных векторов координаты начала находятся в точке
ты у каждого вектора указал лишь один набор координат. потому их от (0,0,0) и отсчитали 😉 вопрос надо правильней формулировать. тебя интересует пересение ОТРЕЗКОВ? ну так элементарно, пусть отрезки
(x1, y1, z1) — (x2, y2, z2) и (a1, b1, c1) — (a2, b2, c2)
тогда уравнение первого
x = x1*t + x2*(1 — t)
y = y1*t + y2*(1 — t)
z = z2*t + z2*(1 — t)
аналогично для второго
x = a1*s + a2*(1 — s)
y = b1*s + b2*(1 — s)
z = c2*s + c2*(1 — s)
приравниваем x,y,z, получаем
x1 t + x2 (1 — t) = a1 s + a2 (1 — s)
y1 t + y2 (1 — t) = b1 s + b2 (1 — s)
система из 2 уравнений с 2мя неизвестными, решаем, подставляем s и t во третьи уравнения, убеждаемся, что z-координаты совпали тоже (если нет, то и пересечения нет)
stl
>У векторов есть координаты начала и конца
А нету!
Вектор это упорядоченное конечное множество своих координат.
Вектор может представлять множество отрезков, которые будут по длине равны абсолютному значению вектора и паралельны.
И вот разница координат отрезков следовательно равна координатам вектора.
Если проще, вектор — это не отрезок. Вектор — это точка. А его направление — это направление отрезка из начала координат в эту точку.
Tweedle Dee
>ты у каждого вектора указал лишь один набор координат. потому их от (0,0,0) и отсчитали 😉
Он указал правильно а отсчитывают от нулей всегда.
>У настоящих брутальных векторов координаты начала находятся в точке <0, 0, 0>
Координаты у труЪ-математиков задаются либо (0; 0; 0) либо <0, 0, 0> А вот <0, 0, 0>— смахивает на неупорядоченное множество.
stl
Короче объясняю.
Такс. Если у тебя есть отрезок <(x1; y1; z1), (x2; y2; z2)> то вектор, который задаст множество отрезков, равных по модулю длине твоего отрезка и паралельных ему равен (x2 — x1; y2 — y1; z2 — z1). И любой отрезок, входящий в это множество будет равен <(c1 + x1; c2 + y1; c3 + z1), (c1 + x2; c2 + y2; c3 + z2)>,
Отрезок, совпадающий с радиус-вектором на графике будет равен <(0; 0; 0), <x, y, z>>.
Где c1, c2, c3 — произвольные константы из множества декартовой степени 1/n пространства, которому принадлежит вектор, где n — мерность пространства. Например пространство R^3 возводим в декартовую степень 1/3 получаем R — множество действительных чисел (частный случай для трёхмерного пространства).
x, y, z — координаты вектора, равные x2 — x1, y2 — y1 и z2 — z1 соответственно.
ПРАВКА: поумничал малость
ПРАВКА: афрографея
ПРАВКА: поумничал малость
Векторы в пространстве — не пересекаются! Их пересечение возможно только при строгом и абсолютно точном соотношении параметров (как минимум, "лежат в одной плоскости"). Однако, поскольку в реальном мире имеют место квантовые флуктуации, а малейшего отклонения параметра достаточно для разрушения необходимого равенства (в случае компутера эта особенность физического мира симулируется неабсолютной точностью вычислений), то вероятность пересечения изничтожающе стремится к нулю.
А поэтому мораль такова: не надо математически эстетствовать, ибо жизнь сурова. А надо взять и найти, как предлагали в посте 2, ближайшие точки A и B обоих векторов. Если расстояние AB меньше некоторого епсилон (скажем, 0.001), то можно условно считать, что вектора пересеклись, и точка пересечения — середина AB. Если же больше епсилона — значит, не пересеклись.
векторная-геометрия — Найти точку пересечения вектора и плоскости
Добрый день, возник такой вопрос: есть плоскость, в моем случае y = 0, положение точки 1: (x1, y1, z1), и положение точки 2 (x2, y2, z2). Как найти точку пересечения вектора, направленного от точки 1 к точке 2, и плоскости? Затем нужно посчитать расстояние до этой точки пересечения (но это уже не сложно).
задан 20 Май ’14 14:10
@сергей111: одно замечание по поводу терминологии. Обычно не говорят о пересечении вектора и плоскости. Задачу можно рассматривать в трёх вариантах, проводя либо прямую, либо луч, либо отрезок. В принципе, все они решаются однотипным способом.
@сергей111, Если вы получили исчерпывающий ответ, отметьте его как принятый.
2 ответа
Стандартный способ решения таких задач — использовать параметрическую запись прямой, заданной направляющим вектором и точкой: $$\begin
Определение точки пересечения двух отрезков
Пусть даны два отрезка. Первый задан точками P1(x1;y1) и P2(x2;y2). Второй задан точками P3(x3;y3) и P4(x4;y4). 
Взаимное расположение отрезков можно проверить с помощью векторных произведений: 
Рассмотрим отрезок P3P4 и точки P1 и P2. 
Точка P1 лежит слева от прямой P3P4, для нее векторное произведение v1 > 0, так как векторы положительно ориентированы.
Точка P2 расположена справа от прямой, для нее векторное произведение v2 < 0, так как векторы отрицательно ориентированы.
Для того чтобы точки P1 и P2 лежали по разные стороны от прямой P3P4, достаточно, чтобы выполнялось условие v1v2 < 0 (векторные произведения имели противоположные знаки).
Аналогичные рассуждения можно провести для отрезка P1P2 и точек P3 и P4.
Векторное произведение двух векторов вычисляется по формуле:
где:
ax, ay — координаты первого вектора,
bx, by — координаты второго вектора.
Уравнение прямой, проходящей через две различные точки, заданные своими координатами.
Пусть на прямой заданы две не совпадающие точки:P1 с координатами (x1;y1) и P2 с координатами (x2; y2). Соответственно вектор с началом в точке P1 и концом в точке P2 имеет координаты (x2-x1, y2-y1). Если P(x, y) – произвольная точка на прямой, то координаты вектора P1P равны (x — x1, y – y1).

Итак, прямую можно задать уравнением вида (1).
Как найти точку пересечения прямых?
Очевидное решение состоит в том, чтобы решить систему уравнений прямых:



Здесь D – определитель системы, а Dx,Dy — определители, получающиеся в результате замены столбца коэффициентов при соответствующем неизвестном столбцом свободных членов. Если D ≠ 0, то система (2) является определенной, то есть имеет единственное решение. Это решение можно найти по следующим формулам: x1=Dx/D, y1=Dy/D, которые называются формулами Крамера. Небольшое напоминание, как вычисляется определитель второго порядка. В определителе различают две диагонали: главную и побочную. Главная диагональ состоит из элементов, взятых по направлению от верхнего левого угла определителя в нижний правый угол. Побочная диагональ – из правого верхнего в нижний левый. Определитель второго порядка равен произведению элементов главной диагонали минус произведение элементов побочной диагонали.