Mathématiques avec Python et Ruby/Droites en Ruby
La droite peut être définie à partir d'une de ses équations, mais aussi à partir de deux points. Et comme on a vu précédemment comment on peut créer en Ruby un objet point, on va voir comment on peut s'en servir pour gérer des droites sous Ruby.
Définition[modifier | modifier le wikicode]
Là encore, on va définir une classe Droite possédant, lors de son instanciation, deux points:
class Droite
def initialize(a,b)
@a,@b=a,b
end
Vecteurs[modifier | modifier le wikicode]
Vecteur directeur[modifier | modifier le wikicode]
def directeur
@a.vecteur(@b)
end
On obtient le vecteur directeur de d par d.directeur
Alignement[modifier | modifier le wikicode]
Pour savoir si le point m est sur la droite d, on peut rajouter ce test:
def IsOnLine(d)
vecteur(d.a).colin(d.directeur)
end
mais on le rajoute dans l'objet Point, puisque c'est une propriété du point...
Vecteur normal[modifier | modifier le wikicode]
Le vecteur normal s'obtient en choisissant ses coordonnées pour que le produit scalaire avec le vecteur directeur soit nul:
def normal
Vecteur.new(-self.directeur.y,self.directeur.x)
end
Le vecteur normal s'obtient avec d.normal et permet facilement d'avoir l'équation cartésienne ci-dessous.
Équations[modifier | modifier le wikicode]
Équation cartésienne[modifier | modifier le wikicode]
def cartesienne
'('+self.normal.x.to_s+')x+('+self.normal.y.to_s+')y='+(self.normal.x*@a.x+self.normal.y*@a.y).to_s
end
Pour afficher l'équation cartésienne de d, on entre
puts(d.cartesienne)
Équation réduite[modifier | modifier le wikicode]
Comme il y a des divisions à effectuer, on a intérêt à faire appel à mathn':
require 'mathn'
Coefficient directeur[modifier | modifier le wikicode]
def cd
self.directeur.y/self.directeur.x
end
Ordonnée à l'origine[modifier | modifier le wikicode]
def oalo
@a.y-self.cd*@a.x
end
Équation[modifier | modifier le wikicode]
L'équation réduite se définit par
def reduite
'y='+self.cd.to_s+'x+('+self.oalo.to_s+')'
end
et s'obtient par d.reduite.
Comparaison de deux droites[modifier | modifier le wikicode]
Parallélisme[modifier | modifier le wikicode]
Deux droites sont parallèles lorsque leurs vecteurs directeurs sont colinéaires. Mais aussi (sous réserve qu'elles en aient) lorsqu'elles ont le même coefficient directeur:
def parallele(d)
self.cd==d.cd
end
Pour savoir si deux droites d1 et d2 sont parallèles, on fait
puts(d1.parallele(d2))
Perpendicularité[modifier | modifier le wikicode]
Deux droites sont perpendiculaires si et seulement si leurs vecteurs normaux sont orthogonaux:
def perpendiculaire(d)
self.normal.ortho(d.normal)
end
On aurait aussi pu chercher si le produit de leurs coefficients directeurs est égal à -1.
Intersection[modifier | modifier le wikicode]
Pour calculer les coordonnées du point d'intersection de deux droites, on résout un système.
Exemple[modifier | modifier le wikicode]
Dans l'exemple des chapitres précédents, on peut regarder si les deux droites (CA) et (CB) sont perpendiculaires:
a=Point.new(-1,3)
b=Point.new(5,1)
c=Point.new(1,5)
d1=Droite.new(c,a)
d2=Droite.new(c,b)
puts(d1.perpendiculaire(d2))