Pages: [1]   Bas de page
Imprimer
Auteur Fil de discussion: [PHP] Gestion d'un repère orthonormal  (Lu 1647 fois)
0 Membres et 1 Invité sur ce fil de discussion.
graph05 Hors ligne
Full Member
***
Messages: 121


Voir le profil
« 19 Avril 2008, 19:48:13 »

Salut à tous
Voilà, malgré ma très très faible activité sur ce forum ( Embarrassed ) je voudrais vous présenter un petit projet que j'avais débuté il y a pas mal de temps (l'année dernière pour tout dire) et que je viens de reprendre un peu : une classe PHP qui permet de gérer un repère orthonormal. Concrètement, ça ressemble à ça :

http://lesoukderaf.free.fr/Maths/repere.php

En fait, cette classe permet (pour l'instant) de, très intuitivement :
- gérer les couleurs utilisées dans le repère
- placer des points et les relier (soit en segment, soit en droite)
- créer des formes géométriques de base (triangle, cercle)
- tracer des parallèles et des perpendiculaires
- récupérer le point d'intersection de 2 droites

Je sais que c'est pas super, mais j'ai déjà pas mal de fonctions codées et pour l'instant, mon fichier de classe fait près de 500 lignes (en comptant tous les commentaires et sauts de lignes qui sont, pour une fois, abondants Cheesy).
A terme, je souhaiterais créer une interface "user-friendly" (peut être en javascript pour plus d'interactivité, sachant que j'avais déjà fait un truc similaire) pour être plus intuitif ou même, soyons fous, le porter sur DS Cheesy
Voilà donc si vous avez des remarques, commentaires, suggestions, ou même que vous voulez voir la source, n'hésitez pas à poster Wink

++
Journalisée
Cobain Hors ligne
Mega Member
***
Messages: 1131


Voir le profil WWW
mes talents de graphiste lol

« Réponse #1 : 19 Avril 2008, 19:50:30 »

il est heberger sur un serveur pour qu'on test?

sinon c'est beau au niveau du rendu Wink
Journalisée

Mes Projets || Mon Blog
Citation
Honey bunny : I love you, pumpkin.
Pumpkin : I love you, honey bunny.
Pumpkin : Everybody be cool this is a robbery!
Honey bunny : Any of you fuckin' pricks move and i'll execute every motherfucking last one of you
graph05 Hors ligne
Full Member
***
Messages: 121


Voir le profil
« Réponse #2 : 20 Avril 2008, 13:18:00 »

Bah en fait l'image est un fichier PHP généré grâce à la librairie GD et qui utilise ma classe repere
Le code de repere.php ressemble à ça :

Code
(php):
<?php
require_once ('repere.class.php');
 
// Debut du script
header ('Content-type: image/png');
 
// On crée une variable $graphique de type repere
$graphique = new repere (638, 550, 50, 2, 6, 255, 255, 225);
$graphique->genererGrille (0, 0, 0, 100, -100);
 
// Les couleurs utilisées dans le repère
$graphique->definirCouleur ('ligne', 0, 200, 250); // Bleu clair (presque cyan)
$graphique->definirCouleur ('droite', 255, 0, 0); // Rouge
$graphique->definirCouleur ('cercle', 200, 0, 250); // Violet
 
// On trace un triangle selon les longueurs des 3 côtés (arguments 3 à 5)
$graphique->triangle (2, 2, 6, 4, 5, 'A', 'B', 'C', 'ligne');
 
// Placement des milieux des côtés du triangle
$graphique->placerMilieu ('AB', 'I');
$graphique->placerMilieu ('BC', 'J');
$graphique->placerMilieu ('AC', 'K');
 
// Les médianes du triangle
$graphique->traceSegment ('CI', 'droite');
$graphique->traceSegment ('AJ', 'droite');
$graphique->droiteParPoints ('BK', 'droite');
 
// Le point d'intersection des médianes = centre de gravité G du triangle
$graphique->intersectionDroites ('CI', 'AJ', 'G');
// Ordonnée à l'origine de BK (intersection avec l'axe 'y')
$graphique->intersectionDroites ('KB', 'y', 'Y');
 
// On affiche le tout
$debug = 'G est le centre de gravite de ABC. Y est l\'ordonnee a l\'origine de (BK)';
$graphique->debug = $debug;
$graphique->terminer ();
 
?>

Après dans mon fichier repere.class.php, j'ai toute la programmation de la classe qui gère ça Wink
Journalisée
Pouer Hors ligne
Hero Member
*****
Messages: 531


Voir le profil
Petit 1/2 en puissance :)

