![]() |
Точка пересечиния двух прямых
Задача:найти точку пересечения 2 прямых
Известно: т.А(x,y,z-известны) и т.Б(x,y,z-известны) - одна прямая, т.В(x,y,z-известны) и т.Г(x,y,z-известны) - вторая прямая. Как я решал: записывал уранения прямых в кординатах XY, потом отлично находил кординаты X и Y точки пересечения, потом записывал уравнения этих прямых в кординатах XZ, пытался найти Z-кординату точки пресечения, но расчёты оказывались неверными. Что подскажите? |
Цитата:
Ты решил задачу для отрезков на плоскости ? Две прямые пересекаются в пространстве, если они лежат на одной плоскости |
Они лежат в одной плоскости.
|
Строим базис на веторах АБ, АВ, и смотрим координату точки Г в этом базисе - если z = 0 - значит прямые лежат в одной плоскости - далее решение тривиально.
|
Проблема вот в чем: я не могу правильно найти Z-кординату точки пресечения.
|
если A + alpha * (Б - A) = B + betta * (Г - В), что находится элементарно, то очевидно нужный.z = A.z + alpha * (Б.z - A.z)
|
Как сделать через уравнение вида:
ax+by+c=0 |
Возник еще один вопрос:
У меня есть триугольная пирамида и построеное в ней сечение. Как мне определить в каком порядке строить 4 стороны пирамиды и сечение?(если не соблюдать порядок, то стороны будут вылазить одна на другую). |
Цитата:
|
У _etc'a в исходнике 'bricks' определяется параметр visible для каждой стороны, как его узнать?
|
Насколько я помню (а это было на первом курсе), для вычесления координат вектора нормали требуется перемножение двух матриц. Так вот я вычислял координату z, если она отрицательна — поверхность невидима (в зависимости от того, какая сторона является лицевой — был доп. параметр, отвечающий за это).
Вот эта строчка: Код:
vis = (o2.x*o2.depth-o1.x*o1.depth)*(o3.y*o3.depth-o1.y*o1.depth)-(o3.x*o3.depth-o1.x*o1.depth)*(o2.y*o2.depth-o1.y*o1.depth); |
Как боротся с этим?(сечение вылазит на стороны)
Project |
Ты думаешь, по внешнему виду можно понять, в чём косяк?
Ещё раз настоятельно рекомендую прочитать раздел по линейной алгебре. |
да уж, линейная алгебра - это самое оно для флешера
|
Цитата:
|
О матрицах преобразований (я уже всё забыл, поэтому точно не скажу).
|
Цитата:
|
надо почитать про вектора, матрицы, матричные уравнения, (в т.ч. про обратные матрицы), веркторную запись классических задач аналит.геометрии (проекция точки на отрезок, плоскость, расстояние между прямыми и др.) что-то еще в этом духе (я тоже за десять лет забыл, что там еще было :) )
|
Да-да, линейка тут не нужна, линал надо ковырять :)
|
BigDan, посмотрите здесь. http://27bobs.com/ Там лежит в свободном доступе библиотека Flash3D. Все написано в те времена, когда регистр букв не учитывался, простым и ясным языком прототипов, но работает вполне себе спокойно. Там как раз матрицы, шматрицы, кривые безье и прочие радости жизни. ( про регистр букв - это намек, надо будет одно слово переименовать чтоб все заработало ). Кстати, математику Todd Yard тоже не всю сам писал.
|
| Часовой пояс GMT +4, время: 19:49. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.