Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
8. Delphi графика.doc
Скачиваний:
32
Добавлен:
16.11.2019
Размер:
1.16 Mб
Скачать

3. Построение графиков функций

Если требуется провести прямую, получайте ее только по двум точкам.

Из законов Мэрфи

Одно из наиболее интересных применений графических средств Delphi – построение графиков функций. Давайте нарисуем на экране синусоиду, которую мы вычисляли на прошлой лабораторной работе. Форма должна иметь вид, показанный на рис. 4.

Рис. 4 – Форма программы построения графика функции.

Сама программа расчета не отличается от той, что мы делали в прошлый раз.

procedure TForm1.Button1Click(Sender: TObject);

VAR Xmin, Xmax, h, y : REAL;

cx,cy:REAL;

begin

TRY

Xmin:=StrToFLoat(LabeledEdit1.Text);

Xmax:=StrToFLoat(LabeledEdit2.Text);

h:=StrToFLoat(LabeledEdit3.Text)

EXCEPT

MessageDlg('Неверные данные', mtError, [mbOK],0);

Exit

END;

IF Xmax<=Xmin THEN

BEGIN

MessageDlg('Xmin>Xmax!', mtError, [mbOK],0);

Exit

END;

Memo1.Lines.Clear;

WITH Image1.Canvas DO

BEGIN

Brush.Color:=clBlue;

FillRect(Image1.ClientRect);

// Ось Х

Pen.Color:=clWhite;

MoveTo(0,Image1.Height DIV 2);

LineTo(Image1.Width, Image1.Height DIV 2);

cx:=(Xmax-Xmin)/Image1.Width;

cy:=2/Image1.Height;

IF cy>cx THEN

cx:=cy;

MoveTo(0,Image1.Height DIV 2); // начало графика

WHILE Xmin<=Xmax DO

BEGIN

y:=sin(xmin);

Memo1.Lines.Add('sin('+FloatToStrF(Xmin,ffFixed,10,4)+')='+

FloatToStrF(y,ffFixed,10,4));

LineTo(TRUNC(Xmin/cx),Image1.height DIV 2 - TRUNC(y/cx));

Xmin:=Xmin+h

END

END

end;

Остановимся на командах построения графика. Сначала мы заливаем весь холст синим цветом и проводим посередине горизонтальную белую линию – это ось ОХ. Затем необходимо рассчитать масштабные коэффициенты по осям координат, чтобы при любых значениях Xmin, Xmax и h график уместился в окне. Для функции sin(x) очевидно, что по оси OY ее значения будут изменяться от –1 до 1, а по оси ОХ – от Xmin до Xmax. Коэффициенты по осям будут равны:

;

Из этих двух коэффициентов нужно выбрать наибольший, тогда весь график гарантированно уместится на холсте. Далее для получения экранных координат текущие значения x и sin(x) надо разделить на рассчитанный ранее максимальный коэффициент. Наконец, при построении графика его надо сместить вниз на половину высоты холста, поскольку ось ОХ проходит посередине. Обратите внимание на использование функции TRUNC для получения целочисленных значений координат.

Рис. 5 – Результат работы программы.

4. Построение геометрических фигур

В задаче из N уравнений всегда будет N+1 неизвестная.

Из законов Мэрфи

Рассмотрим задачу построения треугольника с известными длинами сторон AB, AC, BC. подобное построение вызывает большие трудности, поскольку непонятно, с чего же начать? Сделаем следующее. Зафиксируем на холсте одну вершину треугольника в точке с произвольными координатами a1,b1. Будем считать, что одна из сторон идет горизонтально, что сразу дает нам координаты второй точки (рис. 6).

Рис. 6 – Построение треугольника.

Осталось найти координаты точки С. Найдем косинус угла CAB по теореме косинусов: . Рассмотрим прямоугольный треугольник ACC1. В нем нам известны все углы и одна сторона. Тогда по теореме синусов , откуда находим dy. Аналогично вычисляем и dx.