Affichage de fonctions mathématiques

Signaler
Messages postés
33
Date d'inscription
mercredi 8 septembre 2004
Statut
Membre
Dernière intervention
27 septembre 2010
-
Messages postés
26
Date d'inscription
vendredi 7 octobre 2005
Statut
Membre
Dernière intervention
18 juin 2011
-
Bonjour,
Y a t il une solution pour afficher (dans une Form) des fonctions mathématiques avec des indices, des exposants, des matrices ...

1 réponse

Messages postés
26
Date d'inscription
vendredi 7 octobre 2005
Statut
Membre
Dernière intervention
18 juin 2011

Oui il existe une solution meme plusieus voiçi l'une d'elle :
Coordonnées mathématiques et informatiques
Appelons x et y les coordonnées mathématiques. Faisons varier x de -p à p.
Comme Delphi ne fait pas la distinction entre majuscules et minuscules, appelons GX et GY
les coordonnées informatiques. GX va varier de 0 à BoiteDessin.Width.
Pour  simplifier  la  formule  appelons  W  le  nombre  BoiteDessin.Width  et  H  le  nombre
BoiteDessin.Height..
L'abscisse  mathématique  varie  de  2p  alors  que  l'abscisse  informatique  varie  de  W.  Nous
devons donc appliquer un coefficient de 2p/w pour passer des coordonnées informatiques aux coordonnées mathématiques et donc de w/2p.

pour passer des coordonnées mathématiques aux coordonnées informatiques.
L'origine  informatique  est  située  en  haut  à  gauche  alors  que  nous  allons  placer  l'origine
mathématique  au  centre.  Nous  devons  donc  faire  un  décalage  de  -w/2
pour  les  abscisses informatiques, ce qui en abscisses mathématiques se traduit par un décalage de -p.
La formule pour passer de GX à x est donc : x=(2p/w)*GX-p.
Et la formule pour passer de x à GX est donc :GX=(w/2p)*x+(w/2).

Pour que la courbe ne soit pas déformée (repère orthonormal), nous devons appliquer le même
coefficient  pour  les  ordonnées.  Le  décalage  informatique  sera  H/2.
.  Le  sens  n'étant  pas  le même,  la  formule  pour  passer  des  coordonnées  mathématiques  aux  coordonnées
informatiques sera : GY=(-w/2p)*y+(h/2).

exemple : fonction f(x)=sin(x).

unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  StdCtrls, ExtCtrls;
type
  TForm1 = class(TForm)
    BoiteDessin: TPaintBox;
    procedure BoiteDessinPaint(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;
var
  Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.BoiteDessinPaint(Sender: TObject);
var x,y : extended;
var GX,GY,W,H : integer;
begin
  W := BoiteDessin.ClientWidth;
  H := BoiteDessin.ClientHeight;
  for GX := 0 to W do
  begin
    x := 2*PI/W*GX - PI;
    y := sin(x);
    GY := round(-W/2/PI*y + H/2);
    BoiteDessin.Canvas.Pixels[GX,GY] := clRed;
  end;
end;
end.