Головна » C++ Builder: построение графиков. Часть 2. Синусы (sin)

C++ Builder: построение графиков. Часть 2. Синусы (sin)

В предыдущей заметке я писала о построении графика косинуса (cos). На сей раз желаю поведать о построении графика другой математической функции – синус (sin).

В серию о построении графиков в C++ Builder уже вошли такие посты:

  1. Построение косинусов (cos);
  2. Построение синусов (sin);
  3. Построение тангенсов (tg);
  4. Построение котангенсов (ctg).

Разлиновку канвы (под этим действием я понимаю добавление линий на компонент Image) я разбирала в предыдущей статье (ссылка выше).

В этой разберу лишь масштабирование по оси Y (масштабирование по оси X также разобрано в предыдущей статье – иксы то у нас известны на начальном этапе построения графика, а игреки еще нужно посчитать).

В общем, поехали!

Строить будем функцию вида a*sin(X)+k. Естественно, a может быть равно 1 (т.е. фактически не влиять на результат), а k – 0.

// делаем компонент Image видимым
  Image1->Visible=true;

// циклически рассчитываем максимальное и минимальное
// значения Y 
 for (X=Xmin;X<=Xmax;X+=dX)
  {
   Y=a*sin(X)+k;
   if(YmaxY) Ymin=Y;
  }

// рассчитываем масштаб по оси Y
MasY=(LY-40)/(Ymax-Ymin);

// выводим «промасштабированные» значения возле оси Y
// для обозначения уже нарисованных дополнительных линий
  float B[11];
 for (i=0;i<=10;i++)
{
 B[i]=50+LY/11*i;
 AnsiString S = FloatToStrF(Ymax-((Ymax-Ymin)/10)*i,ffFixed,5,2);
 Image1->Canvas->TextOutA(20,B[i]-15,S);
}

//помещаем курсора (карандаш) в нужную точку на 
// объекте Image
 Image1->Canvas->MoveTo(50,LY-(Ymin*(-1)+a*sin(Xmin))*MasY);

// рисуем график
 for (X=Xmin;X<=Xmax;X+=dX)
  {
   Y=a*sin(X);

 PY=LY-(Ymin*(-1)+Y)*MasY;
       PX=X*MasX+50;
   Image1->Canvas->LineTo(PX-Xmin*MasX,PY);
}

Вот и все. На рисунке график функции синус (sin) построенный с такими исходными данными:

Xmin = 0;
Xmax=10;
dX=0.02;
a=1;
k=0;

И вот что получилось:

Построенный график функции a*sin(X)+k

Надеюсь, у вас все получится.

femil

6 коментарів до “C++ Builder: построение графиков. Часть 2. Синусы (sin)

  1. Толковая статья , очень помогла в работе с компонентой Image.
    Огромный респект автору и создателю сайта.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Повернутись до верху