Форум: "Потрепаться";
Текущий архив: 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