khouja_mustapha
Messages postés33Date d'inscriptionmercredi 8 septembre 2004StatutMembreDernière intervention27 septembre 2010
-
9 mai 2008 à 13:32
lounnaci
Messages postés26Date d'inscriptionvendredi 7 octobre 2005StatutMembreDernière intervention18 juin 2011
-
6 avril 2009 à 14:07
Bonjour,
Y a t il une solution pour afficher (dans une Form) des fonctions mathématiques avec des indices, des exposants, des matrices ...
lounnaci
Messages postés26Date d'inscriptionvendredi 7 octobre 2005StatutMembreDernière intervention18 juin 2011 6 avril 2009 à 14:07
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.