С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
1 / 1 / 0
Регистрация: 05.10.2021
Сообщений: 19

Проходит ли прямая через точку

21.10.2022, 17:51. Показов 1410. Ответов 7

Студворк — интернет-сервис помощи студентам
Дан класс Линия с толщиной, которая задается 2-мя точками с координатами и толщиной соответственно. Написать метод, который проверяет, проходит ли эта прямая через третью точку(переданную как параметр в функцию). Не совсем понимаю, как с математической точки зрения это решать. Моя догадка: вводить толщину или окрестность точки, но я в этом не уверен.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.10.2022, 17:51
Ответы с готовыми решениями:

Функция проверяющая что прямая проходит через заданную точку
Так как я нуб в программировании, прошу помощи с таким заданием: Прямая Ax+By+C = 0 проходит через точку (x0;y0), если C= -Ax0 -...

Создайте структуру Прямая с элементами x1, y1, x2, y2 – координаты двух точек, через которые проходит прямая
Создайте структуру Прямая с элементами x1, y1, x2, y2 – координаты двух точек, через которые проходит прямая. Для К заданных прямых...

Структуры (Создайте структуру Прямая с элементами x1, y1, x2, y2 – координаты двух точек, через которые проходит прямая)
Создайте структуру Прямая с элементами x1, y1, x2, y2 – координаты двух точек, через которые проходит прямая. Для К заданных прямых вывести...

7
1 / 1 / 0
Регистрация: 05.10.2021
Сообщений: 19
22.10.2022, 00:24  [ТС]
Подумал еще над вариантом, что можно линию с толщиной представить в виде прямоугольника, и считать площади 4-х треугольников, если они в сумме будут равны площади прямоугольника, то точка внутри. Но тут проблема встает, как вычислить координаты точек, которые задают этот прямоугольник, ведь по сути, дана будет прямая, которая лежит внутри этого прямоугольника и является его средней линией. Есть(пока гипотеза), что можно попробовать выразить эти 4 точки через вектор, равный половине толщины(т.к. в разные стороны от центра увеличиваем прямую), получить две точки, а потом прибавить к ним длину вектора из данных по условию задачи точек, чтобы получить еще 2 точки. Но опять же в этом нет уверенности
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
22.10.2022, 02:44
Лучший ответ Сообщение было отмечено Kadorr как решение

Решение


Kadorr, на рисунке выше, точка С' - это прекция точки С на прямую AB.
Решение в векторной форме.
Для решения задачи саму точку искать не нужно, достаточно убедиться, что она лежит на отрезке AB и квадрат длины вектора СС' меньше или равен квадрату половины толщины.
Для нахождения вектора СС' нужно сначала найти вектор AC' (псевдокод):
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
AC = C - A
AB = B - A
 
// k - коэффициент проекции, т.е. отношение длины вектора AC' к длине вектора AB, а знак определяет направление
// функция dot - скалярное произведение векторов
k = dot(AC, AB) / dot(AB, AB)
 
// если k в диапазоне [0, 1], значит точка С' лежит на отрезке AB
// тогда можно считать вектор AC'
AC' = k * AB
 
CC' = AC' - AC
 
// проверка попадания в "толщину" h
dot(CC', CC') <= h * h / 4
0
1 / 1 / 0
Регистрация: 05.10.2021
Сообщений: 19
22.10.2022, 10:49  [ТС]
.
Добавлено через 1 минуту
zayats80888, Вроде все понял, кроме нахождения коэффициента k. Почему у нас длина вектора AC' - это скалярное произведение AC и AB?
0
Модератор
Эксперт Java
 Аватар для alecss131
2848 / 1356 / 404
Регистрация: 11.08.2017
Сообщений: 4,330
Записей в блоге: 2
22.10.2022, 11:21
Цитата Сообщение от zayats80888 Посмотреть сообщение
она лежит на отрезке AB
Не обязательно, точка может быть за пределами точек А и В, тогда треугольник будет тупоугольный (если рисунок менять). Ведь же прямая не ограничивается двумя точками, иначе это отрезок. Если точка вне отрезка AB то она может лежать на прямой
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
22.10.2022, 15:05
Цитата Сообщение от Kadorr Посмотреть сообщение
Почему у нас длина вектора AC' - это скалярное произведение AC и AB?
С чего ты это взял? Я такого не говорил. Там речь об отношении величин. Если X относится относится Y, как 1 к 2, то X и Y могут быть соответственно равны 2 и 4, 3 и 6 и т.д.
Если разъяснять подробнее, то длина вектора AC' равна абсолютной величине dot(AC, AB) / sqrt(dot(AB, AB))(знак определяет сонаправленность с вектором AB), единичный вектор AB равен AB / sqrt(dot(AB, AB)), отсюда вектор AC' получается перемножением двух этих величин. Напиши на бумажке, упрости, и получишь вышеупомянутое AC' = k * AB

Цитата Сообщение от alecss131 Посмотреть сообщение
Не обязательно, точка может быть за пределами точек А и В
Ты про то, что в условии написано про прямую?
Я что-то не обратил внимания.
Тогда просто исключаем проверку принадлежности k диапазону [0, 1].

Или еще проще, составляем уравненеие прямой (Ay - By)x + (Bx - Ax)y + (AxBy - BxAy) = 0 , подствляем в него координаты точки и получаем расстояние(со знаком) до прямой. Ну и сравниваем его с половиной толщины.
0
1 / 1 / 0
Регистрация: 05.10.2021
Сообщений: 19
22.10.2022, 22:47  [ТС]
zayats80888, А откуда взялось третье слагаемое?
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
22.10.2022, 23:10
Цитата Сообщение от Kadorr Посмотреть сообщение
А откуда взялось третье слагаемое?
Что значит откуда? Это общее уранение прямой Ax + By + C = 0.
Просто преобразование уравнения (x - Ax) / (Bx - Ax) = (y - Ay) / (By - Ay).

Добавлено через 9 минут
Для уточнения:

Цитата Сообщение от zayats80888 Посмотреть сообщение
Ax + By + C = 0.
тут A, B, C - это коэффициенты

Цитата Сообщение от zayats80888 Посмотреть сообщение
(Ay - By)x + (Bx - Ax)y + (AxBy - BxAy) = 0
и
Цитата Сообщение от zayats80888 Посмотреть сообщение
(x - Ax) / (Bx - Ax) = (y - Ay) / (By - Ay)
тут Ax, Bx, Ay, By - соответствующие координаты точек прямой A и B
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.10.2022, 23:10
Помогаю со студенческими работами здесь

Даны координаты точек (x1;y1) (x2;y2). Определить проходит ли прямая, заданная уравнением y=ax+b через эти точки
Даны координаты точек (x1;y1) и (x2;y2). Определить проходит ли прямая, заданная уравнением y=ax+b через эти точки.

Класс Прямая(Помогите реализовать построение прямой через 1 точку и параллельную ей прямую)
Помогите дописать класс // Методы класса &quot;Прямая&quot; // ------------------------------------------------------------- //...

36. График функции у = ах2 + Ьх+ с проходит через заданную точку с координатами (т, п)
36. График функции у = ах2 + Ьх+ с проходит через заданную точку с координатами (т, п).

Прямая проходит через точку (N-5, 2). Найти общее уравнение прямой
Доброго времени суток, помогите пожалуйста,очень-очень срочно: N=19. Угол наклона прямой относительной оси Ох 30 градусов. Прямая...

Проходит ли прямая через прямоугольник?
Даны x1, x2, a, b, c, x, y – вещественные числа. Определить, принадлежат ли точки прямой ax+by+c=0 прямоугольнику с вершиной(левой...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru