Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.08.2012, 15:43   #1
Freimaks
Пользователь
 
Регистрация: 23.04.2011
Сообщений: 42
По умолчанию Параллельный перенос. Как написать код?

Всем привет!!!
Столкнулся тут с тем, что просто не хватает знаний высшей математики или геометрии, для решении задачи.
Суть - например есть отрезок. Начало и конец отрезка имеют координаты (X1,Y1,Z1) и (X2,Y2,Z2) соответственно. Мне хотелось бы вот что узнать - каким образом рассчитать параллельный перенос этого отрезка на некую величину.
Хотя больше меня интересует не трехмерный перенос, а двумерный, хотя буду рад помощи и в том и в другом.
Мат часть читаю уже второй день - все понятно, но не понятно как это переложить на язык программирования.
Использую Delphi.
Freimaks вне форума Ответить с цитированием
Старый 04.08.2012, 16:13   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Чтобы перенести вдоль оси Х, то к Х координатам концов отрезка прибавить(отнять) одно и то же число. Для других осей аналогично.
eoln вне форума Ответить с цитированием
Старый 04.08.2012, 16:45   #3
Freimaks
Пользователь
 
Регистрация: 23.04.2011
Сообщений: 42
По умолчанию

Да это понятно - но это не то. Это просто перенос точки вдоль оси.
При параллельном переносе действительно есть некие числа a,b и c, которые надо прибавить ко всем X, y, и z. Вопрос именно в этих числах. Я нашел как сделать через матрицы - но все равно не могу понять как это переложить на код.
Freimaks вне форума Ответить с цитированием
Старый 04.08.2012, 17:19   #4
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Теперь я ничего не понимаю. Какой вопрос по числам? На сколько надо перенести, такие числа и надо ставить.

Я писал про перенос не одной точки, а двух (концы отрезка). Т.к. отрезок строится на 2-х точках, то по сути там перенос множества всех точек, принадлежащих отрезку, т.е. перенос всего отрезка.

Через матрицу так: http://vv-usov.narod.ru/computers_graphics/igs/6.htm

Покажи хоть как у тебя это математически выглядит
eoln вне форума Ответить с цитированием
Старый 04.08.2012, 17:36   #5
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Параллельный перенос заключается в прибавлении к координатам вектора.
Все.
Собственно, как мне кажется, в фразе "параллельный перенос этого отрезка на некую величину" Вы не понимаете, что величина эта - обязательно вектор.

Но работать с матрицами и однородными координатами во многих случаях гораздо удобнее. По крайней мере тогда, когда кроме переносов планируется совершать и какие-то другие операции, например, вращение и масштабирование.
s-andriano вне форума Ответить с цитированием
Старый 04.08.2012, 17:53   #6
Freimaks
Пользователь
 
Регистрация: 23.04.2011
Сообщений: 42
По умолчанию

Давайте я объясню всю задачу, которую перед собой поставил.
В пространстве есть отрезок, ну как и писал раньше. Также есть N точек, лежащих рядом с отрезком. Цель - надо посчитать количество точек, которое лежит в пределах отрезка. Решение лично я вижу как построение еще одного отрезка, параллельного начальному (для этого мне и нужен перенос) и далее проверка координат точек и учет только тех, которые лежат четко между двумя этими отрезками.

На рисунке показал то, что мне надо.
Freimaks вне форума Ответить с цитированием
Старый 04.08.2012, 22:02   #7
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Туманно как-то всё. В пределах отрезка - это значит на некотором расстоянии? Если да, то в случае 2D надо 2 отрезка по разные стороны от отрезка (примечание ниже). В случае 3D тут уже полый цилиндр нужен (можно сказать, что он состоит из очень многих отрезков, поэтому этот метод уже не катит).
Легче вычислить расстояние от точек до отрезка.
Между этими методами есть разница. Например, в случае переноса не будут учтены точки, которые находятся ниже/выше отрезка (из рисунка в посте 6), т.к. они вроде и рядом, но не между отрезками.
eoln вне форума Ответить с цитированием
Старый 05.08.2012, 11:06   #8
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

"В пределах отрезка" я могу понять только как "на отрезке".
В этом случае по крайним точкам вычисляется уравнение прямой, затем проверяется сначала, что точка лежит на прямой, а потом - что между крайними точками.
Ничего никуда переносить не нужно.
s-andriano вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как на VBScript написать перенос массива в Excel ? Софико JavaScript, Ajax 24 15.12.2011 10:52
Как написать код VBA SMShrek Microsoft Office Excel 4 28.09.2010 12:09
как написать код на delphi =( Ане4ка Помощь студентам 1 15.05.2010 17:04
как написать код на кнопку на C#???? WhiteN Помощь студентам 0 08.05.2010 14:10
как написать код ссылки voldemen HTML и CSS 7 30.04.2010 11:49