É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'instruction 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)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
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 : 10/10

.128013beqn,4vi3mo5_txPhklpwf(: cga=ryS*-u/2)As1d050Q0c0o0C0i0t0O0z0A0t0C0O0O0D010o0i0u010406050O0J0k0k0C0E0F040G0l0t0J0+0l0e050K0=0@0_0{0:0u04051b141e0K1b0:0Q0i0h0Z0#0%0)0r0i0B0r0t1s0r0o0.050U0b0t0c1n0$0(011r1t1v1t0o1B1D1z0o0E1c0o0r0Z0~0O0u0C0e0)0L011F1p010w0W0c0e0C0k0c1z1Y1!1)1H1,1D1/1;0.0a0z0q0E0l0u0l0O0i110e0z0S1W0E0E0c0A29141@0e1c0K1U2m1R1T1S1A0Q1_0)1v0e1.261z1k1m0!1G2w0i2y0e0l2C1z0u2f1c2k2m2Q0;1Z2a2E1*2J0E0^0t0.0P2j2U0/2T1^2W1H2Y2!0.0L2(1!2*2k2v012/0C2#040j2?2l0:2_2-0)2|2~0g312^2U2`370.0m3a1f2O142C2p0Q1T2u35010A2K1=1c3l1d3j2S152)053s0S2P3c3q0s0.0S0w3h341o1H0v0.0z3M3G3O360w0.0c0d0J0C290n252H0o0n0h2g0o0c0J0E3T2,3V010-040x3?2V3^0e0.0p0n0N3}2`3`0f3a3S3N2F2{0.0F43453q47492+3~4c4004420J4h3^4j3A2@4a3U4n4e0n4r4v2l4l460.0M0y3a060z4M4x3@4z040C4k4b1*0l0.0D4T4y2X4A4C2Q4L4N4F3q4o0b4Z4P4V4X4/4m4;040I4s4Q4q4K4N4O4@2.0.0A4?2`4W044Y4D0450560.4`5a4+3 0.4S5a5c3q570H554,414g5l5h4c575f2Q5m5i044.5u4U1H5o5q5B4f445a4)4M5v1*3I042f0o3;135E4!1H3`3|5g5F365j4{1*4u5z5P525C5*5Z0.485X4:5/545$5Y0)3`0M4K143D0c2m2N643k1l3m2p2s2n0C1C670K3l0:6h0T0V0X04.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
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 : 10/10

.128013beqn,4vi3mo5_txPhklpwf(: cga=ryS*-u/2)As1d050Q0c0o0C0i0t0O0z0A0t0C0O0O0D010o0i0u010406050O0J0k0k0C0E0F040G0l0t0J0+0l0e050K0=0@0_0{0:0u04051b141e0K1b0:0Q0i0h0Z0#0%0)0r0i0B0r0t1s0r0o0.050U0b0t0c1n0$0(011r1t1v1t0o1B1D1z0o0E1c0o0r0Z0~0O0u0C0e0)0L011F1p010w0W0c0e0C0k0c1z1Y1!1)1H1,1D1/1;0.0a0z0q0E0l0u0l0O0i110e0z0S1W0E0E0c0A29141@0e1c0K1U2m1R1T1S1A0Q1_0)1v0e1.261z1k1m0!1G2w0i2y0e0l2C1z0u2f1c2k2m2Q0;1Z2a2E1*2J0E0^0t0.0P2j2U0/2T1^2W1H2Y2!0.0L2(1!2*2k2v012/0C2#040j2?2l0:2_2-0)2|2~0g312^2U2`370.0m3a1f2O142C2p0Q1T2u35010A2K1=1c3l1d3j2S152)053s0S2P3c3q0s0.0S0w3h341o1H0v0.0z3M3G3O360w0.0c0d0J0C290n252H0o0n0h2g0o0c0J0E3T2,3V010-040x3?2V3^0e0.0p0n0N3}2`3`0f3a3S3N2F2{0.0F43453q47492+3~4c4004420J4h3^4j3A2@4a3U4n4e0n4r4v2l4l460.0M0y3a060z4M4x3@4z040C4k4b1*0l0.0D4T4y2X4A4C2Q4L4N4F3q4o0b4Z4P4V4X4/4m4;040I4s4Q4q4K4N4O4@2.0.0A4?2`4W044Y4D0450560.4`5a4+3 0.4S5a5c3q570H554,414g5l5h4c575f2Q5m5i044.5u4U1H5o5q5B4f445a4)4M5v1*3I042f0o3;135E4!1H3`3|5g5F365j4{1*4u5z5P525C5*5Z0.485X4:5/545$5Y0)3`0M4K143D0c2m2N643k1l3m2p2s2n0C1C670K3l0:6h0T0V0X04.
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)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
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 : 10/10

.128013ben,4vi3mo_txPhklpwf(: cga=ryS-u/2)AsB1d050O0c0m0A0h0r0L0x0y0r0A0L0L0B010m0h0s010406050L0G0j0j0A0C0D040E0k0r0G0)0k0d050H0:0=0@0_0.0s040519121c0H190.0O0h0g0X0Z0#0%0p0h0z0p0r1q0p0m0,050S0b0r0c1l0!0$011p1r1t1r0m1z1B1x0m0C1a0m0p0X0|0L0s0A0d0%0I011D1n010u0U0c0d0A0j0c1x1W1Y1%1F1*1B1-1/0,0a0x0o0C0k0s0k0L0h0 0d0x0Q1U0C0C0c0y27121=0d1a0H1S2k1P1R1Q1y0O1@0%1t0d1,241x1i1k0Y1E2u0h2w0d0k2A1x0s2d1a2i2k2O0/1X282C1(2H0C0?0r0,0N2h2S0-2R1?2U1F2W2Y0,0I2$1Y2(2i2t012-0A2Z040i2;2j0.2@2+0%2`2|0f2 2k2L0c2k2A2n0O1R2s33010y2I1:1a3d1b2M2)2j38053k0Q2N2S2^0q0,0Q0u3t321m1F0t0,0x3E3y3i0d0u0,0g2e0m0c0G0C3L2*3G0%0+040v3X2T3Z2_0,0n0l0K3(2^3#0e383K3F2D3+040D3.3:3i3=3@3r2^0d3,0l0M3 3*41132%3^3M3*453|47493`3#0J0w38060x4r4e3Y3`4h3-0K484c2=4t3)3`0k0,0B423_2V464z2O4C2^4F040F4I4f4v463/4A304s4O3N0,3}4y4T4u1(4Q4H4Y044#4g4%4j4/4;4E0,4S4^434$4i4X2O4q4s4~3*3A042d0m3V114}4J1F3#3%4/554V044x4M2%5j1(4b4N5p2,4?4)5i5e3!0,0J4p123v3b1d3q0H3o2l3f122o5M0A1A5F5I1j2(5I0R0T0V04.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
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 : 10/10

.128013ben,4vi3mo_txPhklpwf(: cga=ryS-u/2)AsB1d050O0c0m0A0h0r0L0x0y0r0A0L0L0B010m0h0s010406050L0G0j0j0A0C0D040E0k0r0G0)0k0d050H0:0=0@0_0.0s040519121c0H190.0O0h0g0X0Z0#0%0p0h0z0p0r1q0p0m0,050S0b0r0c1l0!0$011p1r1t1r0m1z1B1x0m0C1a0m0p0X0|0L0s0A0d0%0I011D1n010u0U0c0d0A0j0c1x1W1Y1%1F1*1B1-1/0,0a0x0o0C0k0s0k0L0h0 0d0x0Q1U0C0C0c0y27121=0d1a0H1S2k1P1R1Q1y0O1@0%1t0d1,241x1i1k0Y1E2u0h2w0d0k2A1x0s2d1a2i2k2O0/1X282C1(2H0C0?0r0,0N2h2S0-2R1?2U1F2W2Y0,0I2$1Y2(2i2t012-0A2Z040i2;2j0.2@2+0%2`2|0f2 2k2L0c2k2A2n0O1R2s33010y2I1:1a3d1b2M2)2j38053k0Q2N2S2^0q0,0Q0u3t321m1F0t0,0x3E3y3i0d0u0,0g2e0m0c0G0C3L2*3G0%0+040v3X2T3Z2_0,0n0l0K3(2^3#0e383K3F2D3+040D3.3:3i3=3@3r2^0d3,0l0M3 3*41132%3^3M3*453|47493`3#0J0w38060x4r4e3Y3`4h3-0K484c2=4t3)3`0k0,0B423_2V464z2O4C2^4F040F4I4f4v463/4A304s4O3N0,3}4y4T4u1(4Q4H4Y044#4g4%4j4/4;4E0,4S4^434$4i4X2O4q4s4~3*3A042d0m3V114}4J1F3#3%4/554V044x4M2%5j1(4b4N5p2,4?4)5i5e3!0,0J4p123v3b1d3q0H3o2l3f122o5M0A1A5F5I1j2(5I0R0T0V04.
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)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
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 : 10/10

