wykres y = 1/4 ctg x

0

moze ktos pomoc mi i zrobic taki wykresik w delphi!!z gory dzieki!moj email to [email protected]

0

zrob tak jak nas uczyli w podstawowce :)
podstaw pod x od -10 do + 10 i w tablicy 2 wymiarowej przyporzadkuj kazdemu x oblicozny y i masz wspolzedne do podstawienia

0

W gotowcach znajdziesz przykład na funkcje sinus.. na tangens sobie chyba już przerobisz.

0

Masz tu gotowy sprawdzony kodzik

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, Spin, ComCtrls, Menus;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Button1: TButton;
    Label2: TLabel;
    Button2: TButton;
    Button3: TButton;
    SpinEdit1: TSpinEdit;
    Image1: TImage;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure SpinEdit1Change(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public

    { Public declarations }
  end;
  funkcja=function(x:real):real; //deklaracja typu funkcyjnego

var
  Form1: TForm1;
  dx:integer;   //wielkość jednostki
  ox,oy:integer;
  uklad:boolean;
  a,b,c:double;

implementation

{$R *.DFM}

procedure czysc;
begin
    uklad:=False;
    Form1.Image1.Picture:=nil;
end;

procedure rysuj_uklad;
begin
       with Form1.Image1.Canvas do
       begin
           //oś ox
           Moveto(0,oy);
           Lineto(Form1.Width,oy);
           //strzałka
           Lineto(Form1.Width-15,oy-5);
           Moveto(Form1.Width,oy);
           Lineto(Form1.Width-15,oy+5);
           //oś oy
           Moveto(ox,0);
           Lineto(ox,Form1.Height);
           //strzałka
           Moveto(ox,0);
           Lineto(ox-5,10);
           Moveto(ox,0);
           Lineto(ox+5,10);
       end;
end;

procedure jednostki;
var i:integer;
    x,y:integer;
begin
        x:=ox;
        y:=oy+10;
        Form1.Image1.Canvas.TextOut(x,y,'0');
        //oś ox
        for i:= 1 to round(ox/dx)do
        begin
            x:=x+dx;
            Form1.Image1.Canvas.TextOut(x-2,y,inttostr(i));
            Form1.Image1.Canvas.Moveto(x,y-13);
            Form1.Image1.Canvas.Lineto(x,y-3);
        end;
        x:=ox;
        for i:= -1 downto -round(ox/dx)do
        begin
            x:=x-dx;
            Form1.Image1.Canvas.TextOut(x-6,y,inttostr(i));
            Form1.Image1.Canvas.Moveto(x,y-13);
            Form1.Image1.Canvas.Lineto(x,y-3);
        end;
       //oś y
       y:=oy;
       x:=ox ;
       for i:= 1 to Round(oy/dx)do
       begin
           y:=y-dx;
           Form1.Image1.Canvas.TextOut(x+8,y-10,IntToStr(i));
           Form1.Image1.Canvas.MoveTo(x-3,y);
           Form1.Image1.Canvas.LineTo(x+3,y);
       end;
       y:=oy;
       for i:= -1 downto -round(oy/dx)do
       begin
           y:=y+dx;
           Form1.Image1.Canvas.Textout(x+8,y-10,IntToStr(i));
           Form1.Image1.Canvas.Moveto(x-3,y);
           Form1.Image1.Canvas.Lineto(x+3,y);
       end;
end;


function ctgx(x:real):real;
begin
    if sin(x)<>0 then
       ctgx:=1/4*(cos(x)/sin(x))
end;


procedure wykres(f:funkcja; kolor:TColor);
var
   x,y:real;  //współrzędne matematyczne
   xf,yf,h:integer;//współrzędne ekranowe,
begin
       h:=1;
       xf:=ox;
       x:=0;
       y:=f(x);
       yf:=oy-round(y/dx);
       Form1.Image1.Canvas.Pixels[xf,yf]:=kolor;
       //rysowanie wykresu na dodatniej półosi ox
       while xf<2*ox do
       begin
           xf:=xf+h;
           x:=(xf-ox)/dx;
           y:=f(x);
           yf:=round(oy-y*dx);
           Form1.Image1.Canvas.Pixels[xf,yf]:=kolor;
       end;
       xf:=ox;
       x:=0;
       y:=f(x);
       yf:=oy-round(y/dx);
       Form1.Image1.Canvas.Pixels[xf,yf]:=kolor;
       //rysowanie wykresu na ujemnej półosi ox
       while xf>0 do
       begin
           xf:=xf-h;
           x:=(xf-ox)/dx;
           y:=f(x);
           yf:=round(oy- y*dx);
           Form1.Image1.Canvas.Pixels[xf,yf]:=kolor;
       end;
end;

//funkcje obsługi zdarzeń

procedure TForm1.FormActivate(Sender: TObject);
begin
    uklad:=False;
    Form1.Color:=clWhite;
    ox:=Form1.Width div 2; //współrzędna x osi y
    oy:=(Form1.Height - Panel1.Height) div 2;//współrzędna y osi x
    dx:=ox;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
    Close;
end;

procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
    if SpinEdit1.Value> 0 then
       dx:=round(ox/SpinEdit1.Value);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
    czysc;
end;


procedure TForm1.Button3Click(Sender: TObject);
begin
   if not uklad then
   begin
       czysc;
       rysuj_uklad;
       jednostki;
   end;
end;


procedure TForm1.FormResize(Sender: TObject);
begin
    uklad:=False;
    Form1.Color:=clWhite;
    ox:=Form1.Width div 2; //współrzędna x osi y
    oy:=(Form1.Height - Panel1.Height) div 2;//współrzędna y osi x
    dx:=ox;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
     wykres(ctgx, clGreen)
end;

end.
0

czy umie ktos uruchomic ten program w delphi co napisał ARTUR bo ja nie moge nic uruchomic!!Jak mozna to prosilbym o przeslanie mi juz gotowego programu w delphi (w pliku)moj adres email to :[email protected]

1 użytkowników online, w tym zalogowanych: 0, gości: 1