Compare commits

..

3 Commits

Author SHA1 Message Date
2cbfccb8cc
Session2 30/9/22 2022-09-30 12:59:47 +02:00
b9471f779e
fixup! fixup! first commit 2022-09-30 11:49:26 +02:00
a5221b52a5
fixup! first commit 2022-09-30 11:38:22 +02:00
4 changed files with 43 additions and 7 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
__pycache__/

View File

@ -1,4 +1,25 @@
def droite(p1: tuple,p2: tuple) -> tuple: from math import floor, sqrt
def transform_mp_to_abc(m, p):
"""transforme une équation de la forme y = mx + p to ax + by = c
:returns: 3-uple of a, b, c
"""
return -m, 1, p
def transform_abc_to_mp(a, b, c):
"""transforme une équation de la forme to ax + by = c to y = mx + p
:returns: tuple of m, x
"""
return -a/b, c
def droite(p1: tuple, p2: tuple) -> tuple:
"""retourne un 3-uple d'une droite selon ax+by=c """retourne un 3-uple d'une droite selon ax+by=c
:p1: tuple du point 1 :p1: tuple du point 1
@ -64,27 +85,40 @@ def intersection(d1, d2):
def droite_normale(d, p): def droite_normale(d, p):
"""TODO: trouve la normale dune droite passant par un point. """trouve la normale dune droite passant par un point.
:d: droite :d: droite
:p: point :p: point
:returns: retourne la normale de la droite passant par le point :returns: retourne la normale de la droite passant par le point
""" """
a, b, c = d
x, y = p
m, p = transform_abc_to_mp(a, b, c)
return transform_mp_to_abc(-1/m, y-(-1/m)*x)
def symetrie_orthogonale(d, p): def symetrie_orthogonale(d, p):
"""TODO: Docstring for symetrie_orthogonale(d, p. """ retourne la symétrie orthogonale par le point p de la droite d
:returns: TODO :returns: symétrie orthogonale
""" """
pass a, b, c = d
x, y = p
ap, bp, cp = droite_normale(d, p) # perpendiculaire passant par le point
xi, yi = intersection((a, b, c), (ap, bp, cp))
return round((2*xi - x)*10)/10, round((2*yi - y)*10)/10
def distance_droite_point(d, p): def distance_droite_point(d, p):
"""TODO: Docstring for distance_droite_point. """TODO: Docstring for distance_droite_point.
:returns: TODO :returns: TODO
""" """
pass a, b, c = d
x, y = p
ap, bp, cp = droite_normale(d,p) # perpendiculaire passant par le point
xi, yi = intersection((a,b,c), (ap, bp, cp))
return sqrt((xi-x)**2 + (yi-y)**2)

View File

@ -27,8 +27,9 @@ def tests():
test(droite_normale, (-0.5, 1, 1.0), (3, 4), (2.0, 1, 10.0)) test(droite_normale, (-0.5, 1, 1.0), (3, 4), (2.0, 1, 10.0))
test(symetrie_orthogonale, (-0.5, 1, 1.0), (-2, 0), (-2.0, 0.0)) test(symetrie_orthogonale, (-0.5, 1, 1.0), (-2, 0), (-2.0, 0.0))
test(symetrie_orthogonale, (-0.5, 1, 1.0), (3, 4), (2.0, 1, 10.0)) test(symetrie_orthogonale, (-0.5, 1, 1.0), (3, 4), (4.2, 1.6))
test(distance_droite_point, (-0.5, 1, 1.0), (-2, 0), 1.3416407864998741)
test(distance_droite_point, (-0.5, 1, 1.0), (-2, 0), 0.0) test(distance_droite_point, (-0.5, 1, 1.0), (-2, 0), 0.0)