.128013beqn,vi3mo_txPhklpwf(: cga=rySu/2)AsB1d050N0c0m0A0h0r0K0x0y0r0A0K0K0B010m0h0s010406050K0F0j0j0A0C0D040E0k0r0F0(0k0e050G0/0;0?0^0-0s040518111b0G180-0N0h0g0W0Y0!0$0p0h0z0p0r1p0p0m0+050R0b0r0c1k0Z0#011o1q1s1q0m1y1A1w0m0C190m0p0W0{0K0s0A0e0$0H011C1m010u0T0c0e0A0j0c1w1V1X1$1E1)1A1,1.0+0a0x0o0C0k0s0k0K0h0~0e0x0P1T0C0C0c0y26111;0e190G1R2j1O1Q1P1x0N1?0$1s0e1+231w1h1j0X1D2t0h2v0e0k2z1w0s2c192h2j2N0.1W272B1%2G0C0=0r0+0M2g2R0,2Q1=2T1E2V2X0+0H2#1X2%2h2s012,0A2Y040i2:2i1c2L112z2m0N1Q2r2*0$0y2H1/19331a312P122$053a0P2M2R2@0q0+0P0u2~3n2)1l1E0t0+0x3u2(2S3x0$0e0u0+0c0d0F0A260l0P0F0n0l222E0m0K3C2?38010*040v3Y3o3!0e0+3S0J3)3w2C3#0+0f3u3B3Z3F2^0+0D0l3/3i2;3D2@3$3^422i3`3*3|3,043S0L3:3E3=463_443+3~0l4g483v4i1%3$0I0w3u060x4A4a3;4u0+3(4r4m4c3-404q2P3{4j3@4l4O2U4o0J4M3j4S1E4v4R4b3=0k0+0B4#4D2+0+0g2d0m0c0F0C4h454F4^4n4e404{3|4k4r4C4t4-043 414N4$4E04472N532@4d4f4 4P5c4+543G4o4W434Y0$4!4r4z4B4I3=3q042c0m4?10525y4T043K3M3O3U0e0m0l4/2e4=4@4H5s3?3%5j5I3.5Z4Z4Q5G5W4d575$5t5(5e5H553.5q2 5W515:5*4U5@4s4_040I4y113l0c2j2K66321i342m2p2k0A1z690G330-6j0Q0S0U04.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
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 : 10/10

.128013beqn,vi3mo_txPhklpwf(: cga=rySu/2)AsB1d050N0c0m0A0h0r0K0x0y0r0A0K0K0B010m0h0s010406050K0F0j0j0A0C0D040E0k0r0F0(0k0e050G0/0;0?0^0-0s040518111b0G180-0N0h0g0W0Y0!0$0p0h0z0p0r1p0p0m0+050R0b0r0c1k0Z0#011o1q1s1q0m1y1A1w0m0C190m0p0W0{0K0s0A0e0$0H011C1m010u0T0c0e0A0j0c1w1V1X1$1E1)1A1,1.0+0a0x0o0C0k0s0k0K0h0~0e0x0P1T0C0C0c0y26111;0e190G1R2j1O1Q1P1x0N1?0$1s0e1+231w1h1j0X1D2t0h2v0e0k2z1w0s2c192h2j2N0.1W272B1%2G0C0=0r0+0M2g2R0,2Q1=2T1E2V2X0+0H2#1X2%2h2s012,0A2Y040i2:2i1c2L112z2m0N1Q2r2*0$0y2H1/19331a312P122$053a0P2M2R2@0q0+0P0u2~3n2)1l1E0t0+0x3u2(2S3x0$0e0u0+0c0d0F0A260l0P0F0n0l222E0m0K3C2?38010*040v3Y3o3!0e0+3S0J3)3w2C3#0+0f3u3B3Z3F2^0+0D0l3/3i2;3D2@3$3^422i3`3*3|3,043S0L3:3E3=463_443+3~0l4g483v4i1%3$0I0w3u060x4A4a3;4u0+3(4r4m4c3-404q2P3{4j3@4l4O2U4o0J4M3j4S1E4v4R4b3=0k0+0B4#4D2+0+0g2d0m0c0F0C4h454F4^4n4e404{3|4k4r4C4t4-043 414N4$4E04472N532@4d4f4 4P5c4+543G4o4W434Y0$4!4r4z4B4I3=3q042c0m4?10525y4T043K3M3O3U0e0m0l4/2e4=4@4H5s3?3%5j5I3.5Z4Z4Q5G5W4d575$5t5(5e5H553.5q2 5W515:5*4U5@4s4_040I4y113l0c2j2K66321i342m2p2k0A1z690G330-6j0Q0S0U04.