На плоскости даны координаты вершин фигуры (или нескольких фигур) и точки. Нужно узнать находится ли точка внутри фигуры (фигрур) или нет.
Я думаю, что надо составить уравнение каждой прямой фигуры и сделать проверку, чтобы узнать по какую сторону от линии лежит точка, и таким образом получить ответ. Подскажите в двух словах как проверить слева или справа отпрямой находится точки и есть ли более быстрый, лучший способ получить ответ?
Другие языки программирования и технологии
Как узнать находится ли точка внутри фигуры?
Возмем треугольник – по Герону – площадь,
Затем вместо одной вершины, возмем данную точку
И снова площадь … если меньше .. значит внутри.
Сложную фигуру разобъем на треугольники и так же.
Это если выпуклая. Если нет … то смотреть,
Не должна принадлежать вогнутости – так же.
Это самый общий случай.
Затем вместо одной вершины, возмем данную точку
И снова площадь … если меньше .. значит внутри.
Сложную фигуру разобъем на треугольники и так же.
Это если выпуклая. Если нет … то смотреть,
Не должна принадлежать вогнутости – так же.
Это самый общий случай.
Если фигура правильная, то возможно и правы, так как идя по каждой линии (обход по часовой стрелке) точка должна быть справа. Но, в общем, есть встроенные функции для этого, а если Вас интересует матаппарат, то почитайте книги.
Случаи когда фигура не правильная самые интересные.
Случаи когда фигура не правильная самые интересные.
Если не понял что написал саша мошкин пиши сделаю за тебя
Лучшеб фигуру привели для примера
А можно сделать хитро, через WinAPI:
Declare Function CreatePolygonRgn Lib "gdi32.dll" (lpPoint As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
Declare Function PtInRegion Lib "gdi32.dll" (ByVal hrgn As Long, ByVal x As Long, ByVal y As Long) As Boolean
Type POINTAPI
x As Long
y As Long
End Type
Sub Hop()
Dim crd() As POINTAPI
Dim hrgn As Long
x = InputBox("Введите координату x точки")
y = InputBox("Введите координату y точки")
cnt = InputBox("Введите количество вершин многоугольника")
ReDim crd(1 To cnt)
For i = 1 To cnt
crd(i).x = InputBox("Введите координату x " & i & "-й вершины многоугольника")
crd(i).y = InputBox("Введите координату y " & i & "-й вершины многоугольника")
Next
hrgn = CreatePolygonRgn(crd(1), cnt, 1)
If PtInRegion(hrgn, x, y) Then
MsgBox "Точка принадлежит многоугольнику"
Else: MsgBox "Точка не принадлежит многоугольнику"
End If
End Sub
Declare Function CreatePolygonRgn Lib "gdi32.dll" (lpPoint As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
Declare Function PtInRegion Lib "gdi32.dll" (ByVal hrgn As Long, ByVal x As Long, ByVal y As Long) As Boolean
Type POINTAPI
x As Long
y As Long
End Type
Sub Hop()
Dim crd() As POINTAPI
Dim hrgn As Long
x = InputBox("Введите координату x точки")
y = InputBox("Введите координату y точки")
cnt = InputBox("Введите количество вершин многоугольника")
ReDim crd(1 To cnt)
For i = 1 To cnt
crd(i).x = InputBox("Введите координату x " & i & "-й вершины многоугольника")
crd(i).y = InputBox("Введите координату y " & i & "-й вершины многоугольника")
Next
hrgn = CreatePolygonRgn(crd(1), cnt, 1)
If PtInRegion(hrgn, x, y) Then
MsgBox "Точка принадлежит многоугольнику"
Else: MsgBox "Точка не принадлежит многоугольнику"
End If
End Sub
Похожие вопросы
- Как определить точку внутри треугольника? Turbo Delphi
- Как повернуть вот эту фигуру кончиком к эльфу в фотошопе? ( скрин внутри )
- Как по координатам трех точек треугольника определить - начало координат находится внутри него или за его пределами?
- Как узнать угол поворота между двумя точками?
- Движение фигур в Паскале!
- Полая фигура (3ds max 2014)
- Изображение с прозрачным фоном и заливка фигуры
- Как сделать реалистичный фон в фотошопе, за фигурой человека?
- Вывести в консоль полые геометрические фигуры используя язык C и библиотеку stdio.h .
- Как узнать правильное количество цвета в файле в Corel Draw ?? (подробности внутри)