Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/179: Рейтинг темы: голосов - 179, средняя оценка - 4.56
0 / 0 / 1
Регистрация: 13.06.2012
Сообщений: 60
1

Определить, лежат ли три данные точки на одной прямой

06.01.2013, 22:29. Показов 37128. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Даны координаты трёх точек: (x1,y1),(x2,y2),(x3,y3)
Гарантируется , что они различны (не совпадают).
Определить: лежат ли они на одной прямой.

Добавлено через 1 час 10 минут
Написал формулу: (((x2-x1)*(y3-y2))-((x3-x2)*(y2-y1)))=0
Исходя из того, что
(x2-x1;y2-y1) - координаты вектора первого
(x3-x2;y3-y2) - координаты вектора второго
А косое произведение векторов равно нуля когда вектора лежат на одной прямой.
Но вот и сразу нашёл контрпример: (-8;2),(-3;-3),(-5;-1)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.01.2013, 22:29
Ответы с готовыми решениями:

Определить, лежат ли точки (a, b) и (c, d) на прямой L
Здравствуйте, необходима помощь в решении следующих задач: 1. Даны действительные числа...

Определить, лежат ли точки на одной прямой
подскажите, я написал код, но если ввести координаты при которых точки не лежат на одной прямой, то...

Выяснить лежат ли эти точки на одной прямой
Даны координаты трех точек на плоскости. Выяснить лежат ли эти точки на одной прямой. Вычисление...

Выяснить, лежат ли две точки в одной полуплоскости относительно заданной прямой
Даны действительные числа x, y. Точки с координатами (x,y),(x,y),(x,y) расcматриваются как...

16
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
06.01.2013, 23:10 2
Зачем вы векторы сюда приплели? Задача же в лоб решается. Берете любые две из этих точек, формируете уравнение прямой. Все три лежат на одной прямой тогда, и только тогда, когда третья точка удовлетворяет тому же уравнению.
0
0 / 0 / 1
Регистрация: 13.06.2012
Сообщений: 60
06.01.2013, 23:37  [ТС] 3
Цитата Сообщение от HighPredator Посмотреть сообщение
Зачем вы векторы сюда приплели? Задача же в лоб решается. Берете любые две из этих точек, формируете уравнение прямой. Все три лежат на одной прямой тогда, и только тогда, когда третья точка удовлетворяет тому же уравнению.
А как решать по другому? Вывел уравнение прямой проходящей через 2 точки (приложение).
Если подставляю в неё вместо x и y, координаты 3 точки(x3,y3), то получается надо только проверить равенство.
Протестировал, выполняется, но всегда ли будет выполнятся эта формула?
Миниатюры
Определить, лежат ли три данные точки на одной прямой  
0
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
06.01.2013, 23:43 4
Цитата Сообщение от Андрей1992 Посмотреть сообщение
Если подставляю в неё вместо x и y, координаты 3 точки(x3,y3), то получается надо только проверить равенство.
Совершенно верно. Остается только проверить равенство нулю.
Цитата Сообщение от Андрей1992 Посмотреть сообщение
но всегда ли будет выполнятся эта формула?
А подумать? Вспомнить школьный курс? Понимаете ли вы, что если у вас есть уравнение прямой, это означает, что все точки, принадлежащие прямой, удовлетворяют данному уравнению?
2
21 / 18 / 4
Регистрация: 07.04.2010
Сообщений: 806
14.02.2014, 18:06 5
Можете подсказать, какой геометрический смысл данной программы?С меня требуют именно ответ на этот вопрос!
0
Форумчанин Паскаля
77 / 90 / 55
Регистрация: 08.11.2013
Сообщений: 399
Записей в блоге: 2
14.02.2014, 19:00 6
Цитата Сообщение от sergei3ru Посмотреть сообщение
Можете подсказать, какой геометрический смысл данной программы?С меня требуют именно ответ на этот вопрос!
Попробуйте обратиться в мат. раздел
0
21 / 18 / 4
Регистрация: 07.04.2010
Сообщений: 806
14.02.2014, 19:03 7
Уже обратился!
0
Форумчанин Паскаля
77 / 90 / 55
Регистрация: 08.11.2013
Сообщений: 399
Записей в блоге: 2
15.02.2014, 00:12 8
Цитата Сообщение от sergei3ru Посмотреть сообщение
Уже обратился!
Не помогли?
0
21 / 18 / 4
Регистрация: 07.04.2010
Сообщений: 806
15.02.2014, 00:15 9
Ответ один очень подходит:
Берёте за базовую одну из точек, отнимаете её координаты от двух других точек. Получаете два вектора. Если все три точки лежат на одной прямой, то x1/x2 = y1/y2 = z1/z2.

Вот это ответ очень похож на истину, как раз то, что она требуем, но у меня вопрос от куда появились координаты z1 и z2, если у нас точки и вектора на плоскости, а не в пространстве или я что-то путаю?
1
2 / 2 / 2
Регистрация: 28.12.2014
Сообщений: 44
01.01.2015, 17:44 10
Выполнил задание следующим образом:

Java
1
2
3
4
5
6
7
8
9
10
    // Лежат ли 3 точки на одной прямой
    public boolean isLine(Point o2, Point o3) {
        if ( ((this.x-o3.x)/(o2.x-o3.x)) == ((this.y-o3.y)/(o2.y-o3.y)) ) {
            System.out.println("Точки лежат на одной прямой.");
                return true;
        } else {
            System.out.println("Точки не лежат на одной прямой.");
            return false;
        }
    }
Миниатюры
Определить, лежат ли три данные точки на одной прямой  
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
01.01.2015, 18:05 11
Вариант с делением самый плохой, поскольку в знаменателях может быть 0
0
2 / 2 / 2
Регистрация: 28.12.2014
Сообщений: 44
02.01.2015, 10:21 12
Спасибо, воспользуюсь предведущей формулой с умножением.

Java
1
2
3
4
5
6
7
8
9
10
    // Лежат ли 3 точки на одной прямой
    public boolean isLine(Point o2, Point o3) {
        if ( ((this.x-o3.x)*(o2.y-o3.y)) == ((o2.x-o3.x)*(this.y-o3.y)) ) {
            System.out.println("Точки лежат на одной прямой.");
                return true;
        } else {
            System.out.println("Точки не лежат на одной прямой.");
            return false;
        }
    }
0
1642 / 1091 / 487
Регистрация: 17.07.2012
Сообщений: 5,345
04.01.2015, 18:40 13
У меня вопрос, а нельзя просто проверить длины отрезков? Т.е один из отрезков должен быть равен сумме других.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
04.01.2015, 18:43 14
Цитата Сообщение от Новичок Посмотреть сообщение
а нельзя просто проверить длины отрезков?
А кто сказал что это проще и быстрее? Нужно найти длины 3 отрезков и провести 3 сравнения.
0
1642 / 1091 / 487
Регистрация: 17.07.2012
Сообщений: 5,345
04.01.2015, 18:46 15
Просто имхо, так проще. Все решения что выше, мне кажутся более сложными.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
04.01.2015, 18:47 16
Если даны координаты трех точек, то
Pascal
1
if (x1-x3)*(y2-y3)-(x2-x3)*(y1-y3)=0 then write('Точки лежат на одной прямой');
0
1642 / 1091 / 487
Регистрация: 17.07.2012
Сообщений: 5,345
04.01.2015, 18:49 17
А, ну значит есть более простой путь чем мой. Я не знал такой формулы.
0
04.01.2015, 18:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.01.2015, 18:49
Помогаю со студенческими работами здесь

По координатам трех точек на плоскости определить, лежат ли они на одной прямой
По координатам трех точек на плоскости определить, лежат ли они на одной прямой.

Выяснить лежат ли точки на одной прямой. Типизированный файлы(тип запись и файлы)
Помогите,пожалуйста!!!.Как сделать проргармму через файлы и записи? Вычисление свойств. Дана...

По координатам трех точек на плоскости (в пространстве) определить, лежат ли они на одной прямой
По координатам трех точек на плоскости (в пространстве) определить, лежат ли они на одной...

Определить лежат ли точки на одной окружности с центром в точке О
Заданы координаты двух точек. Определить лежат ли они на одной окружности с центром в точке О(х0,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru