[ redcode @ 07.02.2005. 14:47 ] @
kako da uradim grafik funkcije oblika aX^2+bX+c u delphiju 5???
[ Srki_82 @ 07.02.2005. 23:19 ] @
Isto kao sto bi uradio na papiru. Imas odredjene vrednosti za nepoznate (recimo 0.1, 0.15, 0.2, 0.25...), izracunas izraz, dobijes koordinatu na grafiku, spajas dobijene tacke i eto ti grafika.

Imas funkcije Canvas-a LineTo i MoveTo koje su ti potrebne za iscrtavanje grafika. U principu prvu tacku koju dobijes postavis sa MoveTo, a svaku sledecu prosledis funkciji LineTo. Jedino na cega treba da obratis paznju je razmera... ne bi hteo da ti grafik bude previse mali ili preterano velik da se ne vidi na formi.
[ Dejan Mitrovic @ 07.02.2005. 23:38 ] @
Evo ti nesto za pocetak. Dalje ces, valjda, moci sam


Code:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    procedure Translate(var x, y: Integer);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
const
  A = 1;
  B = 1;
  C = 0;
  START_X = -10;
  END_X = 10;
var
  i, x, y: Integer;

  function Funct(x: Integer): Integer;
  begin
    Result := A * x * x + B * x + c
  end;

begin
  x := START_X; y := Funct(x);
  Translate(x, y);
  Canvas.MoveTo(x, y);
  for i := START_X + 1 to END_X do begin
    x := i;
    y := Funct(x);
    Translate(x, y);
    Canvas.LineTo(x, y)
  end
end;

procedure TForm1.Translate(var x, y: Integer);
begin
  Inc(x, ClientWidth div 2);
  y := ClientHeight div 2 - y
end;

end.
[ redcode @ 08.02.2005. 13:21 ] @
@dejan
hvala

jel mozes samo malo da mi pojasnis proceduru Translate?
sve ovo ostalo razumem
[ _v!rus_ @ 08.02.2005. 17:10 ] @
Evo ja cu ti razjasnim ako smem... ;-)

Translate ocigledno postavlja koordinatni pocetak na sredinu canvasa, tako da imas sva 4 kvadranta grafika...
[ Dejan Mitrovic @ 08.02.2005. 19:05 ] @
Citat:
_v!rus_: Evo ja cu ti razjasnim ako smem... ;-)

Translate ocigledno postavlja koordinatni pocetak na sredinu canvasa, tako da imas sva 4 kvadranta grafika...


Otprilike... Mi posmatramo koordinantni pocetak na sredini canvasa, dok je on u stvarnosti u levom gornjem uglu. Zato svaku tacku (x, y) treba translirati tako da se od nasih zamisljenih dobiju stvarne koordinate. Takodje, nase y raste gore, dok u stvarnosti raste dole. Otuda y := -(y - ClientHeight div 2).

Pojednostavljeno: postupak kojim si translirao koordinantni pocetak iz gornjeg levog ugla na sredinu primenjujes na svaku tacku
[ redcode @ 09.02.2005. 11:28 ] @
ahaaaa kapiram.... nice

thnx
[ vladab @ 09.02.2005. 15:21 ] @
Ako ti treba neki lep grafik, moyes da koristis interpolaciju, koja na osnovu tacaka crta grafik. Ja sam to radio kao projekat, pa ako te zanima, posalji mi mail, pa cu da ti posaljem.
PS
U pitanju je delphi 7. :O)
[ bancika @ 09.02.2005. 23:21 ] @
to je najlakse uraditi kako rade AA na grafickoj kartici. Ili nacrtas sve to par puta vece pa interpolacijom smanjis na zeljenu ili nacrtas normalno, pa povecas, pa smanjis to je prilicno lagano, ima biblioteke za poznate algoritme za interpolaciju na svakom cosku
[ redcode @ 10.02.2005. 12:20 ] @
ma hocu da uradim maturski - osobine i grafik funkcije u delphiju. ne treba meni nesto doterano nego samo onako da imam grafik
[ redcode @ 10.02.2005. 18:55 ] @
e opet mi treba pomoc!
1) osobine funkcije treba da se ispisu u memo-u. kako mogu da ubacim neke simbole? npr. simbol za beskonacno, za pripadanje skupu (kao e), svako (obrnuto A), strelice na gore i na dole....
2) mogu li da grafik uradim uz pomoc chart komponente?

