2. Моделирование физических процессов.

advertisement
1
XIII городской конференции
"Юность Архангельска"
Секция - программирование
и информационные технологии
Название работы
Моделирование физических процессов
в среде программирования Lazarus
Работу выполнила:
Степырева Евгения Александровна,
10а класс МБОУ ОГ № 6
Научный руководитель:
Харлова Елена Викторовна,
учитель информатики, ВКК
г. Архангельск
2012 год
2
СОДЕРЖАНИЕ
ВВЕДЕНИЕ…………………………………………………………………………..………1
1. Модель и моделирование …………………………………………….……..………..2
1.1.
Представление о компьютерном моделировании…….……………………..2
1.1.1. Этапы компьютерного моделирования……………………………...4
2. Моделирование физических процессов. …………………………....................4
2.1.
Алгоритм
построения графика функции в среде программирования
Lazarus……………………………………………………………..……………….………4
2.2.
Алгоритм создания физической модели в общем виде……….….……...6
2.2.1. Моделирование равномерного движения тела……………..….……...6
2.2.2.
Моделирование равноускоренного движения тела……………..….….7
2.2.3.
Моделирование движения тела, брошенного под углом к горизонту..8
а). Моделирование движения тела, брошенного под углом к горизонту без
учета сопротивления воздуха…………………………………………………...8
б). Моделирование движения тела, брошенного под углом к горизонту с
учетом сопротивления среды ...………………………………………………..9
ЗАКЛЮЧЕНИЕ……………………………………………………………………...……...12
БИБЛИОГРАФИЧЕКИЙ СПИСОК…………………………………………..…………...13
ПРИЛОЖЕНИЕ 1………………………………………………………………..………….14
ПРИЛОЖЕНИЕ 2……………………………………………………………..…………….16
3
ВВЕДЕНИЕ
Компьютерное
познания, анализа
ответственные
моделирование –
и
проектирования,
за разработку
и
один
из
самых
которым
функционирование
мощных
располагают
инструментов
специалисты,
сложных технологий.
Идея
компьютерного моделирования проста и в то же время интуитивно привлекательна.
Она дает возможность исследователю экспериментировать с объектами в тех случаях,
когда делать это на реальном объекте практически невозможно или нецелесообразно.
Сущность методологии компьютерного моделирования состоит в замене исходного
технологического объекта его «образом» - математической моделью – и в дальнейшем
изучении модели с помощью реализуемых на компьютерах вычислительно-логических
алгоритмов. Этот метод познания, конструирования, проектирования сочетает в
себе
достоинства как теории, так и эксперимента. Работа не с самим объектом (явлением,
процессом), а с его моделью дает возможность относительно быстро и без
существенных затрат исследовать его свойства и поведение в любых мыслимых ситуациях
(преимущества теории). В то же время вычислительные (имитационные) эксперименты с
моделями объектов позволяют подробно и глубоко изучать объекты в достаточной
полноте, недоступной чисто теоретическим подходам (преимущества эксперимента).
В экспериментальной физике графическое моделирование процессов используется
для различных целей, главной из которых является возможность наглядно проследить
вид функциональной зависимости рассматриваемых величин и их закономерное
изменение.
Поэтому нами была поставлена цель: создать
экспериментальную программу
моделирования физических процессов в среде программирования Lazarus
Для достижения цели были поставлены следующие задачи:
1.
Познакомиться с объектно-ориентированным программированием в
свободной среде программирования Lazarus.
2.
Изучить литературу по теме «Моделирование физических процессов»
для того, чтобы модель отражала реальные свойства оригинала.
3.
Освоить методы моделирования физических процессов
4.
Изучить процедуру проведения компьютерного эксперимента
5.
Построить графические модели
равномерного, равноускоренного
движения, движения тела, брошенного под углом к горизонту с учетом и без учета
сопротивления среды.
Объект исследования – физические процессы, предмет исследования – моделирование
физических процессов в среде программирования Lazarus.
4
1. Модель и моделирование.
Модель и моделирование – это универсальные понятия, атрибуты одного из
наиболее мощных методов познания в любой профессиональной области, познания
объекта, процесса, явления (через модели и моделирование).
Модели и моделирование объединяют специалистов различных областей,
работающих над решением межпредметных проблем, независимо от того, где эта модель
и результаты моделирования будут применены.
Модель – это некоторое представление или описание оригинала (объекта, процесса,
явления), которое при определенных предложениях, гипотезах о поведении оригинала
позволяет замещать оригинал для его лучшего изучения, исследования, описания его
свойств.
Проблема моделирования состоит из трех взаимосвязанных задач: построение
новой (адаптация известной) модели; исследование модели (разработка метода
исследования или адаптация, применение известного); использование (на практике или
теоретически) модели.
Наука моделирования состоит в разделении процесса моделирования (системы,
модели) на этапы (подсистемы, подмодели), детальном изучении каждого этапа,
взаимоотношений, связей, отношений между ними и затем эффективного описания их с
максимально возможной степенью формализации и адекватности.
1.2.
Представление о компьютерном моделировании
Современное моделирование сложных процессов и явлений невозможно без
компьютера, без компьютерного моделирования.
Компьютерное моделирование как метод познания основано на математическом
моделировании. Математическая модель – это система математических соотношений
(формул, уравнений, неравенств и знаковых логических выражений) отображающих
существенные свойства изучаемого объекта или явления.
Очень редко удается использовать математическую модель для конкретных
расчетов без использования вычислительной техники, что с неизбежностью требует
создания некоторой компьютерной модели.
Рассмотрим процесс компьютерного моделирования более подробно.
Компьютерное моделирование является одним из эффективных методов изучения
сложных систем. Компьютерные модели проще и удобнее исследовать в силу их
возможности проводить вычислительные эксперименты, в тех случаях, когда реальные
эксперименты затруднены из-за финансовых или физических препятствий или могут дать
5
непредсказуемый результат. Логичность компьютерных моделей позволяет выявить
основные факторы, определяющие свойства изучаемого объекта-оригинала (или целого
класса объектов), в частности, исследовать отклик моделируемой физической системы на
изменения ее параметров и начальных условий.
Компьютерное
моделирование
как
новый
метод
научных
исследований
основывается на:
1. Построении математических моделей для описания изучаемых процессов;
2. Использовании
новейших
вычислительных
машин,
обладающих
высоким
быстродействием (миллионы операций в секунду) и способных вести диалог с
человеком.
1.2.1. Этапы компьютерного моделирования
Построение компьютерной модели базируется на абстрагировании от конкретной
природы явлений или изучаемого объекта-оригинала и состоит из двух этапов – сначала
создание качественной, а затем
и
количественной
модели.
Компьютерное же
моделирование заключается в проведении серии вычислительных экспериментов на
компьютере, целью которых является анализ, интерпретация и сопоставление результатов
моделирования с реальным поведением изучаемого объекта и, при необходимости,
последующее уточнение модели и т. д.
Итак, к основным этапам компьютерного моделирования относятся:
1. Постановка задачи, определение объекта моделирования:
на данном этапе происходит сбор информации, формулировка вопроса,
определение целей, формы представления результатов, описание данных.
2. Анализ и исследование системы:
анализ
системы,
содержательное
описание
объекта,
разработка
информационной модели, анализ технических и программных средств,
разработка структур данных, разработка математической модели.
3. Формализация, то есть переход к математической модели, создание алгоритма:
выбор метода проектирования алгоритма, выбор формы записи алгоритма,
выбор метода тестирования, проектирование алгоритма.
4. Программирование:
выбор языка программирования или прикладной среды для моделирования,
уточнение способов организации данных, запись алгоритма на выбранном
языке программирования (или в прикладной среде).
5. Проведение серии вычислительных экспериментов:
6
отладка синтаксиса, семантики и логической структуры, тестовые расчеты и
анализ результатов тестирования, доработка программы.
6. Анализ и интерпретация результатов:
доработка программы или модели в случае необходимости.
2. Моделирование физических процессов.
В экспериментальной физике графическое моделирование физического процесса
используется для различных целей.
Во-первых, графики строят
для того, чтобы определить некоторые величины,
- обычно наклон или отрез, отсекаемый на оси ординат, прямой, изображающей
зависимость между двумя переменными.
Во-вторых, и это, пожалуй, самое главное,
графиками пользуются для
наглядности.
В-третьих,
графиками
пользуются
в
экспериментальной
работе,
чтобы
установить эмпирическое соотношение между двумя величинами.
Моделирование
функциональной
зависимости
можно
проводить
по
аналитическим (точным) формулам или по приближенным, полученным в результате
решения
некоторого
Количество
исходного
смоделированных
уравнения
точек
при
численным (приближенным)
работе
с аналитическими
методом.
формулами
колеблется от нескольких десятков до нескольких сотен; при численном решении
количество точек берется от нескольких сотен до нескольких тысяч.
Все величины, входящие в функциональную
зависимость, разделяют на
постоянные и переменные. Это разделение необходимо для определения вида ссылки
(абсолютная или относительная, соответственно) при создании формулы.
2.1.
Алгоритм
построения графика функции в среде программирования
Lazarus
Алгоритм построения графика непрерывной функции y=f(x) на отрезке [a;b]
состоит в следующем: необходимо построить точки (xi,f(xi)) в декартовой системе
координат и соединить их прямым линиями. Координаты точек определяются по
следующим формулам:
hx=(b-a)/N,
где N— количество отрезков на отрезке [a;b].
xi=a+(i-1)* hx; yi=f(xi), где i =0,N
7
Чем больше точек будет изображено, тем более плавным будет построенный
график.
При переносе этого алгоритма на форму или другой компонент Lazarus учитывает
размеры и особенности компонента (ось ОX направлена слева направо, ее координаты
лежат в пределах от 0 до Width; ось OY направлена вниз, ее координаты находятся в
пределах от 0 до Height). Значения координат X и Y должны быть целыми.
Необходимо пересчитать все точки из «бумажной» системы координат (X
изменяется в пределах от а до b, Y изменяется от минимального до максимального
значения функции) в «компонентную» (в этой системе координат ось абсцисс обозначим
буквой U, 0 ≤ U ≤Wigth, а ось ординат — буквой V , 0 ≤ V ≤ Height).
Для преобразования координаты X в координату U построим линейную функцию
cX+d, которая переведет точки из интервала (a;b) в точки интервала (X0,Width-Xk).
Поскольку точка a «бумажной» системы координат перейдет в точку X0
«экранной», а точка b— в точку
Width-Xk, то система линейных уравнений для
нахождения коэффициентов c и d имеет вид:
Решив ее, найдем коэффициенты c, d:
Для преобразования координаты Y в координату V построим линейную функцию
V=gY+h. Точка min «бумажной» системы координат перейдет в точку Height-YK
«компонентную», а точка max– в точку Y0.Для нахождения коэффициентов g и h решим
систему линейных алгебраических уравнений:
(1)
Ее решение позволит найти нам коэффициенты g и h
(2)
Алгоритм построения графика на экране монитора можно разделить на следующие
этапы:
1. Определить число отрезков N, шаг изменения переменной X.
8
2. Сформировать массивы X, Y , вычислить максимальное (max) и минимальное
(min) значения Y.
3. Найти коэффициенты c, d, g и h по формулам (1), (2).
4. Создать массивы Ui=cXi+d, Vi=gY i+h.
5. Последовательно соединить соседние точки прямыми линиями с помощью
функции LineTo.
6. Изобразить систему координат, линий сетки и подписи.
Алгоритм создания физической модели в общем виде
2.2.
При создании алгоритма построения физической модели в общем виде можно выделить
следующие этапы:
1. Составить математическую модель процесса или выписать все расчетные формулы.
2. На форме располагаем текстовые поля для ввода с клавиатуры
1) начальных значений величин х и у, а также всех других, входящих в расчетные
формулы (например, начальная скорость, начальная координата и т.д.);
2) значения величин, входящих в функциональную зависимость (например, угол, под
которым произведен бросок);
3. Выполнить (при необходимости) перевод величин из одной системы единиц в другую.
4. Построить график зависимости у(х).
2.2.1. Моделирование равномерного движения тела
Рассмотрим моделирование такого физического процесса, как движение тела с
некоторой постоянной скоростью
v
=const. Поскольку ни одна из характеристик
скорости (направление и величина) не изменяется, движение будет происходить вдоль
прямой линии, т.е. является прямолинейным. Совместим с этой прямой ось Ох. Каждую
секунду координата x тела будет получать одно и то же приращение, поэтому в любой
момент времени может быть найдена как x =vx *t, где vx - проекция вектора скорости на
ось Ох.
Графическое моделирование процесса равномерного прямолинейного движения
будет заключаться в построении графика зависимости x=f(t) приразличных значениях
скорости.
1. На форме располагаем 2 флажка CheckBox для выбора параметра, который мы
хотим найти (время или путь)
2. При выборе нужного флажка появляются текстовые поля для ввода с клавиатуры
скорости и пути или скорости и времени.
9
3. При нажатии на кнопку «График» будет построен график функции S=v(t);
4. В текстовое окно выведено значение неизвестной величины в зависимости от
выбора флажка (путь или время);
2.2.2. Моделирование равноускоренного движения тела
Рассмотрим прямолинейное равноускоренное движение (a= const)
Поскольку движение происходит вдоль прямой, то для его описания достаточно
одной координаты. Пусть тело движется вдоль оси Oy. Согласно определению ускорения
где в числителе стоит изменение скорости, а в знаменателе промежуток времени, за который это изменение произошло. Отсюда
Поскольку движение равноускоренное, каждую секунду скорость получает одно и то же
приращение. Перепишем это выражение в проекции на выбранное направление оси Oy:
Проекции скорости и ускорения могут быть как положительными, так и
отрицательными в зависимости от взаимного направления
векторов
При этом если ay<0, скорость получает положительное приращение, т.е. с течением
времени она увеличивается (ускоренное движение); если ay>0, скорость
с течением
времени уменьшается (замедленное движение). Координата тела при этом будет
изменяться по закону:
Графическое моделирование будет заключаться в построении графика зависимости y=f(t)
при различных значениях ay и v0y.
Данные формулы дают возможность построить график зависимости y(x).
1. На форме
располагаем текстовые поля для ввода с клавиатуры начальной
скорости, ускорения.
2. На форме располагаем 2 флажка CheckBox для выбора параметра, который мы
хотим найти (время или путь).
3. При выборе нужного флажка появляются текстовые поля для ввода с клавиатуры
времени или пути.
4. При нажатии на кнопку «График» будет построен график функции y=f(x).
10
5. В текстовое окно выведено значение неизвестной величины в зависимости от
выбора флажка (путь или время);
2.2.3. Моделирование движения тела, брошенного под углом к горизонту.
а). Моделирование движения тела, брошенного под углом к горизонту без учета
сопротивления воздуха
Рассмотрим
случай
движения
тела,
брошенного
под
углом
к
горизонту,
происходящего только под действием силы тяжести (трением пренебрегаем).
В этом случае одной координаты для описания движения недостаточно. Необходимо
ввести систему координат xOy, при этом ось Ox направляют горизонтально, а ось
Oy– вертикально вверх или вниз. Теперь положение тела задается двумя координатами(x,
y), каждая из которых с течением времени будет изменяться. Закон изменения координат
можно установить из следующих соображений.
Поскольку мы считаем, что никакие силы, кроме силы тяжести на тело недействуют,
движение вдоль оси Ox будет равномерным, и абсцисса тела меняется по закону x=vxt ,
где vx=v0x=const - проекция скорости на ось Ox.
Сила тяжести, действующая на тело, сообщает ему ускорение g, направленное, как и
сама сила, вертикально вниз. Поэтому проекция скорости на ось Oy будет меняться по
закону vy=v0y+gyt , где v0y, gy - проекция начальной скорости и ускорения свободного
падения на эту ось, а ордината тела с течением времени изменяется как
Для построения траектории движения тела нужны формулы, позволяющие
рассчитать координаты точки в различные моменты времени:
Решим задачу для случая x0=0, y0=0:
Тогда
11
Данные формулы дают возможность построить график зависимости y(x).
6. На форме
располагаем текстовые поля для ввода с клавиатуры начальной
скорости, угла наклона.
7. Для большей функциональности нашей модели на форме располагаем 2 флажка
CheckBox для выбора положения преграды (горизонтально или вертикально).
8. При выборе нужного флажка появляются текстовые поля для ввода с клавиатуры
расстояния до преграды и высота или длина преграды.
9. При нажатии на кнопку «График» будет построен график функции y=f(x).
10. В надписи выводятся значения дальности и высоты полета, а также результат
попадания в преграду: недолет, перелет или попадание.
б). Моделирование движения тела, брошенного под углом к горизонту с учетом
сопротивления среды
Будем считать это экспериментально установленным фактом, что сопротивление
воздуха пропорционально квадрату скорости. Можно считать, что сила сопротивления
противоположна
скорости
движущегося
тела.
Значение
коэффициента
пропорциональности устанавливается экспериментальным путем. Это значение нам
понадобится лишь тогда, когда будут проводиться расчеты, поэтому пока мы просто
должны учесть, что одним из параметров, описывающих сопротивление среды, является
коэффициент пропорциональности k.
Для простоты предположим невероятное: пока тело движется, совсем не дует
ветер. Это предположение обеспечивает нам возможность рассматривать движение тела в
одной плоскости.
Чтобы модель не получилась слишком сложной, сделаем еще и «геометрическое»
предположение: будем считать, что поверхность Земли плоская. Будем также считать
постоянным ускорение свободного падения g (хотя по мере удаления от поверхности
Земли
сила
притяжения
убывает
согласно
закону
всемирного
тяготения,
сформулированному Ньютоном, но мы уже договорились не рассматривать движение на
больших высотах)
В данной работе можно проследить за взаимосвязями следующих величин: x и t, y
и t, y и x, а кроме того, установить, как зависит дальность полета тела от угла, под
которым его бросают, и от величины его начальной скорости.
Чтобы построить нужную модель, мы должны определить не только, что
существенно для конструируемой модели, но и те теоретические положения физики,
которые позволят нам без проведения натурных экспериментов определить зависимости
12
между параметрами строящейся информационной модели. Еще раз обратим внимание, что
всякая модель должна быть согласованной не только с существующей теорией, но и с
практикой. Будем считать, что выполнены законы механики, сформулированные
Ньютоном.
Прежде всего речь идет о втором законе, связывающем движущую силу и
ускорение для тела постоянной массы:
Из ранее сказанного ясно, что мы имеем дело с математической моделью, в
которой участвуют три параметра: сила, масса и ускорение. Отметим, что сила и
ускорение — векторные величины, а масса — величина скалярная.
Пусть теперь через некоторое время t тело оказалось в точке с координатами x и y и
имеет в это время скорость
равна векторной
. Результирующая сила, определяющая движение тела,
сумме сил сопротивления и тяжести. Сила сопротивления
согласно сделанному предположению равна
длина вектора
должны
, где через
обозначена
Чтобы рассматривать движение тела как сумму двух движений, мы
рассмотреть
проекции
сил
и
скоростей
на
оси.
Тогда
, где индексы x и y указывают, на
какую ось осуществляется проецирование. Второй закон Ньютона дает нам систему
соотношений:
Фактически мы уже построили информационную модель процесса. Перепишем ее в более
удобном виде, выразив длину вектора
через его координаты:
Так как
Преобразуем эти равенства к следующему виду:
13
Теперь мы по значениям переменных x(t), y(t), vx(t), vy(t) в момент времени t можем
вычислить их значения в момент времени t+Δt. Можно сказать, что эти формулы
описывают процесс не только декларативно, но и процедурно, показывая, как
осуществить нахождение искомых величин в цикле:
1. На форме
располагаем текстовые поля для ввода с клавиатуры начальной
скорости, угла наклона, коэффициента сопротивления среды.
2. Для большей функциональности нашей модели на форме располагаем 2 флажка
CheckBox для выбора положения преграды (горизонтально или вертикально).
3. При выборе нужного флажка появляются текстовые поля для ввода с клавиатуры
расстояния до преграды и высота или длина преграды.
4. При нажатии на кнопку «График» будет построен график функции y=f(x).
5. В надписи выводятся значения дальности и высоты полета, а также результат
попадания в преграду: недолет, перелет или попадание.
14
ЗАКЛЮЧЕНИЕ
В
заключение
можно
подчеркнуть,
что
компьютерное
моделирование и
вычислительный эксперимент позволяют свести исследование "нематематического"
объекта к решению математической задачи. Этим самым открывается возможность
использования для его изучения хорошо разработанного математического аппарата в
сочетании с мощной вычислительной техникой. На этом основано применение
математики и компьютера для познания законов реального мира и их использования на
практике.
В данной исследовательской работе были освоены навыки работы в среде
программирования Lazarus, закреплены навыки в разработке алгоритмов.
Достоинством данной программы является ее простота, функциональность и и тот
факт, что программа создана в свободной среде разработки программного обеспечения
Lazarus для компилятора Free Pascal.
Исследовательская работа имеет большой потенциал для дальнейшего развития.
Мы продолжим работу над усовершенствованием модели.
15
БИБЛИОГРАФИЧЕКИЙ СПИСОК
1. А. В. Никитин, А. И. Слободянюк, М. Л. Шишаков. Компьютерное моделирование
физических процессов. Бином. Лаборатория знаний, 2011. – 680 с.
2. Физика : Учеб. для
10 кл. с углубл. изучением физики / О.Ф. Кабардин,
В.А. Орлов, Э.Е. Эвенчик и др.; Под ред. А.А. Пинского, О.Ф. Кабардина. –
8-е изд., перераб. и доп. – М.: Просвещение, АО «Моск. учеб.», 2005.
3. Физика. Механика. 10 кл. Профильный уровень: учебн. Дляи общеобразовательных
учреждений / М.М. Балашов, А.И. Гомонова, А.Б. Долицкий и др.; под ред.
Г.Я. Мякишева – 9-е изд., стереотип. – М.: Дрофа,2007.
4. Алексеев Е.Р., Чеснокова О.В., Кучер Т.В. Самоучитель по программированию на
Free Pascal и Lazarus. - Донецк.: ДонНТУ, Технопарк ДонНТУ УНИТЕХ, 2009. 503 с.
5. Лабораторный практикум по курсу "Моделирование физических процессов":
Учебно-методическое пособие для студентов физико-математического
факультета. – Коломна: КГПИ, 2002 г. – 88 стр.
16
ПРИЛОЖЕНИЕ 1. Исходный код (представлен не полностью)
procedure TForm5.Button2Click(Sender: TObject);
var x0,y0,xk,yk:real;
x, y : array [0..1000] of real;
u, v : array [0..1000] of integer;
N : integer;
dx, dy, c, d, g, h, sh, max, min, rad,l,V0,a ,dl,ras, k,
vx,vy,R,lp,vp,vs:real;
i, tempx, tempy :integer; s : string;
const Kx=5;Ky=5;
begin
x0:=40;
xk:=40;
y0:=40;
yk:=40;
V0:=StrToFloat(Edit1.Text);
if V0=0 then
begin
MessageDlg('Начальная скорость не может равняться нулю!',
mtInformation,[mbOk],0);
exit;
end;
a:=StrToFloat(Edit2.Text);
dl:=StrToFloat(Edit3.Text);
ras:=StrToFloat(Edit4.Text);
k:=StrToFloat(Edit5.Text);
…
n:=1000;
rad:= a*pi/180;
l:=V0*V0*sin(2*rad)/9.8;
sh:=(l)/(N-1);
x[0]:=0;
y[0]:=0;
vx:=v0* cos(rad);
vy:=v0* sin(rad);
lp:=0;
vp:=0;
for i:=1 to N do
begin
x[i]:=x[i-1]+sh*vx;
y[i]:=y[i-1]+sh*vy;
if (y[i]>=0) and (x[i]>lp) then
lp:=x[i];
if y[i]>vp then
vp:= y[i];
if (x[i]>=ras-10) and (x[i]<=ras) then vs:=y[i];
R:= 1-k*v0*sh;
vx:=vx*R;
vy:=vy*R-9.8*sh;
end;
label5.caption:='Высота полета - '+FloatToStrF(vp,ffFixed,5,2);
label6.caption:='Дальность полета - '+FloatToStrF(lp,ffFixed,5,2);
max:=y[0]; min:=y[0];
for i:=1 to N do
begin
if y[i]>max then max:=y[i];
end;
min:=-5;
c:=(Form5.Image1.ClientWidth-x0-xk)/(l);
d:=x0;
g:=(Form5.Image1.ClientHeight-y0-yk)/(min-max);
h:=yk-g*max;
for i:=0 to n do
begin
u[i]:=trunc(c*x[i]+d);
v[i]:=trunc(g*y[i]+h);
end;
17
…
for i:=1 to N do
Form5.Image1.Canvas.LineTo(u[i],v[i]);
with Image1.Canvas .Pen do
begin
width:=2;
color:=clwhite;
end;
Form5.Image1.Canvas.MoveTo(trunc(x0),trunc(h));
if (trunc(h)>yk) and (trunc(h)<trunc(Form5.Image1.ClientHeight-y0))
then
Form5.Image1.Canvas.LineTo(trunc(Form5.Image1.ClientWidth xk),trunc(h));
Form5.Image1.Canvas.MoveTo(trunc(d),trunc(yk));
if (trunc(d)>=x0) and(trunc(d)<trunc(Form5.Image1.ClientWidth-xk))
then
Form5.Image1.Canvas.LineTo(trunc(d),trunc(Form5.Image1.ClientHei
ght -y0));
if (CheckBox1.Checked=false) and (CheckBox2.Checked=false) then
MessageDlg('Выберите тип решения', mtInformation,[mbOk],0);
if (CheckBox1.Checked=true) and (CheckBox2.Checked=false) then
begin
label3.Caption:='Длина преграды';
label4.caption:='Расстояние до преграды';
label11.Visible:=True;
label12.Visible:=True;
Edit3.Visible:=True;
Edit4.Visible:=True;
Form5.Image1.Canvas.MoveTo(trunc(c*ras+d) ,trunc(h));
Form5.Image1.Canvas.Pen.Color:= clMaroon;
Form5.Image1.Canvas.Pen.Width:= 5;
Form5.Image1.Canvas.LineTo(trunc(c*(ras+dl)+d) ,trunc(h));
dx:=(Form5.Image1.ClientWidth -x0-xk)/KX;
Form5.Image1.Canvas.Pen.Color:= clwhite;
Form5.Image1.Canvas.Pen.Width:= 1;
for i:=0 to KX do
begin
if (i=0) or (i=KX) then
Form5.Image1.Canvas.Pen.Style:=psSolid
else
Form5.Image1.Canvas.Pen.Style:=psDash;
Form5.Image1.Canvas.MoveTo(trunc(x0+i*dx),
trunc(yk));
Form5.Image1.Canvas.LineTo(trunc(x0+i*dx),
trunc(Form5.Image1.ClientHeight -y0));
end;
dy:=(Form5.Image1.ClientHeight -y0-yk)/KY;
for i:=0 to KY do
begin
if (i=0) or (i=KY) then
Form5.Image1.Canvas.Pen.Style:=psSolid
else
Form5.Image1.Canvas.Pen.Style:=psDash;
Form5.Image1.Canvas.MoveTo(trunc(x0),trunc(yk+i*dy));
Form5.Image1.Canvas.LineTo(trunc(Form5.Image1.ClientWidthxk),trunc(yk+i*dy));
end;
Form5.Image1.Canvas.Pen.Style:=psSolid;
dx:=(l)/KX;
tempy:=trunc(Form5.Image1.ClientHeight -y0+10);
for i:=0 to KX do
begin
Str(i*dx:5:2,s);
tempx:=trunc(x0+i*(Form5.Image1.ClientWidth -x0-xk)/KX)-10;
Form5.Image1.Canvas.TextOut(tempx,tempy,s); end;
18
ПРИЛОЖЕНИЕ 2. Скриншоты программы.
Download