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

Un livre de Wikilivres.
Contenu supprimé Contenu ajouté
Aucun résumé des modifications
Ligne 105 : Ligne 105 :


==Figure==
==Figure==

[[Fichier:GeomRuby1.svg|center]]

[[Catégorie:Informatique]]
[[Catégorie:Mathématiques]]
[[Catégorie:Programmation Ruby (livre)]]
[[Catégorie:Mathématiques avec Python et Ruby (livre)|Ruby et géométrie]]

Version du 2 janvier 2011 à 19:51

L'objet Point est une bonne manière d'aborder la programmation objet. En géométrie repérée, un point est constitué de deux nombres, son abscisse et son ordonnée.

Voici l'énoncé de l'exercice:

Dans un repère orthonormé, on considère , et . Calculer les distances AB, AC et BC et en déduire la nature du triangle ABC. Puis en déduire les coordonnées de son cercle circonscrit.

Classe

Pour que Ruby possède un objet Point, il suffit de le définir, sous la forme d'une classe:

class Point

    def initialize(x,y)
        @x, @y = x, y
    end

end

Dorénavant, chaque fois qu'on crée un point par Point.new(x,y), celui-ci possédera les coordonnées x et y qui sont pour l'instant ses seules propriétés (des variables stockées temporairement dans l'objet).

Coordonnées

Cependant pour accéder depuis l'extérieur aux coordonnées du point, il faut les redéfinir comme des méthodes Ruby (parce que dans Ruby, tout est méthode).

Abscisse

Il suffit de dire que la méthode x renvoit le nombre x:

    def x
        @x
    end

(à l'intérieur de la classe)

Ordonnée

Idem pour y:

    def y
        @y
    end

Dorénavant, l'abscisse de P s'appelle M.x et son ordonnée, M.y.


Affichage

Deux points

Milieu

Vecteur

Distance

Application au problème

Pour récapituler, la classe Point en entier est décrite ici:

class Point

    def initialize(x,y)
        @x, @y = x, y
    end
    
    def x
        @x
    end

    def y
        @y
    end

    def to_s
        '('+@x.to_s+';'+@y.to_s+')'
    end

    def milieu(q)
        Point.new((@x+q.x)/2,(@y+q.y)/2)
    end

    def vecteur(q)
        Vecteur.new(q.x-@x,q.y-@y)
    end

    def distance(q)
        (self.vecteur(q)).norme
    end

end

C'est tout!

Nature de ABC

Centre du cercle

Figure