Другие языки программирования и технологии
Объясните, пожалуйста, как написать программу в Pascal'e, которая определяет, находится ли координата в ромбе или нет.
Подскажите геометрическую формулу
Если представить уравнение прямой в виде
ax + by + c = 0
и подставить в него координаты произвольной точки, то для одной полуплоскости значение будет больше 0, для другой - меньше (0 выходит, очевидно, только для точек прямой. Таким образом для произвольного выпуклого многоугольника можно проверить, лежит точка внутри него или вне (в уравнения для каждой стороны подставить координаты точки и произвольной вершины, не принадлежащей стороне, если где-то знаки будут разные - точка снаружи) . В принципе, можно и сильно упростить, но для этого нужно знать то, что спросил Jurijus Zaksas.
---
Ну так составь уравнения прямых и сделай 4 проверки, делов-то...
ax + by + c = 0
и подставить в него координаты произвольной точки, то для одной полуплоскости значение будет больше 0, для другой - меньше (0 выходит, очевидно, только для точек прямой. Таким образом для произвольного выпуклого многоугольника можно проверить, лежит точка внутри него или вне (в уравнения для каждой стороны подставить координаты точки и произвольной вершины, не принадлежащей стороне, если где-то знаки будут разные - точка снаружи) . В принципе, можно и сильно упростить, но для этого нужно знать то, что спросил Jurijus Zaksas.
---
Ну так составь уравнения прямых и сделай 4 проверки, делов-то...
Для этого надо хотя бы знать, каким именно образом задан твой ромб. Если ромб произвольный - тогда ой.
Во-первых: данные координаты — не есть координаты ромба!
Чтобы это был ромб, нужно чтобы координаты последней точки были (-1;-1)
Во-вторых: Для строго выпуклых многоугольников (как в данном случае) можно просто разбить на несколько треугольников (В данном случае достаточно 2 треугольника. К примеру: (-3;0.5),(-1;2),(1;0.5) и (-3;0.5),(-1;-1),(1;0.5)). После чего проверить «принадлежит ли точка хотя-бы одному из этих треугольников» .
Для не строго выпуклых многоугольников существует
В-третьих: Проверка на принадлежность точки X треугольнику ABC сводится к проверки соизмеримости площади исходного треугольника ABC и суммы площадей треугольников ABX, ACX, BCX.
В-четвёртых: Для нахождения площади треугольника по трём точкам заданным своими координатами можно использовать формулу Герона, а можно вывести формулу площади через определитель. Эта формула будет содержать всего 2 или 3 операции умножения!
P.S. Ещё есть метод трассировки луча… Но он для общего случая!
Чтобы это был ромб, нужно чтобы координаты последней точки были (-1;-1)
Во-вторых: Для строго выпуклых многоугольников (как в данном случае) можно просто разбить на несколько треугольников (В данном случае достаточно 2 треугольника. К примеру: (-3;0.5),(-1;2),(1;0.5) и (-3;0.5),(-1;-1),(1;0.5)). После чего проверить «принадлежит ли точка хотя-бы одному из этих треугольников» .
Для не строго выпуклых многоугольников существует
В-третьих: Проверка на принадлежность точки X треугольнику ABC сводится к проверки соизмеримости площади исходного треугольника ABC и суммы площадей треугольников ABX, ACX, BCX.
В-четвёртых: Для нахождения площади треугольника по трём точкам заданным своими координатами можно использовать формулу Герона, а можно вывести формулу площади через определитель. Эта формула будет содержать всего 2 или 3 операции умножения!
P.S. Ещё есть метод трассировки луча… Но он для общего случая!
Похожие вопросы
- Напишите программу на Pascal. В цистерне N литров молока.
- Люди помогите написать программы для Pascal очень срочно и очень нужно
- Пожалуйста,помогите написать программу,которая определяет длину самой длинной подстроки из подряд стоящих букв "с"!
- Помогите ламеру написать программу на Pascal.
- Помогите написать программу в PASCAL!!!
- написать программу на Pascal.
- нужно написать программу в Pascal.
- Помогите написать программу в Pascal abc net
- Помогите пожалуйста написать программу на pascal
- Напишите программу для pascal, пожалуйста. Введена дата, определить дату следующего воскресенья.