Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Вниз

Геометрия   Найти похожие ветки 

 
Nick-From ©   (2004-04-05 11:01) [0]

Есть две точки с координатами (X1, Y1) и (X2, Y2) через которые проходит воображаемя прямая. Есть еще набор точек с их координатами. Как проще всего выяснить положение точек по отношению к прямой (точка лежит ниже прямой, на прямой, выше прямой)?
Я не помню.


 
VMcL ©   (2004-04-05 11:30) [1]

>>Nick-From ©  (05.04.04 11:01)

По двум точкам составить уравнение прямой вида f(x, y) = 0. Подставляя любую точку в f(x, y) и анализируя знак результата, можно решить твою задачу.


 
Nikolay M. ©   (2004-04-05 11:31) [2]

Вывести уравнение прямой y = k*x + b из условия
(x - X1) / (X2 - X1) = (y - Y1) / (Y2 - Y1)
Для любой точки (Xn, Yn) из набора считаешь y = k*Xn + b. Если y < Yn, значит точка лежит выше прямой.


 
Vitaly ©   (2004-04-05 11:41) [3]

скалярное произведение равно 0


 
Nick-From ©   (2004-04-05 11:54) [4]

всем tnx :)

2 Vitaly ©   (05.04.04 11:41) [3]
> скалярное произведение равно 0

Чье произведение и когда равно 0?


 
Vitaly ©   (2004-04-05 11:56) [5]

есть три точки - то бишь два вектора
они лежат на одной прямой если их
скалярное произведение равно 0


 
Думкин ©   (2004-04-05 12:02) [6]

> Vitaly ©   (05.04.04 11:56) [5]

cos0=0?!!


 
VMcL ©   (2004-04-05 12:10) [7]

>>Nick-From ©  (05.04.04 11:01)

Подробно. Возьмем уравнение прямой в виде f(x, y) = x + ay + b = 0.

Тогда по двум точкам (x1, y1) и (x2, y2), решая систему уравнений
{ x1 + a*y1 + b = 0,
{ x2 + a*y2 + b = 0,
например, по правилу Крамера, имеем:

a = (x2 - x1) / (y1 - y2)
b = (x1*y2 - x2*y1) / (y1 - y2).

Далее, подставляя координаты точек в f(x, y), определяем относительное местоположение:
f(Xi, Yi) > 0 => выше прямой,
f(Xi, Yi) = 0 => на прямой прямой,
f(Xi, Yi) < 0 => ниже прямой.


 
VMcL ©   (2004-04-05 12:11) [8]

>>VMcL ©  (05.04.04 12:10) [7]

Oops. >>f(Xi, Yi) = 0 => на прямой,<<  :)


 
Vitaly ©   (2004-04-05 12:35) [9]

> Думкин ©   (05.04.04 12:02) [6]

:)


 
Verg ©   (2004-04-05 12:51) [10]

Чтобы просто узнать как соотносится точка с прямой, достаточно произвести такую оценку:

Пусть A1 и A2 - это точки, через которые проходит прямая
A:=A2.Y-A1.Y;
B:=A1.X-A2.X;
C:= -A*A1.X - B*A1.Y;

Тогда знак выражения A*FromPoint.X + B*FromPoint.Y + C даст полжение точки FromPoint относительно этой прямой


 
VMcL ©   (2004-04-05 13:25) [11]

>>Verg ©  (05.04.04 12:51) [10]

[10] vs [7] - те же яйца, вид сбоку :)


 
Verg ©   (2004-04-05 13:54) [12]


> VMcL ©   (05.04.04 13:25) [11]
> >>Verg ©  (05.04.04 12:51) [10]
>
> [10] vs [7] - те же яйца, вид сбоку :)


Лишний их десяток никогда не помешает :)


 
Nick-From ©   (2004-04-05 13:57) [13]

2 VMcL © (05.04.04 12:10) [7]
спасибо :)

спасибо всем - я все понял :)



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.035 c
1-1081331234
Mikki
2004-04-07 13:47
2004.04.25
Построчный вывод текста


1-1081586948
Insert
2004-04-10 12:49
2004.04.25
Проигрывание *.mov


1-1081160544
Dmitry Averuanov
2004-04-05 14:22
2004.04.25
Как проверить, создан ли объект ?


1-1081184087
bbgone
2004-04-05 20:54
2004.04.25
Печать-принтер-шрифт


7-1077707737
Alex_DM
2004-02-25 14:15
2004.04.25
Где ослик IE прячет свой хвост?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский