Équation cartésienne de droite

Coordonnées entières

Dans ces exercices, afin de simplifier les tests, les coordonnées proposées sont des nombres entiers.

Les formules proposées restent toutefois valables en utilisant des nombres réels.

Une droite peut être définie par la donnée :

  • de deux points distincts ;

    ou

  • d'un seul point et de sa direction donnée par un vecteur non nul appelé vecteur directeur.

Droites

Une équation cartésienne d'une droite peut s'écrire sous la forme :

\[ax+by+c=0\]

\(a\), \(b\) et \(c\) sont trois réels non tous nuls.

Une même droite possède une infinité d'équations cartésiennes équivalentes. Par exemple, \(-5x+y+7=0\) et \(15x-3y-21=0\) sont des équations cartésiennes de la même droite passant par les points \(C~(1~;~-2)\) et \(D~(0~;~-7)\). Les coordonnées des deux points vérifient bien les deux équations :

\[ \begin{align*} -5\times1+(-2)+7=0 \quad\text{ et }\quad& 15\times1-3\times(-2)-21=0\\ \quad\\ -5\times0+(-7)+7=0 \quad\text{ et }\quad& 15\times0-3\times(-7)-21=0\\ \end{align*} \]
Rappel - équation réduite

Dans le cas où \(x_A \neq x_B\), il existe une unique équation réduite pour la droite \((AB)\) de la forme \(y=mx+p\). On en déduit immédiatement une équation cartésienne \(mx-y+p=0\).

Les exercices de cette série proposent de déterminer l'équation réduite d'une droite.

La droite passant par le point \(A\) et de vecteur directeur \(\vec{u} \ne \vec{0}\) est l'ensemble des points \(M~(x~;~y)\) tels que les vecteurs \(\overrightarrow{AM}\) et \(\vec{u}\) sont colinéaires, c'est-à dire tels que le déterminant des vecteurs \(\overrightarrow{AM}\) et \(\vec{u}\) est égal à \(0\). On note aussi \(\text{det} \left( \overrightarrow{AM},\vec{u} \right) = 0\).

Si l'on note \(x_{\vec{u}}\) et \(y_{\vec{u}}\) les coordonnées du vecteur \(\vec{u}\), les coefficients \(a\), \(b\) et \(c\) d'une équation cartésienne de cette droite peuvent être calculés à l'aide des formules suivantes :

\[ \begin{cases} a= y_{\vec{u}}\\ b= -x_{\vec{u}}\\ c= -a \times x_A - b \times y_A \end{cases} \]
assert ?

Le mot clé assert est utilisé en Python afin de vérifier que des propositions sont vraies.

Ainsi, l'expression assert 3 + 5*7 == 38 permet de vérifier que l'expression 3 + 5*7 est bien évaluée à 38.

Si c'est le cas, le programme continue de se dérouler normalement. Dans le cas contraire, le programme est interrompu et une erreur est signalée.

Equation cartésienne à partir d'un point et d'un vecteur directeur

Écrire la fonction equation_point_vecteur qui prend en paramètres les coordonnées x_A, y_A, x_u et y_u représentant les coordonnées d'un point \(A\) et d'un vecteur non nul \(\vec{u}\).

Cette fonction renvoie le triplet (a, b, c) tel que \(ax+by+c=0\) soit une équation cartésienne de la droite passant par \(A\) et dirigée par \(\vec{u}\).

Les tests vérifieront que les coordonnées de deux points distincts de la droite satisfont bien l'équation renvoyée. Le second point \(B\) utilisé est l'image du point \(A\) par la translation de vecteur \(\vec{u}\) :

\[ \begin{cases} x_B = x_A + x_{\vec{u}}\\ y_B = y_A + y_{\vec{u}} \end{cases} \]
Exemples
>>> equation_point_vecteur(2, 3, -1, -5)
(-5, 1, 7)
>>> equation_point_vecteur(2, 3, 0, -5)
(-5, 0, 10)
>>> equation_point_vecteur(2, 3, -1, 0)
(0, 1, -3)

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 5/5

.128013(lbsSetxph4rdA5-f1uma"ovg,_/3=in k:)y *q2Pc030h0a0b0p0z06080G0L060p08080y0q0b0z0d0q020B03080n0o0o0p0g0F02090r060n0$0r0A030w0,0.0:0=0*0d0203150~180w150*0h0z0s0U0W0Y0!0e0z0t0e061m0e0b0(030P07060a1h0X0Z0q1l1n1p1n0b1v1x1t0b0g160b0e0U0^080d0p0A0!0J0q1z1j0q0l0R0a0A0p0o0a1t1S1U1Z1B1$1x1(1*0(040G0K0g0r0d0r080z0{0A0G0N1Q0g0g0a0L220~1-0A160w1O2f1L1N1M1u0h1/0!1p0A1'1 1t1e1g0V1A2p0z2r0A0r2v1t0d28162d2f2J0+1T232x1!2C0g0/060(0m2c2N0)2M1.2P1B2R2T0(0J2X1U2Z2d2o0q2'0p2U020x2+2e0*2.2$0!2;2?0f2_2-2N2/2 0(0j32192H0~2v2i0h1N2n2}0q0L2D1+163d173b2L0 2Y033k0N2I343i0C0(0N0l320G2!2O1i2%0l0(0a0I0n0p220v1~2A0b0v0s290b0a0n0g392|3I0!0'02053$3y3'2:0(0c0v0i3,2#3.3)0u3E3G350(0F3=3@3H2y0q3`3|3%440A3:0v0n422/463s2,3F482Q3 4c4e3i3)0E0D320B0G4v4j3-490(0p474y1!0r0(0y4C3^4z02404d4h2`4w4x4J4l02074I434E4G4W2/4F020k4o3.4a023;4N2J4u4w3}3i4*0L4!3i4$4H4O024R4X1B4$4'4|4;4)4A4^3.4$0H574K3;3?4|4~4#0(522J5g4=0(4V5f5444595b4T405e4.4Q5q1!3A02280b3!0}5p4k1B3)3+535I2~565M4D5J0(3{5H5R5O4U4(444g5k5z2%0(4@5Q4S5S020E4t0~3v0a2f2G5=3c1f3e2i2l2g0p1w5^0w3d0*620O0Q0S02.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 5/5

.128013(lbsSetxph4rdA5-f1uma"ovg,_/3=in k:)y *q2Pc030h0a0b0p0z06080G0L060p08080y0q0b0z0d0q020B03080n0o0o0p0g0F02090r060n0$0r0A030w0,0.0:0=0*0d0203150~180w150*0h0z0s0U0W0Y0!0e0z0t0e061m0e0b0(030P07060a1h0X0Z0q1l1n1p1n0b1v1x1t0b0g160b0e0U0^080d0p0A0!0J0q1z1j0q0l0R0a0A0p0o0a1t1S1U1Z1B1$1x1(1*0(040G0K0g0r0d0r080z0{0A0G0N1Q0g0g0a0L220~1-0A160w1O2f1L1N1M1u0h1/0!1p0A1'1 1t1e1g0V1A2p0z2r0A0r2v1t0d28162d2f2J0+1T232x1!2C0g0/060(0m2c2N0)2M1.2P1B2R2T0(0J2X1U2Z2d2o0q2'0p2U020x2+2e0*2.2$0!2;2?0f2_2-2N2/2 0(0j32192H0~2v2i0h1N2n2}0q0L2D1+163d173b2L0 2Y033k0N2I343i0C0(0N0l320G2!2O1i2%0l0(0a0I0n0p220v1~2A0b0v0s290b0a0n0g392|3I0!0'02053$3y3'2:0(0c0v0i3,2#3.3)0u3E3G350(0F3=3@3H2y0q3`3|3%440A3:0v0n422/463s2,3F482Q3 4c4e3i3)0E0D320B0G4v4j3-490(0p474y1!0r0(0y4C3^4z02404d4h2`4w4x4J4l02074I434E4G4W2/4F020k4o3.4a023;4N2J4u4w3}3i4*0L4!3i4$4H4O024R4X1B4$4'4|4;4)4A4^3.4$0H574K3;3?4|4~4#0(522J5g4=0(4V5f5444595b4T405e4.4Q5q1!3A02280b3!0}5p4k1B3)3+535I2~565M4D5J0(3{5H5R5O4U4(444g5k5z2%0(4@5Q4S5S020E4t0~3v0a2f2G5=3c1f3e2i2l2g0p1w5^0w3d0*620O0Q0S02.
Coordonnées d'un vecteur

Soit \(A\) et \(B\) deux points du plan.

Écrire la fonction vecteur qui prend en paramètres les entiers x_A, y_A, x_B et y_B représentant les coordonnées des points \(A\) et \(B\) et renvoie les coordonnées du vecteur \(\overrightarrow{AB}\).

Exemples
>>> vecteur(2, 3, 1, -2)
(-1, -5)
>>> vecteur(2, 3, 2, -5)
(0, -8)
>>> vecteur(2, 3, 5, 3)
(3, 0)

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 5/5

.128013(lbsSetxph4rdA-f1uma"ovg,_/B3=in k:)y 2Pc030h0a0b0o0z06080G0J060o08080y0p0b0z0d0p020B03080m0n0n0o0g0F02090q060m0!0q0A030v0*0,0.0:0(0d0203130|160v130(0h0z0r0S0U0W0Y0e0z0s0e061k0e0b0%030N07060a1f0V0X0p1j1l1n1l0b1t1v1r0b0g140b0e0S0?080d0o0A0Y0H0p1x1h0p0k0P0a0A0o0n0a1r1Q1S1X1z1!1v1%1(0%040G0I0g0q0d0q080z0_0A0G0L1O0g0g0a0J200|1+0A140v1M2d1J1L1K1s0h1-0Y1n0A1$1}1r1c1e0T1y2n0z2p0A0q2t1r0d26142b2d2H0)1R212v1Y2A0g0-060%0l2a2L0'2K1,2N1z2P2R0%0H2V1S2X2b2m0p2$0o2S020x2)2c0(2,2!0Y2/2;0f2@2d2E0a2d2t2g0h1L2l2{0p0J2B1)1435152F2Y2c30033c0L2G2L2-0C0%0L0k300G3j2-0A0k0%0r270b0a0m0g3l2`1g1z0$02053J3q3a0A0%0c0u0i3Q2Z3L0Y3N0t3w3y3S0%0F3W3Y2M3!0p3$3'3K2w2.3U0u0w3-2-3;0}2W3x3?2O3*3`3|3a3N0E0D300B0G4d413R3/3T023V0i3{3 2*4f3Z3@0q0%0y3=4g3@4i3V4m2H4p3.4r0%0j4v4q434j3,4n2^4e4C3z444l4H4D1Y4s024u4M024P3)023+4A403(3/4W4G4Z4#4h4R4b4O4*3@3s02260b3H0{4.4@1Y3N3P4Z502#3_4S54423M0%3%4 5a2|4R4(2*553#0%0E4b0|3n33173i0v3g2e370|2h5y0o1u5r5u1d2X5u0M0O0Q02.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 5/5

.128013(lbsSetxph4rdA-f1uma"ovg,_/B3=in k:)y 2Pc030h0a0b0o0z06080G0J060o08080y0p0b0z0d0p020B03080m0n0n0o0g0F02090q060m0!0q0A030v0*0,0.0:0(0d0203130|160v130(0h0z0r0S0U0W0Y0e0z0s0e061k0e0b0%030N07060a1f0V0X0p1j1l1n1l0b1t1v1r0b0g140b0e0S0?080d0o0A0Y0H0p1x1h0p0k0P0a0A0o0n0a1r1Q1S1X1z1!1v1%1(0%040G0I0g0q0d0q080z0_0A0G0L1O0g0g0a0J200|1+0A140v1M2d1J1L1K1s0h1-0Y1n0A1$1}1r1c1e0T1y2n0z2p0A0q2t1r0d26142b2d2H0)1R212v1Y2A0g0-060%0l2a2L0'2K1,2N1z2P2R0%0H2V1S2X2b2m0p2$0o2S020x2)2c0(2,2!0Y2/2;0f2@2d2E0a2d2t2g0h1L2l2{0p0J2B1)1435152F2Y2c30033c0L2G2L2-0C0%0L0k300G3j2-0A0k0%0r270b0a0m0g3l2`1g1z0$02053J3q3a0A0%0c0u0i3Q2Z3L0Y3N0t3w3y3S0%0F3W3Y2M3!0p3$3'3K2w2.3U0u0w3-2-3;0}2W3x3?2O3*3`3|3a3N0E0D300B0G4d413R3/3T023V0i3{3 2*4f3Z3@0q0%0y3=4g3@4i3V4m2H4p3.4r0%0j4v4q434j3,4n2^4e4C3z444l4H4D1Y4s024u4M024P3)023+4A403(3/4W4G4Z4#4h4R4b4O4*3@3s02260b3H0{4.4@1Y3N3P4Z502#3_4S54423M0%3%4 5a2|4R4(2*553#0%0E4b0|3n33173i0v3g2e370|2h5y0o1u5r5u1d2X5u0M0O0Q02.
Equation cartésienne à partir de deux points

Soit \(A\) et \(B\) deux points distincts du plan.

Écrire la fonction equation_deux_points qui prend en paramètres les coordonnées x_A, y_A, x_B et y_B représentant les coordonnées des points \(A\) et \(B\) et renvoie le triplet (a, b, c) tel que \(ax+by+c=0\) soit une équation cartésienne de la droite \((AB)\).

Des versions valides des fonctions equation_point_vecteur et vecteur des exercices précédents sont déjà importées dans cet éditeur. Vous pouvez directement les utiliser.

Exemples
>>> equation_deux_points(2, 3, 1, -2)
(-5, 1, 7)
>>> equation_deux_points(2, 3, 2, -2)
(-5, 0, 10)
>>> equation_deux_points(2, 3, 1, 3)
(0, 1, -3)

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 5/5

.128013(lbsSetxphrdAf1uma"ovg,_/B3=in k:)y q2Pc030g0a0b0m0x06080E0I060m08080w0n0b0x0d0n020z03080k0l0l0m0f0D02090o060k0Z0o0y030t0)0+0-0/0'0d0203120{150t120'0g0x0p0R0T0V0X0e0x0q0e061j0e0b0$030M07060a1e0U0W0n1i1k1m1k0b1s1u1q0b0f130b0e0R0=080d0m0y0X0G0n1w1g0n0i0O0a0y0m0l0a1q1P1R1W1y1Z1u1$1'0$040E0H0f0o0d0o080x0^0y0E0K1N0f0f0a0I1 0{1*0y130t1L2c1I1K1J1r0g1,0X1m0y1#1|1q1b1d0S1x2m0x2o0y0o2s1q0d25132a2c2G0(1Q202u1X2z0f0,060$0j292K0%2J1+2M1y2O2Q0$0G2U1R2W2a2l0n2#0m2R020v2(2b162E0{2s2f0g1K2k2Z0X0I2A1(132{142_2I0|2V03320K2F2K2,0A0$0K0i2?020E2X2L1f2!0i0$0a0F0k0m1 0s0K0k0c0s1{2x0b083m3p2,0#02053J2+302-0$3D0h3P3g3R3M0r3m3o3Q3r0X0y0$0D0s3V3a2)3K3Y0$3!3.2b3$3X3'3S023D0u3W2Y3{3Z3#3:3{3)023+3 3@3f412v0n3M0C0B3m0z0E4l3_4d1X3M3O4b454e473U4a2I3%4e434b4n3q4u3*3,4x3b4z4p0$0C444K1y0o0$0w4O3`4F020p260b0a0k0f404E4L3N4'2,4v3,4+3;023?2G4D4,4G3-4y4V4)4=2V4@3R4-4I3/4P0X4B4?4t2N4G532@554f4M4j4m503{3i02250b4$0`4C592!3u3w3y0x0_3E0o3G0s4Y274#4%4s5e4q4/463T4.5H4|1y574 5s3(4_5K4A3=4U4o5t3}4H5W4}5Z4(5#3+0h5c4c5*565g4b0'0t3d0a2c2D5`2`1c2|2f2i2d0m1t5}0t2{5@0K0M0O0802.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 5/5

.128013(lbsSetxphrdAf1uma"ovg,_/B3=in k:)y q2Pc030g0a0b0m0x06080E0I060m08080w0n0b0x0d0n020z03080k0l0l0m0f0D02090o060k0Z0o0y030t0)0+0-0/0'0d0203120{150t120'0g0x0p0R0T0V0X0e0x0q0e061j0e0b0$030M07060a1e0U0W0n1i1k1m1k0b1s1u1q0b0f130b0e0R0=080d0m0y0X0G0n1w1g0n0i0O0a0y0m0l0a1q1P1R1W1y1Z1u1$1'0$040E0H0f0o0d0o080x0^0y0E0K1N0f0f0a0I1 0{1*0y130t1L2c1I1K1J1r0g1,0X1m0y1#1|1q1b1d0S1x2m0x2o0y0o2s1q0d25132a2c2G0(1Q202u1X2z0f0,060$0j292K0%2J1+2M1y2O2Q0$0G2U1R2W2a2l0n2#0m2R020v2(2b162E0{2s2f0g1K2k2Z0X0I2A1(132{142_2I0|2V03320K2F2K2,0A0$0K0i2?020E2X2L1f2!0i0$0a0F0k0m1 0s0K0k0c0s1{2x0b083m3p2,0#02053J2+302-0$3D0h3P3g3R3M0r3m3o3Q3r0X0y0$0D0s3V3a2)3K3Y0$3!3.2b3$3X3'3S023D0u3W2Y3{3Z3#3:3{3)023+3 3@3f412v0n3M0C0B3m0z0E4l3_4d1X3M3O4b454e473U4a2I3%4e434b4n3q4u3*3,4x3b4z4p0$0C444K1y0o0$0w4O3`4F020p260b0a0k0f404E4L3N4'2,4v3,4+3;023?2G4D4,4G3-4y4V4)4=2V4@3R4-4I3/4P0X4B4?4t2N4G532@554f4M4j4m503{3i02250b4$0`4C592!3u3w3y0x0_3E0o3G0s4Y274#4%4s5e4q4/463T4.5H4|1y574 5s3(4_5K4A3=4U4o5t3}4H5W4}5Z4(5#3+0h5c4c5*565g4b0'0t3d0a2c2D5`2`1c2|2f2i2d0m1t5}0t2{5@0K0M0O0802.