C Builder чертеж
Продължавам поредица от публикации за изчертаване на графики в C++ Builder. За тези, които не са запознати, тази серия вече включва следните записи:
Като цяло тази бележка е посветена на тангентите (tg), или по-точно: на конструирането на функция от вида a*tg(x)+k . Константите a и k се задават в началото на изпълнението на програмата.
Освен това в началото на изпълнението на програмата трябва да се уточнят минималната ( Xmin ) и максималната ( Xmax ) стойности на x, както и стъпката, с която тази стойност ще се промени ( dX ).
Важен момент е липсата на функция за получаване на допирателната (tg) в C ++ Builder. За тези цели се използва израз, идентичен на тази функция. А именно tg(x)=sin(x)/cos(x) .
Можете директно да изградите графика в C ++ Builder по следния начин:
// прави чертежа видим Image1->Visible=true; // изчисляване на максималните и минималните // стойности по оста Y за (X=Xmin;X Y) Ymin=Y; > // изчисляване на мащаба по оста Y if((Ymax-Ymin)==0) MasY=LY-40; иначе MasY=(LY-40)/(Ymax-Ymin); floatB[11]; //изведете междинни стойности по Y скала за (i=0;i Canvas->TextOutA(20,B[i]-15,S); > // както знаете, не можете да разделите на 0 и ако косинусът // на X е 0, преминете към следващата стъпка if (cos(Xmin)==0) Image1->Canvas->MoveTo(50,LY-(Ymin) *(-1)+a *sin(Xmin+dX)/cos(Xmin+dX))*MasY); else Image1->Canvas->MoveTo(50,LY-(Ymin*(-1)+a*sin(Xmin)/cos(Xmin))*MasY); // директно чертане върху платно Image1 за (X=Xmin;X Canvas->LineTo(PX-Xmin*) MasX,PY); >
Това е всичко. На фигурата графиката на функцията тангенс (tg) е изградена със следните начални данни:
xmin=0; Xmax=10; dX=0,02; а=1; k=0;
Резултат. Както е известно, функцията на тангенса не съществува в някои точки (къдетосинусът (в знаменателя) е 0). Не съм правил прекъсвания (за образователни цели, за мен това е прекаляване. Може би има желание да се убеди.
Надявам се всичко да се нареди при вас.
Много интересно и информативно, поне за мен, тъй като съм учител по математика и често ми се налага да чертая тригонометрични функции, благодаря!
))) Вие, като учител по математика, знаете много повече за това от мен =)
Тангента с помощта на Bresenham как да направя?