Программа на Паскале
Помогите пожалуйста с написанием программы на Паскале)
Разработка программы «Треугольник и точка» Дана точка А(х, у). Определить, принадлежит ли она треугольнику с вершинами в точках (х1,у1), (х2, у2), (х3,у3). Сделать рисунок. |
Вложений: 1
Цитата:
Код:
Var |
Цитата:
|
Только вот с рисунком теперь не могу разобраться, как бы правильно сделать(((
|
Цитата:
Цитата:
|
Вложений: 2
Ну вот, как-то так. Только уж извините - с координатной сеткой возиться не стал. Очень много мороки.
Код:
Uses Graph, CRT; |
Цитата:
|
Цитата:
|
Цитата:
Прежде всего, на чем основан алгоритм? А вот: соединим, как показано на рисунке в сообщении #2, проблемную точку (обозначим ее т.0) со всеми тремя вершинами треугольника. Теперь если т.0 находится внутри треугольника, то сумма углов с вершиной в т.0 составит 360°, если же вне - то меньше. Вот это и проверяется. Углы ищем по теореме косинусов. Но для этого нужно иметь функцию арккосинус, в списке стандартных функций Паскаля отсутствующую. Function ArcCos(z:real):Real; восполняет этот пробел. Проверять условие равенства суммы углов 360° удобнее, если углы выражены в градусах, а не в радианах. Перевод из радианов в градусы осуществляет функция Function RadGr(t:real):Real; Функция Function Angle(d1,d2,d3:real)Real; решает задачу нахождения значения угла между сторонами треугольника d1 и d2 по значению этих сторон, а также третьей d3, по теореме косинусов. И, наконец, о процедуре Procedure Search_MinMax(v1,v2,v3,v4:real; var Vmin:real; var Vmax:real); Смысл ее прост: из четырех чисел она находит наименьшее и наибольшее. Нужна она исключительно для оптимального размещения треугольника и точки т.0 на графическом экране, так, чтобы всё это во-первых, поместилось, а во-вторых, чтобы изображение не было мелким, смещенным в сторону и т.п., для чего и надо из координат трех вершин треугольника и точки т.0 найти наибольшую и наименьшую горизонтальные и вертикальные координаты, и уже исходя из них поставить "рамки" и определить масштабный коэффициент для построения изображения. Вот как-то так. Если еще вопросы появятся, задавайте. |
Цитата:
|
Часовой пояс GMT +4, время: 08:30. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.