Поиск:

Ответ в темуСоздание новой темы Создание опроса
> прямая и точка 
V
    Опции темы
duk
Дата 1.11.2008, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Some Object
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 19.7.2007

Репутация: нет
Всего: 4



Здравствуйте! У меня такой вопрос (когда-то я эту задачу решал, но сейчас как-то торможу): есть прямая (даны координаты точек, через которые она проходит), где-то рядом находится точка (координаты тоже известны), нужно определить с какой стороны от прямой находится точка. 

Решал её раньше через функцию похожую на  арктангенс из набора дельфийского. Позабывал напрочь все  smile .
Если кому не влом, дайте код на делфи. smile 
PM MAIL   Вверх
4d5a
Дата 1.11.2008, 07:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 10.6.2007

Репутация: 1
Всего: 1



функция прямой есть f(x)=kx+b
если она проходит через 2 точки, то
k=(y2-y1)/(x2-x1), а
b=y1-kx1
пусть точка (которая гдето рядом с прямой) упала на (x3 y3), тогда
если f(x3)>y3, значит точка ниже прямой, если равны, значит на прямой иначе выше прямой.


PM MAIL   Вверх
Rickert
Дата 1.11.2008, 07:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 1
Всего: 52



У этой задачи нет однозначного решение, потому что нет условия "что значит с какой стороны"? Скольки-мерное пространство?


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
duk
Дата 1.11.2008, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Some Object
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 19.7.2007

Репутация: нет
Всего: 4



Цитата(Rickert @  1.11.2008,  07:10 Найти цитируемый пост)
Скольки-мерное пространство?

двух

Цитата(Rickert @  1.11.2008,  07:10 Найти цитируемый пост)
"что значит с какой стороны"

если прямая вертикальная - слева или справа, если нет - сверху или снизу, ну как-то так.
PM MAIL   Вверх
duk
Дата 1.11.2008, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Some Object
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 19.7.2007

Репутация: нет
Всего: 4



Rickert, вообще задача вот в чем. Есть массив координат - это координаты реки. Напрваление течения реки определяется так - из первой точки в последнюю. У реки есть притоки - нужно определить правый приток или левый.
Наверное точне было бы спросить, с какой стороны находится точка по отношению к вектору.
PM MAIL   Вверх
Rickert
Дата 1.11.2008, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 1
Всего: 52



Поиск угла между векторами:
Код
aVector vec;//нормализованный вектор 1
aVector vec2;//нормализованный вектор 2

float dot = aaDotMulty(vec, vec2);//скалярное произведение

if (dot > 1.0)
  dot = 1.0;
if (dot < (-1.0))
  dot = -1.0;

return (acos(dot));//получаем угол


Это сообщение отредактировал(а) Rickert - 1.11.2008, 11:50


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
duk
Дата 1.11.2008, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Some Object
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 19.7.2007

Репутация: нет
Всего: 4



4d5aRickert, спасибо! Вам по плюсу. smile 
PM MAIL   Вверх
maxim1000
Дата 2.11.2008, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



Цитата(Rickert @  1.11.2008,  11:47 Найти цитируемый пост)
Поиск угла между векторами

если быть более точным, то это - поиск косинуса угла между векторами
а косинус не зависит от того, в какую сторону происходит поворот
для определения знака угла можно использовать определитель (если посмотреть на это из трёхмерного пространства, получится z-координата векторного произведения):
Код

bool Right(double dx1,double dy1,double dx2,double dy2)
{
    return dx1*dy2>dx2*dy1;
}

(Возможно, нужно будет развернуть неравенство - зависит от того, от какого к какому вектору считать угол)


--------------------
qqq
PM WWW   Вверх
duk
Дата 2.11.2008, 02:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Some Object
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 19.7.2007

Репутация: нет
Всего: 4



maxim1000, это то, что мне было нужно!!! Спасибо! +2 (второй добавлю завтра) тебе за это.



Это сообщение отредактировал(а) duk - 2.11.2008, 02:51
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0743 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.