| 
				
				Графики
				 |  
				
			  |  
				
					| haav | Дата: Среда, 10.10.2012, 06:44 | Сообщение # 1 |  
					
					 Генералиссимус 
					
					Группа: Администраторы 
					
					Сообщений: 1437 
					
					
					
					Статус: Offline 
					 
					 | Я уже все почти успел позабыть из школьной программы, но вот как-то парабола запомнилась   . 
   Парабола 
   Code Screen 1   Window ( -11, -10 ) - ( 3, 10)      For x As double=-7 To -1 Step 0.001     Var y=2*(x^2)+(16*x)+23     PSet(x,y),2   Next   'Или проще   Window ( -10, 0 ) - ( 10, 10)      For x As double=-3 To 3 Step 0.001     Var y=x^2     PSet(x,y),2   Next   Sleep      
     
   Кривая: 
   Code Screen 1   Window ( -10, -10 ) - ( 10, 10)      For x As double=0 To 3 Step 0.001     Var y=x^2     PSet(x,y),2     PSet(-x,-y),2   Next   Sleep   
    
					 
					
  Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
					 |  
					|   | 
					 |  
				  |  
				
					| haav | Дата: Понедельник, 15.10.2012, 07:29 | Сообщение # 2 |  
					
					 Генералиссимус 
					
					Группа: Администраторы 
					
					Сообщений: 1437 
					
					
					
					Статус: Offline 
					 
					 | Синусоида  
     
   Автор: dodicat 
   Code Dim As Integer xres,yres   screeninfo xres,yres   screenres xres,yres,32   dim as double PLOT_GRADE=4000000   #macro sketch(_function,minx,maxx,miny,maxy)   For x As Double=minx To maxx Step (maxx-minx)/PLOT_GRADE        dim as double x1=Cdbl(xres)*(x-minx)/(maxx-minx)        dim as double y1=Cdbl(yres)*(_function-maxy)/(miny-maxy)        Pset(x1,y1)   Next x   #endmacro   'SAME MACRO WITH EXTERNAL DIMS   dim as double x0,x1,x2,y2   #macro sketch2(_function,minx,maxx,miny,maxy)   For x0 =minx To maxx Step (maxx-minx)/PLOT_GRADE         x2=Cdbl(xres)*(x0-minx)/(maxx-minx)        y2=Cdbl(yres)*(_function-maxy)/(miny-maxy)        Pset(x2,y2)   Next x0   #endmacro 
   dim as double t1,t2,t3,t4   print "PRESS A KEY TO START"   sleep   t1=timer   sketch(sin(x)/x,-20,40,-1,2)   t2=timer   print "press a key"   sleep   cls   t3=timer   sketch2(sin(x0)/x0,-20,40,-1,2)   t4=timer   print "Time for internal dim ";t2-t1   print "Time for external dim ";t4-t3   Sleep  
					 
					
  Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
					 |  
					|   | 
					 |  
				  |  
				
					| haav | Дата: Вторник, 18.12.2012, 08:25 | Сообщение # 3 |  
					
					 Генералиссимус 
					
					Группа: Администраторы 
					
					Сообщений: 1437 
					
					
					
					Статус: Offline 
					 
					 |   
   Автор: dodicat 
   Code '============== PLOTTING MACROS  =======================   Dim  As Double fn_minx,fn_maxx,fn_miny,fn_maxy,PLOTGRADE=500   Dim  As Double vu_minx,vu_maxx,vu_miny,vu_maxy   Dim  As Double pi=4*Atn(1) 'unused here 
   #define map(a,b,x,c,d)  ((d)-(c))*((x)-(a))/((b)-(a))+(c) 
   #macro Set_Function_Limits(minimum_x,maximum_x,minimum_y,maximum_y)   fn_minx=(minimum_x)   fn_maxx=(maximum_x)   fn_miny=(minimum_y)   fn_maxy=(maximum_y)   #endmacro 
   #macro Set_ViewPort(LowerX,LowerY,UpperX,UpperY)   vu_minx=(LowerX)   vu_maxx=(UpperX)   vu_miny=(LowerY)   vu_maxy=(UpperY)   #endmacro 
   #macro plot(A_FUNCTION,colour)   Scope        Var switch=0        For x As Double =fn_minx To fn_maxx Step(fn_maxx-fn_minx)/PLOTGRADE            Var xp=map(fn_minx,fn_maxx,x,Vu_minx,Vu_maxx)            Var yp=map(fn_maxy,fn_miny,(A_Function),Vu_miny,Vu_maxy)            If yp>Vu_minY And yp<Vu_maxy Then                  If switch=0 Then                    Pset (xp,yp),(colour)                    switch=1                Else                    Line -(xp,yp),(colour)                    End If            End If        Next x   End Scope   #endmacro 
   #macro Draw_Axis(colour)   If Sgn(fn_miny)<>Sgn(fn_maxy) Then        Var xp=map(fn_minx,fn_maxx,fn_minx,Vu_minx,Vu_maxx)        Var yp=map(fn_maxy,fn_miny,0,Vu_miny,Vu_maxy)        Pset(xp,yp),(colour)        xp=map(fn_minx,fn_maxx,fn_maxx,Vu_minx,Vu_maxx)        yp=map(fn_maxy,fn_miny,0,Vu_miny,Vu_maxy)        Line -(xp,yp),(colour)   End If   If Sgn(fn_minx)<>Sgn(fn_maxx) Then        Var xp=map(fn_maxx,fn_minx,(fn_minx+fn_maxx),Vu_minx,Vu_maxx)        Var yp=map(fn_maxy,fn_miny,fn_miny,Vu_miny,Vu_maxy)        Pset(xp,yp),(colour)        xp=map(fn_maxx,fn_minx,(fn_minx+fn_maxx),Vu_minx,Vu_maxx)        yp=map(fn_maxy,fn_miny,fn_maxy,Vu_miny,Vu_maxy)        Line -(xp,yp),(colour)   End If   #endmacro   #macro Add_Info(a_function,colour)   Draw String(vu_minx+2,vu_miny+20),#a_function,(colour)   Draw String(vu_minx,(vu_miny+vu_maxy+2)/2),Str(fn_minx),(colour)   Draw String(vu_maxx-8-8*(Len(Str(fn_maxx))),(vu_miny+vu_maxy)/2),Str(fn_maxx),(colour)   Draw String((vu_minx+vu_maxx)/2-4*Len(Str(fn_maxy)),vu_miny),Str(fn_maxy),(colour)   Draw String((vu_minx+vu_maxx)/2-4*Len(Str(fn_miny)),vu_maxy-14),Str(fn_miny),(colour)   #endmacro 
   #macro Draw_Viewport(BorderColour,PortColour)   Line(Vu_minx,Vu_miny)-(Vu_maxx,Vu_maxy),(PortColour),bf   Line(Vu_minx,Vu_miny)-(Vu_maxx,Vu_maxy),(BorderColour),b   #endmacro 
   #macro Get_Y_Limits(a_function,a_range,miny,maxy)   Scope        Dim As Double min=1e9,max=-1e9        For x As Double=a_range Step 1/plotgrade            Var f=(a_function)            If min>f Then min=f            If max<f Then max=f        Next x        maxy=max:miny=min   End Scope   #endmacro 
   'not used here   #macro Get_Roots(a_function,range)   print "Roots"   scope         dim as double lead,lag,flag        for x as double=range  step 1/PLOTGRADE            lead=(a_function)            if sgn(lead)<>sgn(lag) or lead=0 then            Var xp=map(fn_minx,fn_maxx,x,Vu_minx,Vu_maxx)            Var yp=map(fn_maxy,fn_miny,(A_Function),Vu_miny,Vu_maxy)            if flag then                print x                circle(xp,yp),5                end if                end if            lag=lead            flag=1        next x        end scope        #endmacro   ' ============================================================== 
   function squarewave(x as double)as double          dim f as double        for n as double=1 to 40 step 2            f=f+sin(n*x)/n        next n        f=.5-(2/3.142)*f        return f   end function                            'YOUR FUNCTION   #define MYFUNCTION squarewave(x)   
   Screen 20,32 
   Dim As Double minx,maxx   Dim As Double miny,maxy   'Set the x range limits   minx=-15   maxx=15 
   'miny=-1 'set y values  here if you don't want to use Get_Y_Limits()   'maxy=2   PLOTGRADE=500 'doesn't pset each point, but joins points by lines                   'SO, ~500 little lines draw the curve   'Using all the macro's   Set_Viewport(200,100,900,700) 
   Draw_Viewport(Rgb(0,200,0),Rgb(50,50,50)) 
   Get_Y_Limits(MYFUNCTION,minx To maxx,miny,maxy)'Automate the y range limits into miny and maxy 
   Set_Function_limits(minx,maxx,miny,maxy)   
   Draw_Axis(Rgb(200,0,0)) 
   Add_Info(MYFUNCTION,Rgb(200,200,200)) 'puts some numbers in the viewport 
   plot(MYFUNCTION,Rgb(255,255,255)) 
   Sleep  
					 
					
  Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
					 |  
					|   | 
					 |  
				  |  
				
					| haav | Дата: Вторник, 18.12.2012, 08:27 | Сообщение # 4 |  
					
					 Генералиссимус 
					
					Группа: Администраторы 
					
					Сообщений: 1437 
					
					
					
					Статус: Offline 
					 
					 |   
   Автор: dodicat 
   Code '============== PLOTTING MACROS  =======================   Dim  As Double fn_minx,fn_maxx,fn_miny,fn_maxy,PLOTGRADE=500   Dim  As Double vu_minx,vu_maxx,vu_miny,vu_maxy   Dim  As Double pi=4*Atn(1) 'unused here 
   #define map(a,b,x,c,d)  ((d)-(c))*((x)-(a))/((b)-(a))+(c) 
   #macro Set_Function_Limits(minimum_x,maximum_x,minimum_y,maximum_y)   fn_minx=(minimum_x)   fn_maxx=(maximum_x)   fn_miny=(minimum_y)   fn_maxy=(maximum_y)   #endmacro 
   #macro Set_ViewPort(LowerX,LowerY,UpperX,UpperY)   vu_minx=(LowerX)   vu_maxx=(UpperX)   vu_miny=(LowerY)   vu_maxy=(UpperY)   #endmacro 
   #macro plot(A_FUNCTION,colour)   'draws plot by lines instead of psetting each point   Scope       Var switch=0       For x As Double =fn_minx To fn_maxx Step(fn_maxx-fn_minx)/PLOTGRADE           Var xp=map(fn_minx,fn_maxx,x,Vu_minx,Vu_maxx)           Var yp=map(fn_maxy,fn_miny,(A_Function),Vu_miny,Vu_maxy)           If yp>Vu_minY And yp<Vu_maxy Then                If switch=0 Then                   Pset (xp,yp),(colour)                   switch=1               Else                   Line -(xp,yp),(colour)                  End If           End If       Next x   End Scope   #endmacro 
   #macro Draw_Axis(colour)   If Sgn(fn_miny)<>Sgn(fn_maxy) Then       Var xp=map(fn_minx,fn_maxx,fn_minx,Vu_minx,Vu_maxx)       Var yp=map(fn_maxy,fn_miny,0,Vu_miny,Vu_maxy)       Pset(xp,yp),(colour)       xp=map(fn_minx,fn_maxx,fn_maxx,Vu_minx,Vu_maxx)       yp=map(fn_maxy,fn_miny,0,Vu_miny,Vu_maxy)       Line -(xp,yp),(colour)   End If   If Sgn(fn_minx)<>Sgn(fn_maxx) Then       Var xp=map(fn_maxx,fn_minx,(fn_minx+fn_maxx),Vu_minx,Vu_maxx)       Var yp=map(fn_maxy,fn_miny,fn_miny,Vu_miny,Vu_maxy)       Pset(xp,yp),(colour)       xp=map(fn_maxx,fn_minx,(fn_minx+fn_maxx),Vu_minx,Vu_maxx)       yp=map(fn_maxy,fn_miny,fn_maxy,Vu_miny,Vu_maxy)       Line -(xp,yp),(colour)   End If   #endmacro   #macro Add_Info(a_function,colour)   Draw String(vu_minx+2,vu_miny+20),#a_function,(colour)   Draw String(vu_minx,(vu_miny+vu_maxy+2)/2),Str(fn_minx),(colour)   Draw String(vu_maxx-8-8*(Len(Str(fn_maxx))),(vu_miny+vu_maxy)/2),Str(fn_maxx),(colour)   Draw String((vu_minx+vu_maxx)/2-4*Len(Str(fn_maxy)),vu_miny),Str(fn_maxy),(colour)   Draw String((vu_minx+vu_maxx)/2-4*Len(Str(fn_miny)),vu_maxy-14),Str(fn_miny),(colour)   #endmacro 
   #macro Draw_Viewport(BorderColour,PortColour)   Line(Vu_minx,Vu_miny)-(Vu_maxx,Vu_maxy),(PortColour),bf   Line(Vu_minx,Vu_miny)-(Vu_maxx,Vu_maxy),(BorderColour),b   #endmacro 
   #macro Get_Y_Limits(a_function,a_range,miny,maxy)   Scope       Dim As Double min=1e9,max=-1e9       For x As Double=a_range Step 1/plotgrade           Var f=(a_function)           If min>f Then min=f           If max<f Then max=f       Next x       maxy=max:miny=min   End Scope   #endmacro 
   #macro Get_Roots(a_function,range)   print "Roots"   scope        dim as double lead,lag,flag       for x as double=range  step 1/PLOTGRADE           lead=(a_function)           if sgn(lead)<>sgn(lag) or lead=0 then           Var xp=map(fn_minx,fn_maxx,x,Vu_minx,Vu_maxx)           Var yp=map(fn_maxy,fn_miny,(A_Function),Vu_miny,Vu_maxy)           if flag then               print x               circle(xp,yp),5               end if               end if           lag=lead           flag=1       next x       end scope       #endmacro   ' ============================================================== 
                           'YOUR FUNCTION   #define MYFUNCTION sin(2*x)*(x^4-10*x^3+2*x^2-7*x)-200   
   Screen 20,32 
   Dim As Double minx,maxx   Dim As Double miny,maxy   'Set the x range limits   minx=-5   maxx=10   'if you set the y range limits here then no need to Get_Y_Limits   miny=0   maxy=0   PLOTGRADE=500 'doesn't pset each point, but joins points by lines                  'SO, ~500 little lines draw the curve   'Using all the macro's   Set_Viewport(200,100,900,700) 
   Draw_Viewport(Rgb(0,200,0),Rgb(50,50,50)) 
   Get_Y_Limits(MYFUNCTION,minx To maxx,miny,maxy)'Automate the y range limits into miny and maxy 
   Set_Function_limits(minx,maxx,miny,maxy)       'set the function limits  
   Draw_Axis(Rgb(200,0,0)) 
   Add_Info(MYFUNCTION,Rgb(200,200,200)) 'puts some numbers in the viewport 
   plot(MYFUNCTION,Rgb(255,255,255)) 
   PLOTGRADE=2000 'increase the grade to fine tune for roots   Get_Roots(MYFUNCTION,minx to maxx) 
   Sleep  
					 
					
  Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
					 |  
					|   | 
					 |  
				  |  
				
					| haav | Дата: Вторник, 18.12.2012, 08:31 | Сообщение # 5 |  
					
					 Генералиссимус 
					
					Группа: Администраторы 
					
					Сообщений: 1437 
					
					
					
					Статус: Offline 
					 
					 |   
   Autor: Richard 
   Code Dim As Double Pi = 4 * Atn(1) 
   Screenres 800, 600, 4           ' set window size and depth   Window (-Pi, -1.5)-(Pi, +1.5)   ' set scale for graphics window 
   Line (0, -1.5)-(0, 1.5), 7   Line (-Pi, 0)-(Pi, 0), 7   Line (-Pi, -1)-(Pi, -1), 2   Line (-Pi, 1)-(Pi, 1), 2   Draw String (0, 0), "Origin", 7   Draw String (0, 1), "+1", 7   Draw String (0,-1), "-1", 7   Draw String (-Pi, 0), "-Pi", 7 
   Dim As Double theta   For theta = -Pi To Pi Step .001       Pset(theta, Cos(theta) ), 14       Pset(theta, Sin(theta) ), 13   Next theta 
   Sleep  
					 
					
  Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
					 |  
					|   | 
					 |  
				  |  
				
					| haav | Дата: Вторник, 18.12.2012, 08:32 | Сообщение # 6 |  
					
					 Генералиссимус 
					
					Группа: Администраторы 
					
					Сообщений: 1437 
					
					
					
					Статус: Offline 
					 
					 |   
   Autor: BasicCoder2 
   Code screenres 640,480,32   const KK = .0174533   'convert degrees to radians for sin and cos   dim as double multX   multX = 640/360       'max width = 640  and maximum value = 360   line (0,240)-(639,240),rgb(127,127,127)   for i as double = 0 to 360       pset (i*multX,cos(i*KK)*50+240),rgb(255,0,0)  ' red plot    (240 is half of height)       pset (i*multX,sin(i*KK)*50+240),rgb(0,255,0)  ' green plot   next i   Sleep  
					 
					
  Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
					 |  
					|   | 
					 |  
				  |  
				
					| haav | Дата: Вторник, 18.12.2012, 08:34 | Сообщение # 7 |  
					
					 Генералиссимус 
					
					Группа: Администраторы 
					
					Сообщений: 1437 
					
					
					
					Статус: Offline 
					 
					 |   
   Автор: dodicat 
   Code '============== PLOTTING MACROS  =======================   dim shared as double fn_minx,fn_maxx,fn_miny,fn_maxy,PLOTGRADE=2000   dim shared as double vu_minx,vu_maxx,vu_miny,vu_maxy   dim shared as double pi=4*atn(1)   #define map(a,b,x,c,d)  ((d)-(c))*((x)-(a))/((b)-(a))+(c) 
   #macro function_limits(minimum_x,maximum_x,minimum_y,maximum_y)   fn_minx=(minimum_x)   fn_maxx=(maximum_x)   fn_miny=(minimum_y)   fn_maxy=(maximum_y)   #endmacro 
   #macro Set_ViewPort(LowerX,LowerY,UpperX,UpperY)   vu_minx=(LowerX)   vu_maxx=(UpperX)   vu_miny=(LowerY)   vu_maxy=(UpperY)   'vu_minx=(LowerX)   #endmacro   #macro plot(A_FUNCTION,colour)   print #A_Function   'line(Vu_minx,Vu_miny)-(Vu_maxx,Vu_maxy),(colour),b 'optional viewport border   for x as double=fn_minx to fn_maxx step(fn_maxx-fn_minx)/PLOTGRADE       var xp=map(fn_minx,fn_maxx,x,Vu_minx,Vu_maxx)       var yp=map(fn_maxy,fn_miny,(A_Function),Vu_miny,Vu_maxy)       if yp>Vu_minY and yp<Vu_maxy then pset (xp,yp),(colour)   next x   #endmacro 
   #macro Draw_Viewport(BorderColour,PortColour)   line(Vu_minx,Vu_miny)-(Vu_maxx,Vu_maxy),(PortColour),bf   line(Vu_minx,Vu_miny)-(Vu_maxx,Vu_maxy),(BorderColour),b   #endmacro 
   #macro getlimits(a_function,a_range,miny,maxy)   scope       dim as double min=1000000,max=-1000000       for x as double=a_range step 1/plotgrade           var f=(a_function)           if min>f then min=f           if max<f then max=f           next x   maxy=max:miny=min   end scope   #endmacro   ' ============================================================== 
                      'YOUR FUNCTION   #define MYFUNCTION 4*sin(x)+cos(4*x)+x +7   
   screen 20,32 
   dim as double minx=-3,maxx=3   dim as double miny,maxy 
   Set_Viewport(200,200,800,600)   Draw_Viewport(rgb(0,200,0),rgb(50,50,50)) 
   getlimits(MYFUNCTION,minx to maxx,miny,maxy)'get the yrange limits into miny and maxy 
   function_limits(minx,maxx,miny,maxy)       'set the function limits  
   plot(MYFUNCTION,rgb(255,255,255))   locate 4,30   print "MINIMUM Y  " &miny & "    MAXIMUM Y    " &maxy   sleep       
					 
					
  Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
					 |  
					|   | 
					 |  
				  |     
		
		  
 |