|
|
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
Подскажите пожалуйста, как определить, лежат ли три точки на прямой ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 07:46 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
Приложи линейку к монитору =). (реально самый простой способ) Ну а если серьезно вспоминает теорему пифагора и применяем ее на практике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 08:01 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
Посчитать векторное произведение векторов 1->2 и 1->3 и сравнить с нулём. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 08:02 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
Ещё вариант - проверить, что длина максимального из 3 возможных отрезков равна сумме длин остальных двух. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 08:03 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
AkinaПосчитать векторное произведение векторов 1->2 и 1->3 и сравнить с нулём. Проще нормализовать и сравнить с точки зрения реализации. Ну а мне больше нравится вариант с теоремой Пифагора которая намекает на соотношение катетов к гипотенузе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 08:34 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
В гугле забанили? тынц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 08:39 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
AkinaПосчитать векторное произведение векторов 1->2 и 1->3 и сравнить с нулём. По какой формуле? ))) Какое реение лучше и быстрее всего? )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 08:56 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
RMagistr2015, Векторное произведение лучше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 09:03 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
ИзопропилRMagistr2015, Векторное произведение лучше А формула есть? )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 09:26 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
RMagistr2015ИзопропилRMagistr2015, Векторное произведение лучше А формула есть? )) http://lmgtfy.com/?iie=1&q=векторное произведение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 09:58 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
BarloneRMagistr2015пропущено... А формула есть? )) http://lmgtfy.com/?iie=1&q=векторное произведение Спасибо )))) Ну я вот что-то не нашёл ((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 10:40 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
RMagistr2015Barloneпропущено... http://lmgtfy.com/?iie=1&q=векторное произведение Спасибо )))) Ну я вот что-то не нашёл ((( это же в школе вроде изучают? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 10:57 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
RMagistr2015Ну я вот что-то не нашёл Не верю! (с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 12:06 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
Расстояние между парой точек должно быть равно сумме расстояний между прочими ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 13:22 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
Шавлюк ЕвгенийРасстояние между парой точек должно быть равно сумме расстояний между прочими запиши это на GLSL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 14:54 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
если (y1=y2=y3) или (x1-x2)/(y1-y2)=(x2-x3)/(y2-y3) то они лежат на 1 прямой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 14:58 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
Проще все. Есть точки A, B, C, где B посередине. Код: plaintext 1. 2. 3. 4. 5. 6. 7. Если координаты double, то добавить учет погрешности ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 15:09 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
Roman Mejtesесли (y1=y2=y3) или (x1-x2)/(y1-y2)=(x2-x3)/(y2-y3) то они лежат на 1 прямой. ещё проверь, что в знаменателе не 0. Dima TПроще все. без условного оператора получится? Ещё раз всем фантазёрам - запишите тест на GLSL(или в командах SSE) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 15:20 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
ИзопропилDima TПроще все. без условного оператора получится? Код: plaintext 1. Изопропилзапишите тест на GLSL(или в командах SSE) GLSL как понимаю это OpenGL, ТС его не упоминал. Он вообще ЯП не упоминал, поэтому SSE тоже под вопросом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 15:40 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
Dima T, значит сразу нужно чисто делать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 15:55 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
Dima TЕсли координаты double, то добавить учет погрешности А вот это важно. Т.е. образно говоря, двумерная площадь треугольника о-о-очень маленькая, даже если математически треугольник равносторонний. Проще все А если они в 123-мерном пространстве? academic_ru Размерности, не равные трём Пусть D — размерность пространства. Векторное произведение, обладающее всеми свойствами обычного трёхмерного векторного произведения, то есть бинарное билинейное антисимметричное невырожденное отображение \mathbb{R}^D \times \mathbb{R}^D \to \mathbb{R}^D, можно ввести только для размерности 3. Однако есть простое обобщение на остальные натуральные размерности, начиная с 3, а если нужно — и на размерность 2 (последнее, правда, сравнительно специфическим образом). Тогда это обобщение, в отличие от невозможного, описанного чуть выше, вводится не для пары векторов, а лишь для набора (D - 1) векторов-сомножителей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 16:04 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
Изопропилзначит сразу нужно чисто делать Универсально и масштабируемо в N-мерном Евклидовом пр-ве над полем действительных чисел а) выше было: проверить неравенство треугольника или сумму и разность сторон. б) "в лоб" для уравнения прямой X= А+АВ*t найти точку Х= проекции т. С на эту прямую, затем длину отрезка |С Х|. В идеале длина == 0 Оба варианта - с учётом погрешности вычислений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 18:09 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
exp98А если они в 123-мерном пространстве? Это сложение векторов, если математику не забыл. Без разницы сколько измерений, только название переменных сменить с Width, Height на Измерение1, Измерение2 ... Измерение123. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 19:25 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
А как ты будешь среднюю точку выбирать? (я-то знаю) В лобовом решении недостаток только один: квадратное ур--ние по t -- это один раз sqrt(), зато резалт сразу записывается одной формулой. Кол-во букв в программе не зависит от размерности без всяких ухищрений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 09:28 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
exp98А как ты будешь среднюю точку выбирать? (я-то знаю) В лобовом решении недостаток только один: квадратное ур--ние по t -- это один раз sqrt(), зато резалт сразу записывается одной формулой. Кол-во букв в программе не зависит от размерности без всяких ухищрений. Никаких корней не надо: одно сравнение и перестановка если надо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 09:38 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
Наврал немного, одним сравнением не обойтись. 4 сравнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 09:41 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
И теперь в студию зависимость длины программы от размерности задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 10:48 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
Уже не надо, проверки в цикле вроде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 11:15 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
Достаточно одну размерность проверять, например Х, т.к. все точки на одной прямой. Допустим B должна быть в середине, тогда проверяем 4 варианта: ACB, CAB, BAC, BCA. Если один из них, то переставить B в середину. А можно просто отсортировать массив точек по Х. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 11:38 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
hclubmkтынц Там через площадь параллелограмма, т.е. векторное пр-ние, т.е. уже было. А вот про тольщину линии мы и забыли ... Dima, дезавуируй заявление:Достаточно одну размерность проверять, например Х, т.к. все точки на одной прямой. И напоследок: ТСу это всё наше так же надо, как и недавний цилиндр (кто помнит). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 12:36 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
exp98Dima, дезавуируй заявление:Достаточно одну размерность проверять, например Х, т.к. все точки на одной прямой. Если точки на прямой и упорядочены, то каждая из координат меняется монотонно, т.е. возрастает или убывает. т.е. если X A < X B < X C , то Y A < Y B < Y C или Y A > Y B > Y C ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 12:48 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
Roman Mejtesесли (y1=y2=y3) или (x1-x2)/(y1-y2)=(x2-x3)/(y2-y3) то они лежат на 1 прямой. А если все точки лежат на оси Абсцысс? ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 13:02 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
Изопропилзапиши это на GLSL Ну ТС ничего не говорил про GLSL А по факту есть точки А(x1, y1), B(x2, y2), C(x3, y3) Допустим B находитcя на прямой AC тогда расстояние AB+BC = AC AC = sqrt((x3 - x1)^2 + (y3 - y1)^2) AB = sqrt((x2 - x1)^2 + (y2 - y1)^2) BC = sqrt((x3 - x2)^2 + (y3 - y2)^2) Проверять надо по одному из вариантов: 1) сумму двух меньших чисел равна большей 2) AB+BC = AC или AB + АС = BC Количество измерений ничего не изменяет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 15:59 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
Шавлюк ЕвгенийИзопропилзапиши это на GLSL Ну ТС ничего не говорил про GLSL А по факту есть точки А(x1, y1), B(x2, y2), C(x3, y3) Допустим B находитcя на прямой AC тогда расстояние AB+BC = AC AC = sqrt((x3 - x1)^2 + (y3 - y1)^2) AB = sqrt((x2 - x1)^2 + (y2 - y1)^2) BC = sqrt((x3 - x2)^2 + (y3 - y2)^2) Проверять надо по одному из вариантов: 1) сумму двух меньших чисел равна большей 2) AB+BC = AC или AB + АС = BC Количество измерений ничего не изменяет всё уже проверено до нас, решение с векторным произведением самое ходовое в графике даже в общем случае легче проверить равенство модуля векторного произведения и произведения двух сторон |a*b| ?= |a|*|b| ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2017, 22:30 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan) векторного произведения и произведения двух сторон |a*b| ?= |a|*|b| скалярного, Cos=1, и сравнивать квадраты, чтоб без корня. Заданы точки А, В, С. Расстояние до прямой АВ вычисляется столь же просто, разница лишь вычислит-х затратах. i - номер координаты в N-мерном пр-ве Д - дельта (единая или несколько разных) = минимально допустимая дискретизация точек Х - пересеч. прямой АВ и перпендикуляра из С - её вычисляем, подставляем в формулы, и вуаля: Код: plaintext 1. В знаменателе - квадрат длины |ВА| В числителе квадрат скалярного произв-я АС и АВ Направление любого из векторов не имеет значения. if( |CX|^2 <= Д) делаем вывод о совпадении точек С и Х, т.е С лежит на прямой АВ. Из ухищрений: Используем квадрат расстояния, чтобы не извлекать корень. Чтобы не делить, сравниваем произведения: |CX|^2 * знаменатель <= Д * знаменатель одновременно с этим заменяем деление умножением, и избегаем деления на 0. Вдруг Знаменатель <= Д, значит точки совпадают. Тогда интерпретируем ответ на своё усмотрение, хотя если формально, то через них всегда проходит прямая. И кстати, если сравнить с 3Д векторным произв-ем. Там вычисляем площадь параллелограмма и смотрим она 0 или нет, а здесь смотрим непосредственно расстояние до прямой. Но треугольник может быть очень вытянутым и тогда площадь буде большой, а растояние до прямой будет на порядки меньше, и тогда "в лоб" может оказаться точнее. С другой стороны, когда |CX|^2 <= Д, то на самом деле |CX| <= sqrt(D), т.е. сильно длиннее. P/s Ну вот, свой вариант я довёл до конца. Квадратное уравнение свелось к линейному, необходимость в sqrt() исчезла. Всё можно вывести, и через косинус угла, но чем научнее, тем магичнее, и аналог точки Х явно либо неявно всё равно присутствует. В результате не знаю, есть ли для 321-измерений вариант лучше лобового и понятнее для школьника. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 17:33 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
exp98, ну да, скалярного ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2017, 19:37 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
Приходится заниматься исправительно-трудовыми работами: exp98Заданы точки А, В, С. Расстояние до прямой АВ вычисляется столь же просто, Оказалось, в прошлый раз я остановился на полпути. Короче, при услувиях, озвученных выше, запись в векторной форме: CX= AB*t - AC где t= (AB, AC) / |AB|^2В координатной форме: |CX|^2= SUM( ABi * t - ACi)^2 А дальше можно с ухищрениями - перенести знаменатель во избежание деления и т.д. Для порверки брал известный труг-к (5, 4, 3), с координатами AB= (4, 0) AC= (4, 3) - гипотенуза CX= CB= (4, -3) Справедливости ради стоит сказать, что вариант через квадрат косинуса выигрывает в скорости на порядок: авторCos( alfa) ^2= ( (AB, AC) )^2 / |AB|^2 / |AC|^2 (сравнить с формулой для t) Если точки на прямой, то Cos=1 - это и проверять. Надеюсь, что теперь всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2017, 20:15 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
exp98CX= CB= (4, -3) CX= CB= (0, -3) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2017, 20:17 |
|
||
|
Три точки на прямой
|
|||
|---|---|---|---|
|
#18+
RMagistr2015Подскажите пожалуйста, как определить, лежат ли три точки на прямой ? надо провести прямую через любые две точки ( определить k и c в формуле kx + c = 0 по двум точкам) и затем определить, удовлетворяет ли тебя точка этому уравнению ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2017, 08:18 |
|
||
|
|

start [/forum/topic.php?all=1&fid=16&tid=1340350]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
196ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
74ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 549ms |

| 0 / 0 |
