Drawing plots
This commit is contained in:
106
Lab3/Lab3.cpp
Normal file
106
Lab3/Lab3.cpp
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
#include <conio.h>
|
||||||
|
#include <graphics.h>
|
||||||
|
#include <math.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
const double PI = 3.141592653589793;
|
||||||
|
const int scalex = 20;
|
||||||
|
const int scaley = 34;
|
||||||
|
|
||||||
|
double x1=PI/2;
|
||||||
|
double x2=5*PI;
|
||||||
|
|
||||||
|
double f(double x);
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
int graph_driver,graph_mode,graph_error_code;
|
||||||
|
char text[5];
|
||||||
|
double current_x=x1;
|
||||||
|
double current_y=f(x1);
|
||||||
|
double prev_x=current_x,prev_y=current_y;
|
||||||
|
double max_y=current_y;
|
||||||
|
double im_x=0;
|
||||||
|
graph_driver=DETECT;
|
||||||
|
initgraph(&graph_driver,&graph_mode,"C:\\TurboC3\\BGI");
|
||||||
|
graph_error_code=graphresult();
|
||||||
|
if(graph_error_code != grOk)
|
||||||
|
{
|
||||||
|
cputs(grapherrormsg(graph_error_code));
|
||||||
|
return 255;
|
||||||
|
}
|
||||||
|
|
||||||
|
double cur_x=getmaxx()/8;
|
||||||
|
double cur_y=getmaxy()/2;
|
||||||
|
setviewport(cur_x,cur_y,getmaxx(),getmaxy(),0);
|
||||||
|
|
||||||
|
line(0,-getmaxy(),0,180);
|
||||||
|
line(0,0,getmaxx(),0);
|
||||||
|
settextstyle(0,HORIZ_DIR,0);
|
||||||
|
settextjustify(LEFT_TEXT,TOP_TEXT);
|
||||||
|
outtextxy(-10,10,"0");
|
||||||
|
for(int i=1;i<=30;i+=1)
|
||||||
|
{
|
||||||
|
sprintf(text,"%d",i);
|
||||||
|
line(i*scalex,-2,i*scalex,2);
|
||||||
|
outtextxy(i*scalex,10,text);
|
||||||
|
}
|
||||||
|
for(int j=-2;j<3;j++)
|
||||||
|
{
|
||||||
|
|
||||||
|
if(j==0)
|
||||||
|
{
|
||||||
|
sprintf(text," ");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sprintf(text,"%d",j);
|
||||||
|
line(-2,-2*j*scaley,2,-2*j*scaley);
|
||||||
|
}
|
||||||
|
outtextxy(-20,-2*j*scaley,text);
|
||||||
|
}
|
||||||
|
setlinestyle(1,1,1);
|
||||||
|
line(0,-2*current_y*scaley,current_x*scalex,-scaley*2*current_y);
|
||||||
|
line(current_x*scalex,0,current_x*scalex,-scaley*2*current_y);
|
||||||
|
putpixel(current_x*scalex,0,4);
|
||||||
|
putpixel(0,-current_y*scaley*2,4);
|
||||||
|
setlinestyle(0,1,1);
|
||||||
|
while(im_x<27)
|
||||||
|
{
|
||||||
|
if(im_x<x1||im_x>x2)
|
||||||
|
{
|
||||||
|
setcolor(WHITE);
|
||||||
|
line(scalex*im_x,-f(im_x)*scaley*2,scalex*(im_x+0.0001),-f(im_x+0.0001)*scaley*2);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
setcolor(RED);
|
||||||
|
current_x+=0.0001;
|
||||||
|
current_y=f(current_x);
|
||||||
|
line(scalex*prev_x,-prev_y*scaley*2,scalex*current_x,-current_y*scaley*2);
|
||||||
|
prev_x=current_x;
|
||||||
|
prev_y=current_y;
|
||||||
|
if(current_y>max_y) max_y=current_y;
|
||||||
|
}
|
||||||
|
im_x+=0.0001;
|
||||||
|
}
|
||||||
|
setlinestyle(1,1,1);
|
||||||
|
line(0,-2*current_y*scaley,current_x*scalex,-scaley*2*current_y);
|
||||||
|
line(current_x*scalex,0,current_x*scalex,-scaley*2*current_y);
|
||||||
|
putpixel(0,-2*current_y*scaley,4);
|
||||||
|
putpixel(current_x*scalex,0,4);
|
||||||
|
setcolor(RED);
|
||||||
|
setlinestyle(0,1,3);
|
||||||
|
rectangle(75,75,170,100);
|
||||||
|
setcolor(WHITE);
|
||||||
|
setlinestyle(0,1,1);
|
||||||
|
sprintf(text,"%.2f",max_y);
|
||||||
|
settextjustify(LEFT_TEXT,TOP_TEXT);
|
||||||
|
outtextxy(85,80,"Max value: ");
|
||||||
|
outtextxy(85,90,text);
|
||||||
|
getch();
|
||||||
|
closegraph();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
double f(double x){
|
||||||
|
return pow(sin(x),2)+pow(cos(x),3);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user