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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2013, 03:40   #1
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию Векторная алгебра

Сориентируйте, плиз, горе-математика: есть прямая и есть вектор, пересекающий эту прямую. Можно ли каким-то образом узнать направление этого вектора - к прямой или от прямой смотрит его "морда"?
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 28.03.2013, 05:08   #2
Ezhik Kihze
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 639
По умолчанию

Если вектор пересекает прямую, то его морда смотрит от прямой, иначе была бы одна точка пересечения.
ICQ: 677936656 Gmail: ekEmbed@gmail.com
Ezhik Kihze вне форума Ответить с цитированием
Старый 28.03.2013, 06:38   #3
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Что-то въехать в задачу не могу (ну, в смысле, не могу понять, действительно задача такова, как это написано или просто тут некая формулировка сокрыта, что даёт доп. смысл). Но вот рассуждения.

Прямая и вектор - "прямые" линии, и соответственно, и будучи просто прямыми, они могут либо пересекаться либо идти параллельно в декартовом пространстве. Вектор, как часть "своей" прямой - может не пересекать другую прямую именно по ограничению длины. Если в условии указано, что вектор _пересекает_ прямую, значит они не параллельны и имеют одну точку пересечения (ибо лежат на прямых). Из этого заключаем, что одна часть вектора лежит с одной стороны прямой , а другая - с другой. И получается, что "морда" хоть как будет смотреть от прямой. На прямую он никак не может смотреть в этом случае - ведь его "морда" при этом должна быть направлена на свою середину.

Если же пересечения нет, то можно говорить о том, что вектор может быть параллелен прямой, "смотреть" от неё и "смотреть" на неё.
Эту задачу можно решать обычным расчётом расстояния от точки до прямой. Точки - начало и конец вектора, которые в случае, если это действительно вектор (у которого нет размещения, т.е. его начало в 0/0), а не набор координат отрезка, надо ещё сложить с размещением. Если начало ближе конца - то от прямой, наоборот - к прямой. Ну а коли равны - значит они параллельны.

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

Последний раз редактировалось phomm; 28.03.2013 в 06:43.
phomm вне форума Ответить с цитированием
Старый 28.03.2013, 07:49   #4
Ezhik Kihze
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 639
По умолчанию

Цитата:
На прямую он никак не может смотреть в этом случае - ведь его "морда" при этом должна быть направлена на свою середину.
Может, именно из-за ограничености длины. Если он "мордой упирается в прямую". Причем здесь середина вектора?

Цитата:
если это действительно вектор (у которого нет размещения, т.е. его начало в 0/0), а не набор координат отрезка, надо ещё сложить с размещением
Ой, путаница... Радиус-вектор != вектор. Например,
Цитата:
Вектор в планарной евклидовой геометрии (связанный вектор) — упорядоченная пара точек, одна из которых называется началом, вторая — концом вектора.
Цитата:
Вектор в геометрии — упорядоченная пара точек (или направленный отрезок), одна из которых называется началом, вторая — концом вектора.
Конечно, иногда можно рассматривать свободные равные по длине вектора как факторподпространство, но даже вики говорит:
Цитата:
Иными словами, подразумевается, что свободный вектор может быть перенесен (параллельным переносом) как угодно (так, чтобы его начало совпало с любой точкой пространства), однако не перестает от этого быть собой.
ICQ: 677936656 Gmail: ekEmbed@gmail.com

Последний раз редактировалось Ezhik Kihze; 28.03.2013 в 07:58.
Ezhik Kihze вне форума Ответить с цитированием
Старый 28.03.2013, 07:57   #5
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Формулировка некорректна: прямая и вектор не могут пересекаться.
У прямой есть строго определенное положение в пространстве.
У вектора такого положения нет - у него есть только направление, т.е. в пространстве он может располагаться как угодно.
Соответственно, его всегда можно расположить так, что его отрезок будет пересекать прямую, а можно - что не будет.

Если направленный отрезок на плоскости пересекает прямую, то "его морда" всегда будет смотреть от прямой.
s-andriano вне форума Ответить с цитированием
Старый 28.03.2013, 07:57   #6
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Как вариант пересечения - когда точка начала либо точка конца вектора принадлежат прямой. Тогда надо определить, которая из этих двух точек лежит на прямой. Если начало - тогда вектор повернут мордой от линии. И наоборот.

ИМХО - это единственный возможный корректный случай. Все остальное -как сказал s-andriano
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...

Последний раз редактировалось Sciv; 28.03.2013 в 07:59.
Sciv вне форума Ответить с цитированием
Старый 28.03.2013, 08:46   #7
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Может подойдет такая логика решения:
1. Путь есть прямая и векторы
1.JPG
2. Производим поворот и смещение системы координат так, чтобы наша прямая в этой системе лежала на оси
2.JPG
3.
Код:
Morda := Начало.Y * (Начало.Y - Конец.Y)
- если Morda = 0 - вектор параллелен прямой
- если Morda > 0 - вектор смотрит на прямую
- если Morda < 0 - вектор смотрит от прямой

С этой точки зрения, если вектор пересекает прямую - он смотрит на неё.

Последний раз редактировалось Sibedir; 28.03.2013 в 08:50.
Sibedir вне форума Ответить с цитированием
Старый 28.03.2013, 09:11   #8
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Sibedir, так в Вашем случае ни один вектор не пересекает прямую. Потому что вектор - это ограниченный направленный отрезок.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 28.03.2013, 11:01   #9
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Так я и говорю
Цитата:
С этой точки зрения, если вектор пересекает прямую - он смотрит на неё.
Исключением как-раз и будет случай, когда начало вектора находится на прямой.

Последний раз редактировалось Sibedir; 28.03.2013 в 11:03.
Sibedir вне форума Ответить с цитированием
Старый 28.03.2013, 11:21   #10
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
если кто-то не согласен - тогда прошу пруф в виде рисунка!
Мой пост №6 выше. Частный и единственный удовлетворяющий условию случай пересечения.

UPDATE О, а куда исходный пост Сержа исчез?!
Изображения
Тип файла: jpg VECTOR.JPG (3.9 Кб, 128 просмотров)
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...

Последний раз редактировалось Sciv; 28.03.2013 в 11:24.
Sciv вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
векторная алгебра KIRILOW Помощь студентам 61 31.10.2012 15:45
LNK1561 (векторная программа) finz Помощь студентам 6 20.05.2011 18:01
Векторная графика AnReykfi Помощь студентам 0 15.05.2010 14:10
векторная графика. квадрат varelik Мультимедиа в Delphi 18 07.09.2009 22:25
Векторная графика в C++ Builder 6 Max2114 C++ Builder 3 19.01.2009 14:56