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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.09.2011, 19:49   #1
Iamg8
 
Регистрация: 26.09.2011
Сообщений: 3
По умолчанию Определение размещения точки относительно вектора

Задается точка и вектор.
Нужно определить размещение точки по отношению к направленному отрезку (спереди/ сзади, слева/справа или на отрезку).
Как это реализовать, нужен алгоритм? Язык: C.

Последний раз редактировалось Iamg8; 26.09.2011 в 19:51.
Iamg8 вне форума Ответить с цитированием
Старый 26.09.2011, 23:54   #2
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

С точки зрения чистой геометрии можно придраться к постановке задачи (что такое "спереди/ сзади" хотя бы?), ну да ладно...
...
1. Выполняешь параллельный перенос заданных трёх точек, так чтобы начало вектора оказалось в начале координат.
2. Выполняешь поворот относительно начала координат, так чтобы вектор совпал с положительным направлением какой-то из осей.
3. Анализируешь новые координаты точки.
Vago вне форума Ответить с цитированием
Старый 27.09.2011, 08:44   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

Цитата:
2. Выполняешь поворот относительно начала координат, так чтобы вектор совпал с положительным направлением какой-то из осей.
3. Анализируешь новые координаты точки.
Добавлю только что при повороте(см п.2) понятия верх/низ/слева/справа подвергаются изменению.
пример исходный вектор(с нулевым началом и (x<0, y=0). (-2,0)
точка (-3,0) слева A<x <0. после поворота на положительную полуось X ось (x1>0) имеем [вектор (2,0) точка (3,0)] A1>x>0 точка оказалась справа.

а может быть все гораздо проще ?
1.JPG
точка (X,Y) вектор ((X1,Y1)(X2,Y2))
Код:
если x<min(x1, x2) то слева
если x>max(x1,x2) то справа
и непонятно где
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 27.09.2011 в 09:02.
evg_m вне форума Ответить с цитированием
Старый 27.09.2011, 10:41   #4
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
Добавлю только что при повороте(см п.2) понятия верх/низ/слева/справа подвергаются изменению.
пример исходный вектор(с нулевым началом и (x<0, y=0). (-2,0)
точка (-3,0) слева ...
Уважаемый, evg_m. Прошу прощения, но уже вот уже этого "слева" я не понял.

Давайте сперва "договоримся от терминах". Чтобы понятия "слева / справа / на оси" имели смысл, я смотрю на поставленное условие, как на задачу механики. То есть, имеется точка приложения силы (обозначим её A), вектор силы (AB), и некая точка C, положение которой относительно вектора [силы] и точки его приложения нужно определить. В Вашем примере A имеет координаты (0,0), B - (-2,0), C - (-3,0). Правильно я понял? То есть C лежит на оси действия силы (AB), при этом "перед" точкой её приложения.

1. Параллельный перенос ничего не меняет:
A1(0,0), B1(-2,0), C1(-3,0)

2. Поворот до совпадения вектора с [O,X):
A2(0,0), B2(2,0), C2(3,0)

Точка C2 по-прежнему лежит на оси действия силы, "перед" точкой её приложения.
Vago вне форума Ответить с цитированием
Старый 27.09.2011, 14:55   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

Цитата:
Давайте сперва "договоримся от терминах".
вот именно. Мои замечания касались "стандартной" декартовой системы координат.(ось X направлена вправо ось Y направлена вверх здесь верх/низ/лево/право в понятиях экрана монитора перед которым мы оба сидим). и повороте вектора в этой системе. В вашем подходе понятия слева/справа привязаны к направлению вектора (не системы координат). справа то что лежит в направлении вектора (вне зависимости куда он направлен в "стандартной" системе координат), слева то что лежит в противоположном направлении. что нужно TC неизвестно нам обоим.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 27.09.2011 в 15:04.
evg_m вне форума Ответить с цитированием
Старый 27.09.2011, 15:05   #6
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
В вашем подходе понятия слева/справа привязаны к направлению вектора ...
Да. По крайней мере слова ТС "определить размещение точки по отношению к направленному отрезку" я понял именно так. И думаю, дальнейшие гадания и споры до появления ТС с разъяснениями (а в том, что он здесь ещё раз появится, я почему-то сомневаюсь), не имеют смысла.
Vago вне форума Ответить с цитированием
Старый 28.09.2011, 21:05   #7
Iamg8
 
Регистрация: 26.09.2011
Сообщений: 3
По умолчанию

Цитата:
TC неизвестно нам обоим.
Задача по предмету "инженерная компьютерная графика".
Решать её нужно геометрически (в "стандартной" декартовой системе координат), извиняюсь, что сразу не указал.
Цитата:
а может быть все гораздо проще ?
Вложение 42850
точка (X,Y) вектор ((X1,Y1)(X2,Y2))
Код:
если x<min(x1, x2) то слева
если x>max(x1,x2) то справа
и непонятно где
Поначалу тоже думал именно так это решить, но еще, видимо, нужно учитывать направление.
Это все еще нужно рисовать, не подскажете еще какой библиотекой воспользоваться под С?
// спасибо за ответы, в следующем посте, возможно, напишу код.

Последний раз редактировалось Iamg8; 28.09.2011 в 21:08.
Iamg8 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение принадлежности точки druger Помощь студентам 1 18.09.2011 16:45
Положение точки относительно кривых Безье Александр Кедрик Общие вопросы C/C++ 2 10.08.2011 17:36
Проверка положения точки относительно треугольника AnDre_rus Общие вопросы C/C++ 2 12.11.2010 19:38
Определение номера итема относительно корневого раздела в TreeView Dozent Общие вопросы Delphi 7 07.04.2010 17:15
Определить, лежат ли обе точки относительно прямой в одной полуплоскости - задача на С++. Wia Помощь студентам 4 21.12.2008 02:06