« Réponse #3 : 20 Avril 2008, 16:38:50 »

Si tu veut savoir comment tracer des courbes ya un mini tuto sur le site Wink
Journalisée

graph05 Hors ligne
Full Member
***
Messages: 121


Voir le profil
« Réponse #4 : 20 Avril 2008, 16:42:44 »

Ben ça doit pas être trop compliqué, non ?
J'imagine qu'il suffit de récupérer la fonction de la courbe, et après on fait varier la valeur de X et on place un point d'abscisse ce X et d'ordonnée le y qui correspond ... en gros comme pour une droite Azn

Mais bon je ne crois pas que je vais implémenter cette fonction, car dans un repère orthonormal on a rarement besoin d'utiliser des courbes Wink
Journalisée
Pouer Hors ligne
Hero Member
*****
Messages: 531


Voir le profil
Petit 1/2 en puissance :)

« Réponse #5 : 20 Avril 2008, 16:44:13 »

Hehe tu rigole mais c'est super chiant de convertir repere <-> ecran
Journalisée

graph05 Hors ligne
Full Member
***
Messages: 121


Voir le profil
« Réponse #6 : 20 Avril 2008, 16:52:07 »

Ouais d'ailleurs je me suis fait une fonction dans ma classe qui me le fait selon l'échelle pixel<->unité du repère
Journalisée
Pouer Hors ligne
Hero Member
*****
Messages: 531


Voir le profil
Petit 1/2 en puissance :)

« Réponse #7 : 20 Avril 2008, 16:53:35 »

Tu peut m'expliquer vite fait comment tu fait pour voir ta technique ?
Journalisée

graph05 Hors ligne
Full Member
***
Messages: 121


Voir le profil
« Réponse #8 : 20 Avril 2008, 17:03:35 »

Bah en fait c'est tout simple Azn J'ai créé 2 fonctions dans la class repere :

Code
(php):
// Transforme une coordonnée X relative au repère en une coordonnée affichable sur l'écran de l'ordinateur
function XrelativeToAbsolute ($valeur) {
return ($this->x_origine + $valeur*$this->echelle);
}
 
// Transforme une coordonnée Y relative au repère en une coordonnée affichable sur l'écran de l'ordinateur
function YrelativeToAbsolute ($valeur) {
return ($this->y_origine - $valeur*$this->echelle); // Soustraction car l'axe des abscisses est vers le haut dans un repère, vers le bas sur un écran
}
 

Dans le constructeur de la class, on passe en argument les variables $x_origine, $y_origine et $echelle qui sont respectivement les coordonnées (x;y) en pixels de l'origine du repère dans le fichier image qui sera généré et le nombre de pixels que représente une unité du repère Wink (et comme cette échelle est la même pour l'abscisse et l'ordonnée, le repère est orthonormal)

Si tu veux je peux uploader les sources complètes (avec toutes les fonctions) mais je doute que cela t'intéressera Grin
Journalisée
Pouer Hors ligne
Hero Member
*****
Messages: 531


Voir le profil
Petit 1/2 en puissance :)

« Réponse #9 : 20 Avril 2008, 17:05:37 »

NOn c'est surtout pour voir si c'etait a peut pres la meme chose que je faisait mais aparement oui
Journalisée

Pages: [1]   Haut de page
Imprimer

Aller à: