Главная страница
    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.044 c
1-1081491659
Max_
2004-04-09 10:20
2004.04.25
Функция POS - поиск в обратном направлении


3-1080380533
Dimbas
2004-03-27 12:42
2004.04.25
Как в DbGrid пронумеровать все строки?


1-1081611194
Alexis
2004-04-10 19:33
2004.04.25
Label как ссылка.


1-1081189568
_dEMOn
2004-04-05 22:26
2004.04.25
ОТКРЫТЬ ФАЙЛ КАК В БЛОКНОТЕ


3-1080272370
nik7777
2004-03-26 06:39
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский