![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Функция построения графикаDelphi , Синтаксис , МатематикаФункция построения графика
Оформил: DeeCo ![]() private FPoints: array [0..144] of TPoint; {...} procedure TForm1.CalculateGraph; var xRangePixels, yRangePixels: Integer; origin: TPoint; radian, interval: Double; i: Integer; begin { We calculate the sinus curve in the interval -2Pi..+2Pi, with a resolution of 4Pi/144, as a series of points that will be connected by a polyline. The graph is scaled to fit into the paintbox. The origin of the coordinate system is the center of the paintbox. The default windows coordinate system is inverted, the Y axis points downward! } xRangePixels := (paintbox1.Width - 2) div 4; { pixels in Pi } yRangePixels := (paintbox1.Height - 2) div 2; { pixels in 1 } origin := Point(paintbox1.Width div 2, paintbox1.Height div 2); radian := -2.0 * Pi; interval := 4.0 * Pi / 144.0; for i := 0 to High(FPoints) do begin FPoints[i].X := origin.x + Round(radian * xRangePixels / Pi); FPoints[i].Y := origin.y - Round(sin(radian) * yRangePixels); radian := radian + interval; end; end; procedure TForm1.PaintBox1Paint(Sender: TObject); var origin: TPoint; xRangePixels, yRangePixels: Integer; begin with PaintBox1.Canvas do begin { Fill background in white } Brush.Color := clBtnFace; Brush.Style := bsSolid; Fillrect(paintbox1.BoundsRect); { Paint a coordinate cross } origin := Point(paintbox1.Width div 2, paintbox1.Height div 2); Pen.Color := clBlack; Pen.Style := psSolid; Pen.Width := 1; MoveTo(1, origin.Y); LineTo(paintbox1.Width - 1, origin.y); MoveTo(origin.x, 1); LineTo(origin.x, paintbox1.Height - 1); { Paint some tickmarks and label the axis } Font.Name := 'Symbol'; Font.Size := 8; Font.Color := clBlack; xRangePixels := (paintbox1.Width - 2) div 4; { pixels in Pi } yRangePixels := (paintbox1.Height - 2) div 2; { pixels in 1 } { X axis } MoveTo(origin.x - 2 * xRangePixels, origin.y - 4); LineTo(origin.x - 2 * xRangePixels, origin.y + 4); TextOut(origin.x - 2 * xRangePixels + 2, origin.y + 2, '-2p'); MoveTo(origin.x - xRangePixels, origin.y - 4); LineTo(origin.x - xRangePixels, origin.y + 4); TextOut(origin.x - xRangePixels + 2, origin.y + 2, '-p'); MoveTo(origin.x + xRangePixels, origin.y - 4); LineTo(origin.x + xRangePixels, origin.y + 4); TextOut(origin.x + xRangePixels - 2 - TextWidth('p'), origin.y + 2, 'p'); MoveTo(origin.x + 2 * xRangePixels, origin.y - 4); LineTo(origin.x + 2 * xRangePixels, origin.y + 4); TextOut(origin.x + 2 * xRangePixels - 2 - TextWidth('2p'), origin.y + 2, '2p'); { Y axis } MoveTo(origin.x - 4, origin.y - yRangePixels); LineTo(origin.x + 4, origin.y - yRangePixels); TextOut(origin.x + 4, origin.y - yRangePixels, '1.0'); MoveTo(origin.x - 4, origin.y - yRangePixels div 2); LineTo(origin.x + 4, origin.y - yRangePixels div 2); TextOut(origin.x + 4, origin.y - (yRangePixels + TextHeight('1')) div 2, '0.5'); MoveTo(origin.x - 2, origin.y + yRangePixels div 2); LineTo(origin.x + 2, origin.y + yRangePixels div 2); TextOut(origin.x + 3, origin.y + (yRangePixels - TextHeight('1')) div 2, '-0.5'); MoveTo(origin.x - 2, origin.y + yRangePixels); LineTo(origin.x + 2, origin.y + yRangePixels); TextOut(origin.x + 3, origin.y + yRangePixels - TextHeight('1'), '-1.0'); {Paint the graph } Pen.Color := clBlue; Polyline(FPoints); end; end; procedure TForm1.FormResize(Sender: TObject); begin CalculateGraph; end; procedure TForm1.FormCreate(Sender: TObject); begin CalculateGraph; end; Here's the translation of the provided text into Russian: Программа на Delphi строит график функции синусоидальной в интервале -2π до +2π с разрешением 4π/144. Пunkt начала координатной системы установлен в центре контрола paintbox, который является основным графическим компонентом формы. Процедура Процедура Процедуры В этом коде можно улучшить алгоритмы для расчета точек графика и обработки событий. Например, вместо того, чтобы перерасчитывать весь график при изменении размера формы, вы можете только обновлять те части, которые изменились. В этом альтернативном решении я добавил переменные Также я добавил проверку на null для Функция построения графика с использованием Pascal Delphi для отображения синусоидальной кривой в интервале -2π..+2π. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Математика ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |