« Mathématiques avec Python et Ruby/Fonctions en Ruby » : différence entre les versions

Contenu supprimé Contenu ajouté
mAucun résumé des modifications
Ligne 105 :
=Représentation graphique=
 
''Ruby'' n'étant pas très doué (pour le moment) en dessin, on va utiliser ses talents littéraires pour fabriquer un fichier au format [[w:Scalable Vector Graphics|svg]]. Ce fichier sera fabriqué comme une chaîne de caractères, et inscrit dans un fichier nommé ''FonctionRuby01.svg'' posté ci-dessous. Le fichier sera créé en mode écriture (''w'') avec
 
<source lang="ruby">
figure=File.open("FonctionRuby01.svg","w")
</source>
 
==Création de la figure==
 
On commence par écrire dans le fichier (qui, on l'a vu ci-dessus, s'appelle ''figure''), ce qu'il faut pour dire que c'est un fichier ''svg'' (l'entête):
 
<source lang="ruby>
figure.puts('<?xml version="1.0" encoding="utf-8"?>')
figure.puts('<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"')
figure.puts('"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">')
figure.puts('<svg xmlns="http://www.w3.org/2000/svg" width="640" height="480">')
</source>
 
Le fichier fera donc 640 pixels de large et 480 pixels de haut.
 
==Axes==
 
Les axes et leurs graduations seront des traits, créés par des boucles puisque le travail des graduations est répétitif et que les boucles sont faites pour tout ce qui est répétitif.
 
===Des abscisses===
 
L'axe des abscisses et ses graduations sera bleu:
 
<source lang="ruby">
figure.puts('<line x1="20.0" y1="460.0" x2="540.0" y2="460.0" style="stroke:rgb(0,0,64);stroke-width:1"/>')
((0..500).select {|x| x%10==0}).collect { |x| figure.print('<line x1="'+(x+20).to_s+'" y1="460" x2="'+(x+20).to_s+'" y2="60" style="stroke:rgb(250,200,150);stroke-width:1"/>\n')}
((0..500).select {|x| x%100==0}).collect { |x| figure.print('<text x="'+(x+20).to_s+'" y="475.0" style="font-size:16;fill:rgb(0,0,178);font-weight:normal">'+(x/10).to_s+'</text>\n'+'<line x1="'+(x+20).to_s+'" y1="455" x2="'+(x+20).to_s+'" y2="465" style="stroke:rgb(0,0,64);stroke-width:1"/>\n')}
((0..500).select {|x| x%50==0}).collect { |x| figure.print('<line x1="'+(x+20).to_s+'" y1="456" x2="'+(x+20).to_s+'" y2="464" style="stroke:rgb(0,0,64);stroke-width:1"/>\n')}
((0..500).select {|x| x%10==0}).collect { |x| figure.print('<line x1="'+(x+20).to_s+'" y1="458" x2="'+(x+20).to_s+'" y2="462" style="stroke:rgb(0,0,64);stroke-width:1"/>\n')}
</source>
 
===Des ordonnées===