MATH_SurfaceGraphe [Geometrie]
Par Antoine Galmiche, Marc Duc-Jacquet (Math4D v1)
Nouvelle recherche
Si (Faux)
` MATH_SurfaceGraphe [Antoine Galmiche 07/2002, Marc Duc-Jacquet 10/2002]
` ---------------------------------------------
` Rappels mathématiques :
` Aire algébrique située entre l'axe Ox et une fonction linéaire par morceaux:
` Soient a=X1 TableauOrdonnées; ->Tableau2 ) -> Numérique
` sélecteur (entier long) 1=Tableau2 contient les abscisses
` 2=Tableau2 contient 2 lignes : Origine et Pa
` ou constantes Graphe_Abscisses et Graphe_Origine
` TableauOrdonnées (Pointeur) Pointeur tableau réel des ordonnées
` Tableau2 (Pointeur) Pointeur tableau réel , abscisses ou origine/pas
` Résultat (Numérique) Surface de l'axe OX à la courbe
` ---------------------------------------------
` MATHERROR
` 0 -> Pas d'erreur
` -1 -> Tableaux de tailles différentes ou taille<2
` -2 -> Les abscisses ne sont pas distinctes ou bien ne sont pas croissantes
` -3 -> Pas inférieur ou égal à 0
` -4 -> Sélecteur non valable
` -5 -> Tableau Origine/Pas non conforme
` ---------------------------------------------
`
Fin de si
C_ENTIER LONG(MATHERROR)
C_ENTIER LONG($1)
C_POINTEUR($2;$3)
C_REEL($0)
$0:=0
MATHERROR:=0
C_REEL($n;$origine;$pas;$Y1;$X2;$Y2)
C_ENTIER LONG($i)
` Traitement des erreurs
Au cas ou
: ($1=1) ` Abscisses
$n:=Taille tableau($2->)
Si ($n#Taille tableau($3->)) `test tableaux de même taille
MATHERROR:=-1
Sinon
Si ($n<2) `test tableaux de taille<2
MATHERROR:=-1
Sinon
Boucle ($i;2;$n) `test abscisses croissantes
Si (($3->{$i})>($3->{$i-1}))
Sinon
MATHERROR:=-2
$i:=$n
Fin de si
Fin de boucle
Fin de si
Fin de si
: ($1=2) ` Origine et pas
Si (Taille tableau($3->)#2)
MATHERROR:=-5
Sinon
$origine:=$3->{1}
$pas:=$3->{2}
Si ($pas<=0)
MATHERROR:=-3
Fin de si
Fin de si
Sinon
MATHERROR:=-4 ` mauvais sélecteur
Fin de cas
` Algorithme
Si (MATHERROR=0)
Si ($1=1)
$0:=($3->{2}-$3->{1})/2*$2->{1} `terme (X2-X1)/2*Y1
Boucle ($i;2;$n-1)
$0:=$0+(($3->{$i+1}-$3->{$i-1})/2*$2->{$i}) `terme (Xi+1-Xi-1)/2* Yi
Fin de boucle
$0:=$0+(($3->{$n}-$3->{$n-1})/2*$2->{$n}) `terme (XN-XN-1)*YN/2
Sinon
Boucle ($i;1;(Taille tableau($2->)-1))
$Y1:=$2->{$i} ` ordonnée du 1ier point
$X2:=$origine+$pas ` abscisse 2eme point
$Y2:=$2->{$i+1} ` ordonnée 2eme point
Si ($Y1<$Y2)
$0:=$0+($Y1*Abs($X2-$origine))+Abs(($X2-$origine)*($Y2-$Y1)/2) ` surface rectangle axe + surface triangle tête
Sinon
$0:=$0+($Y2*Abs($X2-$origine))+Abs(($X2-$origine)*($Y2-$Y1)/2)
Fin de si
$origine:=$X2
Fin de boucle
Fin de si
Fin de si