forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   MidletPascal (http://forum.boolean.name/forumdisplay.php?f=46)
-   -   расчёт нахождения точки на линии (http://forum.boolean.name/showthread.php?t=8466)

mustaeed 11.06.2009 13:26

расчёт нахождения точки на линии
 
Помагайте сам никогда не додумаюсь,
такая проблема:

Допустим есть линия по диаганали у неё есть две точки x
xstart и xend, две точки y
ystart и yend.

есть точка(персонаж),у неё есть x и y.

как вычислить ply по plx, находящийся на линии.

---------xe/ye
-----------/
----------/
------plx/ply
--------/
----xs/ys

нужна формула.

impersonalis 11.06.2009 14:17

Ответ: расчёт нахождения точки на линии
 
http://forum.boolean.name/forumdisplay.php?f=85

impersonalis 11.06.2009 14:35

Ответ: расчёт нахождения точки на линии
 
Вложений: 1
Только убедись что точка СТАРТ находится левее и ниже чем (частный случай - на том же уровне что и [тут надо будет расписать частных случай xe=xs, т.к. полученная пряма не задаётся линейной завимостью с адекватными коэффициентами {деление на ноль}]) точка ЭНД (в противном случае - перекинь значения).
Розовая и зелёные точки проецируются на линию по Х и Y соответственно.

mustaeed 11.06.2009 15:36

xs у линии всегда левее чем xe ys допустим тоже всегда ниже чем ye с этим проблем нет.
но я не понял что за переменные XP1,Xp2,yp1,Yp2.

impersonalis объясните пожалуйста всё подробнее если не сложно,
для чего нужна какая переменная и каждое действие, вычиление K,B и т.д, p.s.: линия может быть и не прямо по диагонали, а например на 30,20 градусов.

и зачем нужны XPl1,Xpl2,ypl1,Ypl2
у меня ведь только по одной переменных x y для персонажа.

impersonalis 11.06.2009 15:52

Ответ: расчёт нахождения точки на линии
 
Вложений: 1
Y(x):=K*x+B
уравнение прямой линии под любым углом наклона кроме 90 и 270 градусов (K=бесконечность).
Зная две точки мы сперва вычисляем угловой коэффициент К, который является ничем иным как тангенсом угла наклона.
Затем смещение относительно оси абсцисс - B.

Я так и не понял что ты хочешь сделать с плеером имея две его координаты и произвольную линию? Чтобы он оказался на прямой? Эта задач имеет два решения (при бесконечной прямой и до двух решений при ограниченной): мы можем сохранить текущий x и спроецировать y и наоброт.

impersonalis 11.06.2009 16:29

Ответ: расчёт нахождения точки на линии
 
Если нужно проверить - лежит ли точка на прямой, от достаточно чекнуть тождество.
Ypl==K*Xpl+B
или с учётом дискретности, вносимой вычислительной частью и разрядной сеткой
|Ypl-K*Xpl-B|<=Eps
где Eps погрешность

mustaeed 11.06.2009 16:48

Ответ: расчёт нахождения точки на линии
 
а что это за переменная x,y?
как вычислить xp1,xp2,yp1,yp2?

impersonalis 11.06.2009 17:11

Ответ: расчёт нахождения точки на линии
 
K=(ye-ys)/(xe-xs)
B=ye-K*xe

if |Ypl-K*Xpl-B|<=Eps
плеере на прямой с точность в Eps
else
хрен там!
endif

impersonalis 13.06.2009 18:06

Ответ: расчёт нахождения точки на линии
 
mustaeed ты разобрался?

odd 20.06.2009 02:58

Ответ: расчёт нахождения точки на линии
 
У меня где-то был записан векторный метод определения
попадает ли точка в заданный выпуклый N-угольник.
Если надо, могу откопать.

abcdef 20.06.2009 17:55

Ответ: расчёт нахождения точки на линии
 
если однозначно ясно что искомая точка лежит на прямой и нужно узнать какой путь она прошла от начала отрезка, distance = sqrt(dx*dx+dy*dy) , dx=x2-x1 ...

mustaeed 12.07.2009 20:11

Ответ: расчёт нахождения точки на линии
 
вот вернулся к программингу пробовал понять но так и не понял,
потом просто ввёл этот код, но он работает не правильно.

вообщем как мне высчитать точку Y у линии на определённой X?
извините но мне ничего в голову не приходит в геометрии я плох.

ABTOMAT 12.07.2009 20:13

Ответ: расчёт нахождения точки на линии
 
вообщем как мне высчитать точку Y у линии на определённой X?

Прямая линия - есть график функции y = k*x+b
Твоя задача - по конечным точкам высчитать коэффициент k и сдвиг b
А затем исходя из функции y = k*x+b подставив х найдёшь у

impersonalis 12.07.2009 20:32

Ответ: расчёт нахождения точки на линии
 
спасибо К.О. - посмотри начало темы. =\
Вообще ничего не буду отвечать, пздц просто.

mustaeed 12.07.2009 21:17

Ответ: расчёт нахождения точки на линии
 
Вложений: 1
незнаю он почемуто высчитывает Y по последней X у линии а не по тому X который я задаю, вот посмотри исходник.

mustaeed 14.07.2009 08:26

Ответ: расчёт нахождения точки на линии
 
impersonalis почему ппздц просто?

я проверил формулы из 8 и 13 поста, результат один он находит y от xe.

jimon 14.07.2009 13:40

Ответ: расчёт нахождения точки на линии
 
mustaeed
может в формулу стоит подставить X, а не XE, чтобы найти Y, а не YE ?

mustaeed 15.07.2009 10:50

Ответ: расчёт нахождения точки на линии
 
логично, как я сам не додумался,
но к сожалению щас попробовал всяко попереставлять pl_x вместо xe,
но либо вообще непредсказуемо начинает работать, либо результат тот же
выискивает по xe :-D

jimon 15.07.2009 12:37

Ответ: расчёт нахождения точки на линии
 
я не знаю в чём у тебя ошибка, может в том что в школу надо ходить было ?

вот рабочая формула, вытекает она из учебника 9 класса, ну не знаю ты должен быть заядлым гуманитарием чтобы этого не понимать
(Y-YS)/(YE-YS) = (X-XS)/(XE-XS)

отсюда находим Y
Y = (X-XS)*(YE-YS)/(XE-XS)+YS

проверяем правильна ли формала :
XS = YS = 1 задаём начальную точку (1,1)
XE = YE = 3 задаём конечную точку (3,3)
X = 2 задаём текущий X = 2, логично что Y тоже должен быть 2

находим Y по формуле подставивши числа
Y = (2-1)*(3-1)/(3-1)+1 = 1*1+1 = 2 получили правильный результат

если мой пост тебе не поможет то может стоит вообще забросить программирование ?

mustaeed 15.07.2009 16:08

Ответ: расчёт нахождения точки на линии
 
браво, какже не поможет формула рабочая, хотя конечно понять мне её не дано. :super:

mustaeed 15.07.2009 16:09

Ответ: расчёт нахождения точки на линии
 
всё, тема закрыта.

impersonalis 15.07.2009 20:48

Ответ: расчёт нахождения точки на линии
 
ситуация 3.14


Часовой пояс GMT +4, время: 16:02.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot