![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Есть два луча Как найти на них две ближайшие друг к другу точки?
MainRay © (2007-02-08 05:26:00)Лучи заданы точкой и направлением.
Если кто нибудь знает алгоритм, как чего перемещать, чтобы их найти - напишите словами.
Погуглистам сразу идти нах.
Юрий Зотов (2007-03-11 21:04:00) [1]"Деликатному" предлагается возглавить погуглистов и быстрым шагом следовать по ссылке в [27].
А по дороге еще раз подумать о деликатности.
Gero (2007-03-11 20:40:00) [2]http://lleo.aha.ru/na/
Аффтар (2007-02-28 04:18:00) [3]
> Asteroid © (19.02.07 18:57) [25]
>
> > Думкин © (16.02.07 05:55) [18]
> Да будет так :)
> Автору ветки, похоже, лень
Короче ты облажался, и пошёл искать виновных вокруг себя.
Поздравлю тебя с приёмом в компанию Думкиных.
> P.S. Возможно, моя ошибка была в том, что я погуглил, так
> что самоустраняюсь, чего желаю и автору ветки :)
Пусть твои желания обратятся на тебя самого.
Asteroid (2007-02-19 18:57:00) [4]> Думкин © (16.02.07 05:55) [18]
Да будет так :)
Автору ветки, похоже, лень штудировать справочники по линейной алгебре так же, как мне переписывать "откуда-то" код (в котором, кстати, смешались два языка =) ).
P.S. Возможно, моя ошибка была в том, что я погуглил, так что самоустраняюсь, чего желаю и автору ветки :)
dimon999 (2007-02-19 17:40:00) [5]> К сожалению, можно констатировать, что всё, что присуствтующие могут - это > утянуть откуда нибудь функцию. Но при этом они НЕ ПОНИМАЮТ, как они > работают.
эта функция действительно выдрана из чужого кода и
я правда не знаю, как она работает.
> Так что же ты не для лучей, а для линий функцию пишешь?
line - это прямая, например в пространстве
segment - это отрезок
MainRay (2007-02-18 06:40:00) [6]Нет. Вопрос был
"Если кто нибудь знает алгоритм, как чего перемещать, чтобы их найти - напишите словами."
К сожалению, можно констатировать, что всё, что присуствтующие могут - это утянуть откуда нибудь функцию. Но при этом они НЕ ПОНИМАЮТ, как они работают.
> dimon999 (17.02.07 17:05) [22]
>
> > homm © (17.02.07 15:59) [21]
> не придирайтесь,
> вопрос был "Есть два луча Как найти на них две ближайшие
> друг к другу точки?"
Так что же ты не для лучей, а для линий функцию пишешь?
dimon999 (2007-02-17 17:05:00) [7]> homm © (17.02.07 15:59) [21]
не придирайтесь,
вопрос был "Есть два луча Как найти на них две ближайшие друг к другу точки?"
homm (2007-02-17 15:59:00) [8]> bool GetLinesDistance
Интересный тип возвращаемых двнных для нахождения растояния
dimon999 (2007-02-17 15:36:00) [9]bool GetLinesDistance( Vector p1, Vector p2, Vector p3, Vector p4, Vector * pa, Vector * pb )
{
Vector p13,p43,p21;
double d1343,d4321,d1321,d4343,d2121;
double numer,denom;
double mua, mub;
p13.x = p1.x - p3.x;
p13.y = p1.y - p3.y;
p13.z = p1.z - p3.z;
p43.x = p4.x - p3.x;
p43.y = p4.y - p3.y;
p43.z = p4.z - p3.z;
if (fabs(p43.x) < EPSILON && fabs(p43.y) < EPSILON && fabs(p43.z) < EPSILON) return 0;
p21.x = p2.x - p1.x;
p21.y = p2.y - p1.y;
p21.z = p2.z - p1.z;
if (fabs(p21.x) < EPSILON && fabs(p21.y) < EPSILON && fabs(p21.z) < EPSILON) return 0;
d1343 = p13.x * p43.x + p13.y * p43.y + p13.z * p43.z;
d4321 = p43.x * p21.x + p43.y * p21.y + p43.z * p21.z;
d1321 = p13.x * p21.x + p13.y * p21.y + p13.z * p21.z;
d4343 = p43.x * p43.x + p43.y * p43.y + p43.z * p43.z;
d2121 = p21.x * p21.x + p21.y * p21.y + p21.z * p21.z;
denom = d2121 * d4343 - d4321 * d4321;
if (fabs(denom) < EPSILON) return 0;
numer = d1343 * d4321 - d1321 * d4343;
mua = numer / denom;
mub = (d1343 + d4321 * (mua)) / d4343;
pa->x = float( p1.x + mua * p21.x );
pa->y = float( p1.y + mua * p21.y );
pa->z = float( p1.z + mua * p21.z );
pb->x = float( p3.x + mub * p43.x );
pb->y = float( p3.y + mub * p43.y );
pb->z = float( p3.z + mub * p43.z );
return 1;
}
Ketmar (2007-02-17 12:11:00) [10]оставьте придурка-тролля в покое. давайте лучше пофлудим просто так. например, о достоинствах портвейна "777" перед заграницным мочепивом.
Думкин (2007-02-16 05:55:00) [11]> Asteroid © (16.02.07 03:50) [15]
Ответ ему дали. Не трать свое время. Пусть следует за погуглистами.
MainRay (2007-02-16 04:04:00) [12]
> Asteroid © (16.02.07 03:50) [15]
> Det = OriginDiff.x * ( d2.y * DirCross.z - d2.z * DirCross.
> y ) - OriginDiff.y * ( d2.x * DirCross.z - d2.z * DirCross.
> x ) + OriginDiff.z * ( d2.x * DirCross.y - d2.y * DirCross.
> x );
> if SqLen < eps then // nearly parallel or intersect behind
Вопрос был о том, чтоб написать словами.
А ты чем пишешь?
Просто передрал с какого то учебника, судя по английским написям, не понимая.
Вот и всё.
MainRay (2007-02-16 04:00:00) [13]
> Asteroid © (16.02.07 03:50) [15]
> Det = OriginDiff.x * ( d2.y * DirCross.z - d2.z * DirCross.
> y ) - OriginDiff.y * ( d2.x * DirCross.z - d2.z * DirCross.
> x ) + OriginDiff.z * ( d2.x * DirCross.y - d2.y * DirCross.
> x );
> if SqLen < eps then // nearly parallel or intersect behind
Вопрос был о том, чтоб написать словами.
А ты чем пишешь?
Просто передрал с какого то учебника, судя по английским написям, не понимая.
Вот и всё.
Asteroid (2007-02-16 03:50:00) [14]> MainRay (14.02.07 04:41) [14]
Неправильно, просто я редко сюда заглядываю. А вот то, что ты за три дня так и не нашел, как считается определитель матрицы 3x3.... =)
OriginDiff = VectorSub( o2, o1 );
DirCross = VectorCross( d1, d2 );
Det = OriginDiff.x * ( d2.y * DirCross.z - d2.z * DirCross.y ) - OriginDiff.y * ( d2.x * DirCross.z - d2.z * DirCross.x ) + OriginDiff.z * ( d2.x * DirCross.y - d2.y * DirCross.x );
SqLen = VectorDot( DirCross, DirCross );
if SqLen < eps then // nearly parallel or intersect behind
else t1 = Det / SqLen;
Надо расписывать функции вычитания и скалярного и векторного произведения векторов или сам напишешь?
MainRay (2007-02-14 04:41:00) [15]
> Asteroid © (10.02.07 23:40) [12]
Правильно ли я понял, что ты спасовал перед трудностью?
MainRay (2007-02-11 02:13:00) [16]
> Asteroid © (10.02.07 23:40) [12]
>
> > И что? [6]
> А ссылка ведет в конец той же страницы, где четко расписан
> алгоритм.
The solution is:
t1 = Determinant{(o2-o1),d2,d1 X d2} / ||d1 X d2||^2
Можешь запрограммировать эту функцию - запрограммируй.
А если не можешь, то и нечего тогда.
Asteroid (2007-02-10 23:40:00) [17]> И что? [6]
А ссылка ведет в конец той же страницы, где четко расписан алгоритм.
Думкин (2007-02-10 18:43:00) [18]> oldman © (09.02.07 16:55) [10]
> Есть два варианта (для плоскости):
> 1. Лучи пересекаются
> 2. Лучи не пересекаются
>
> В обоих случаях задача лишена смысла...
Я столько не выпью... :(
oldman (2007-02-09 16:55:00) [19]Есть два варианта (для плоскости):
1. Лучи пересекаются
2. Лучи не пересекаются
В обоих случаях задача лишена смысла...
Для 3D другая какафония...
Rial (2007-02-09 09:01:00) [20]
> [6] MainRay (09.02.07 06:31)
> Ты знаешь как получить ноль, а не задачу решить.
> И это не колкость, а деликатность. Другой бы дураком обозвал,
> а я только вежливо указал на ошибку.
Спасибо, что повеселил с утра, дружище.
Заряд положительной энергии мне не помешает :)
Обидно одно - в системе российского образования даже
такие господа как ты могут получить диплом, таким образом
еще более подстегнув взлутевшую самооценку.
P.S.
Ядом можешь больше не дышать, лично я в эту ветку
из прнципа не загляну %)