ajd pomozite opet...
[ _v!rus_ @ 10.02.2005. 21:10 ] @
1. Sto se tice znakova u memo-u, mozes da probas sa CharacterMap-om (divan jedan programcic :), ide uz svaki win jos od 3.0.

Edit: evo za beskonacno [∞] (U + 221E) u obicnom tahoma fontu (unicode).

2. Nisam radio sa chartom ali jesam sa dbchartom, pretpostavljam da je isto. Sistem bi bio da za svako X koje se inkrementira, rucno racunas Y i te Y-e prosledjujes kao podatke chartu, exprimentisi malo, skoro sam siguran da moze. Samo je malo fizikalija naterati chart da izgleda onako kako ti hoces, mozda je bolje rucno crtanje.
[ redcode @ 10.02.2005. 23:47 ] @
nasao sam za ± (alt+0177) i ² (alt+0178) ali ovo ostalo nema sanse... sve ove simbole sam nasao u wordu i tamo ima za skoro svaki ovaj shortcut, ali nema shanse da delphi prihvati one koji imaju shortcut sa alt+x (npr 221e, alt+x = ∞ )

postoji li nacin da se ubace ovi simboli u delphi??????
[ bancika @ 10.02.2005. 23:54 ] @
da, odi u pomenuti Character Map i tamo (ili u bilo kom programu u kome moze) otkucaj taj znak i onda copy-paste-uj ga u delphi...ja tako radim :)
[ redcode @ 11.02.2005. 21:32 ] @
kopiram ja ali pojavljuje se samo kocka  za vecinu simbola
[ bancika @ 11.02.2005. 22:27 ] @
znas sta bih ti onda preporucio. pretpostavljam da taj tvoj output treba da bude mesavina texta i matematickih simbola? uzmi TWebBrowser i dinamicki generisi HTML kod..to su jednostavne stvari...mozes direktno da ucitas HTML kod u TWebBrowser bez potrebe za pravljenjem privremenog html fajla iz kog ces da ucitas.
ako hoces tako da radis dacu ti konktretnije upute
[ redcode @ 12.02.2005. 14:13 ] @
e ajde da podjem u skolu da vidim moze li ovako (stavio sam e umesto znaka pripadanja skupu). ako ne moze javicu ti ili ovde ili na email.

joj sramota me da i ovo pitam... aaa nema veze
kako da zaokruzim broj na 2 decimale. u pascalu je writeln(a:2). jel moram da ga prebacim u string pa onda za ga smanjujem odnosno obrisem deo. isto treba da se ispise u memo
[ bancika @ 12.02.2005. 14:31 ] @
FormatFloat('0.00', neki_broj) ce da napise u obliku 123456.25 npr
[ redcode @ 13.02.2005. 21:46 ] @
zavrsio sam!!! juce! hvala svima na pomoci
[ Vdjuric @ 16.02.2005. 02:56 ] @
...

Formatfloat funkcija vraca vrednost string tipa...

//textstr:=formatfloat('0.00', value);

da li postoji funkcija za zaokruzivanje real broja na odredjeni broj decimala, ali bez konverzije u str?

Poz
[ sasas @ 16.02.2005. 07:43 ] @
Postoji funkcija Round(r: Real) koja zaokružuje broj (ali joj ne možeš proslediti željeni broj decimala, već ih sve odseče). Možeš zaokružiti na npr. dve decimale ovako:

round (r * 100) / 100;

ss.
[ redcode @ 19.02.2005. 13:42 ] @
Citat:
sasas: Postoji funkcija Round(r: Real) koja zaokružuje broj (ali joj ne možeš proslediti željeni broj decimala, već ih sve odseče). Možeš zaokružiti na npr. dve decimale ovako:

round (r * 100) / 100;

ss.


upravu sam tako uradio
x1:=round((1000*x1)/1000);
[ redcode @ 19.02.2005. 17:06 ] @
e opet nekoliko pitanja:
-za sta sluzi FRAME?
-kako da napravim save as prozor?kako da ga povezem sa form1? treba npr da se klikom na neko dugme otvori dialoski prozor za cuvanje, font, otvaranje.... koristi li se tu nova forma ili frame il nesto 3.?
kad idem na file-new-dialog-dialog wizard ne mogu da kreiram jer vec postoji form1.
jel mogu nekako da napravim multiple dialog box (sa karticama, pagecontrol-om) a da ga ne cuva kao form1? ove ostale dialogbox-ove mogu da kreiram