Главная страница
    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.038 c
3-1080548078
ossa
2004-03-29 12:14
2004.04.25
Как и с помощью каких компонентов происходит работа с PL/SQL и


1-1081417361
Марат
2004-04-08 13:42
2004.04.25
Дата и время


11-1063612134
dataMaster
2003-09-15 11:48
2004.04.25
Левый верхний угол сетки mdvXLGrid


7-1077527796
Brenagwynn
2004-02-23 12:16
2004.04.25
Отлов Lock Computer в 2000/XP


6-1074853790
jcrush
2004-01-23 13:29
2004.04.25
Тормозит прога, потоки....





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский