Bài 19. Phương trình đường thẳng
Tia laser định hướng thi công nhà chọc trời, đường bay thẳng của máy bay thương mại hay quỹ đạo của một con tàu chở hàng trên đại dương đều được số hóa trên hệ tọa độ thông qua phương trình đường thẳng. Trong chương này, chúng ta chính thức bước vào thế giới của Hình học giải tích Descartes — nơi hình học thuần túy được chuyển hóa thành các phương trình đại số tinh gọn và mạnh mẽ.
1. Sơ đồ tư duy (Mindmap) Phương trình đường thẳng
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 16px; margin: 24px 0;">
<div style="background: #f8fafc; border-left: 4px solid #3b82f6; border-radius: 8px; padding: 16px; box-shadow: 0 2px 4px rgba(0,0,0,0.05);">
<h4 style="margin: 0 0 8px 0; color: #1e40af;">1. Vectơ chỉ phương & Pháp tuyến</h4>
<p style="margin: 0; font-size: 0.9em; color: #475569;">
• <strong>VTCP $\vec{u} \ne \vec{0}$:</strong> có giá song song hoặc trùng $\Delta$.<br>
• <strong>VTPT $\vec{n} \ne \vec{0}$:</strong> có giá vuông góc với $\Delta$.<br>
• Mối liên hệ: $\vec{u} \cdot \vec{n} = 0$. Nếu $\vec{u} = (a; b) \implies \vec{n} = (-b; a)$ hoặc $(b; -a)$.
</p>
</div>
<div style="background: #f0fdf4; border-left: 4px solid #16a34a; border-radius: 8px; padding: 16px; box-shadow: 0 2px 4px rgba(0,0,0,0.05);">
<h4 style="margin: 0 0 8px 0; color: #166534;">2. Phương trình tham số</h4>
<p style="margin: 0; font-size: 0.9em; color: #475569;">
• Đi qua $M_0(x_0; y_0)$ và có VTCP $\vec{u} = (u_1; u_2)$:<br>
$$\begin{cases} x = x_0 + u_1 t \\ y = y_0 + u_2 t \end{cases} \quad (t \in \mathbb{R})$$
• Tham số $t$ đóng vai trò như thời gian trong chuyển động thẳng đều.
</p>
</div>
<div style="background: #fffbeb; border-left: 4px solid #f59e0b; border-radius: 8px; padding: 16px; box-shadow: 0 2px 4px rgba(0,0,0,0.05);">
<h4 style="margin: 0 0 8px 0; color: #92400e;">3. Phương trình tổng quát</h4>
<p style="margin: 0; font-size: 0.9em; color: #475569;">
• Đi qua $M_0(x_0; y_0)$ và có VTPT $\vec{n} = (a; b)$:<br>
$$a(x - x_0) + b(y - y_0) = 0 \iff ax + by + c = 0$$
• Hệ số $a, b$ không đồng thời bằng 0 ($a^2 + b^2 > 0$).
</p>
</div>
<div style="background: #fdf2f8; border-left: 4px solid #ec4899; border-radius: 8px; padding: 16px; box-shadow: 0 2px 4px rgba(0,0,0,0.05);">
<h4 style="margin: 0 0 8px 0; color: #9d174d;">4. Các dạng đặc biệt</h4>
<p style="margin: 0; font-size: 0.9em; color: #475569;">
• <strong>Đoạn chắn:</strong> $\frac{x}{a} + \frac{y}{b} = 1$ (cắt trục tại $(a; 0)$ và $(0; b)$).<br>
• <strong>Hệ số góc:</strong> $y = kx + m$ với $k = \frac{u_2}{u_1} = -\frac{a}{b} = \tan\alpha$.
</p>
</div>
</div>
2. Khởi động: 5 câu hỏi nhanh & Mẹo chuyển đổi siêu tốc
- Đường thẳng có VTPT thì một VTCP của nó là bao nhiêu?
Mẹo: Đảo vị trí và đổi dấu một tọa độ . - Đường thẳng có một VTPT và một VTCP lần lượt là:
Đáp án: VTPT và VTCP . - Đường thẳng đi qua và có phương trình đoạn chắn là:
Đáp án: . - Một đường thẳng có bao nhiêu vectơ chỉ phương và vectơ pháp tuyến?
Đáp án: Vô số. Mọi vectơ () đều là VTCP và () đều là VTPT. - Điểm có thuộc đường thẳng không?
Đáp án: Thay tọa độ: thuộc .
3. Lý thuyết trọng tâm
3.1. Vectơ chỉ phương và Vectơ pháp tuyến
Ghi nhớCho đường thẳng trong mặt phẳng tọa độ :
- Vectơ được gọi là vectơ chỉ phương (VTCP) của nếu giá của song song hoặc trùng với .
- Vectơ được gọi là vectơ pháp tuyến (VTPT) của nếu giá của vuông góc với .
Mẹo hayQuy tắc chuyển đổi qua lại giữa VTCP và VTPT: Vì :
3.2. Phương trình tham số của đường thẳng
Ghi nhớĐường thẳng đi qua điểm và nhận () làm VTCP có phương trình tham số:
- Mỗi giá trị cụ thể của tham số cho ta tọa độ của một điểm nằm trên .
- Ngược lại, mỗi điểm tương ứng với duy nhất một giá trị tham số .
3.3. Phương trình tổng quát của đường thẳng
Ghi nhớĐường thẳng đi qua điểm và nhận () làm VTPT có phương trình:
Khai triển và đặt , ta được phương trình tổng quát:
3.4. Các dạng phương trình đường thẳng đặc biệt
Ghi nhớ
- Phương trình theo hệ số góc: Nếu , phương trình tổng quát có thể viết thành với ( là góc tạo bởi tia Ox và đường thẳng).
- Phương trình đoạn chắn: Nếu đường thẳng cắt trục tại và cắt tại ():
- Các đường thẳng song song trục tọa độ:
- Song song hoặc trùng với : (VTPT ).
- Song song hoặc trùng với : (VTPT ).
4. Widget tương tác: Phòng Thí Nghiệm Phương Trình Đường Thẳng
Di chuyển điểm đi qua và vectơ pháp tuyến để quan sát đường thẳng xoay chuyển động, tự động cập nhật cả hai dạng phương trình tham số và tổng quát:
<div style="background: #f8fafc; border: 1px solid #cbd5e1; border-radius: 12px; padding: 20px; margin: 24px 0; font-family: system-ui, sans-serif;">
<div style="display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 10px; margin-bottom: 16px;">
<h3 style="margin: 0; font-size: 1.15rem; color: #1e293b;">📐 Studio Hình Học Giải Tích: Đường Thẳng Trong Oxy</h3>
<span style="font-size: 0.85rem; background: #e0f2fe; color: #0369a1; padding: 4px 10px; border-radius: 999px; font-weight: 500;">Tự động đồng bộ</span>
</div>
<div style="display: grid; grid-template-columns: 1fr 240px; gap: 16px;">
<div style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; padding: 8px; text-align: center;">
<svg data-interactive-done="true" id="lineSvg" viewBox="0 0 360 280" style="width: 100%; max-width: 400px; height: auto;">
<!-- Grid -->
<g stroke="#f1f5f9" stroke-width="1">
<line x1="20" y1="40" x2="340" y2="40" /><line x1="20" y1="90" x2="340" y2="90" />
<line x1="20" y1="140" x2="340" y2="140" /><line x1="20" y1="190" x2="340" y2="190" />
<line x1="20" y1="240" x2="340" y2="240" />
<line x1="60" y1="20" x2="60" y2="260" /><line x1="120" y1="20" x2="120" y2="260" />
<line x1="180" y1="20" x2="180" y2="260" /><line x1="240" y1="20" x2="240" y2="260" />
<line x1="300" y1="20" x2="300" y2="260" />
</g>
<!-- Axes -->
<line x1="10" y1="140" x2="350" y2="140" stroke="#94a3b8" stroke-width="1.8" />
<line x1="180" y1="270" x2="180" y2="10" stroke="#94a3b8" stroke-width="1.8" />
<text x="345" y="135" font-size="12" fill="#64748b" font-weight="bold">x</text>
<text x="185" y="18" font-size="12" fill="#64748b" font-weight="bold">y</text>
<text x="168" y="155" font-size="11" fill="#94a3b8">O</text>
<!-- The line -->
<line id="dynLine" x1="0" y1="0" x2="360" y2="280" stroke="#2563eb" stroke-width="2.5" />
<!-- Normal vector -->
<line id="nVec" x1="180" y1="140" x2="180" y2="80" stroke="#dc2626" stroke-width="2" marker-end="url(#arrR)" />
<!-- Point M0 -->
<circle id="ptM0" cx="180" cy="140" r="5" fill="#16a34a" />
<text id="lblM0" x="188" y="135" font-size="11" fill="#16a34a" font-weight="bold">M₀</text>
<defs>
<marker id="arrR" viewBox="0 0 10 10" refX="6" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse">
<path d="M 0 1 L 8 5 L 0 9 z" fill="#dc2626" />
</marker>
</defs>
</svg>
</div>
<div style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; padding: 14px; font-size: 0.88rem;">
<div style="margin-bottom: 10px;">
<label style="display: block; font-weight: 600; color: #475569; margin-bottom: 4px;">Điểm $M_0(x_0; y_0)$:</label>
<div style="display: flex; gap: 8px;">
<input type="number" id="inX0" value="1" step="1" style="width: 50%; padding: 4px; border: 1px solid #cbd5e1; border-radius: 4px;" />
<input type="number" id="inY0" value="2" step="1" style="width: 50%; padding: 4px; border: 1px solid #cbd5e1; border-radius: 4px;" />
</div>
</div>
<div style="margin-bottom: 14px;">
<label style="display: block; font-weight: 600; color: #475569; margin-bottom: 4px;">VTPT $\vec{n} = (a; b)$:</label>
<div style="display: flex; gap: 8px;">
<input type="number" id="inA" value="2" step="1" style="width: 50%; padding: 4px; border: 1px solid #cbd5e1; border-radius: 4px;" />
<input type="number" id="inB" value="-3" step="1" style="width: 50%; padding: 4px; border: 1px solid #cbd5e1; border-radius: 4px;" />
</div>
</div>
<div style="background: #f8fafc; border-radius: 6px; padding: 10px; border: 1px solid #e2e8f0; font-size: 0.85rem;">
<div style="font-weight: 700; color: #1e293b; margin-bottom: 4px;">Phương trình tổng quát:</div>
<div id="statGeneral" style="color: #2563eb; font-family: monospace; font-weight: bold; margin-bottom: 8px;">2x - 3y + 4 = 0</div>
<div style="font-weight: 700; color: #1e293b; margin-bottom: 4px;">VTCP tương ứng:</div>
<div id="statVtcp" style="color: #16a34a; font-family: monospace; font-weight: bold;">u = (3; 2)</div>
</div>
</div>
</div>
</div>
<script>
(() => {
const inX0 = document.getElementById('inX0');
const inY0 = document.getElementById('inY0');
const inA = document.getElementById('inA');
const inB = document.getElementById('inB');
const dynLine = document.getElementById('dynLine');
const nVec = document.getElementById('nVec');
const ptM0 = document.getElementById('ptM0');
const lblM0 = document.getElementById('lblM0');
const statGeneral = document.getElementById('statGeneral');
const statVtcp = document.getElementById('statVtcp');
const ox = 180, oy = 140, scale = 25;
function toScreen(x, y) {
return [ox + x * scale, oy - y * scale];
}
function update() {
const x0 = parseFloat(inX0.value) || 0;
const y0 = parseFloat(inY0.value) || 0;
let a = parseFloat(inA.value);
let b = parseFloat(inB.value);
if (isNaN(a)) a = 1;
if (isNaN(b)) b = 0;
if (a === 0 && b === 0) { a = 1; inA.value = 1; }
const c = -(a * x0 + b * y0);
const [smx, smy] = toScreen(x0, y0);
ptM0.setAttribute('cx', smx);
ptM0.setAttribute('cy', smy);
lblM0.setAttribute('x', smx + 8);
lblM0.setAttribute('y', smy - 6);
lblM0.textContent = 'M₀(' + x0 + ';' + y0 + ')';
// Normal vector from M0
const [snx, sny] = toScreen(x0 + a, y0 + b);
nVec.setAttribute('x1', smx);
nVec.setAttribute('y1', smy);
nVec.setAttribute('x2', snx);
nVec.setAttribute('y2', sny);
// VTCP = (-b, a)
const ux = -b, uy = a;
const [sx1, sy1] = toScreen(x0 - 15 * ux, y0 - 15 * uy);
const [sx2, sy2] = toScreen(x0 + 15 * ux, y0 + 15 * uy);
dynLine.setAttribute('x1', sx1);
dynLine.setAttribute('y1', sy1);
dynLine.setAttribute('x2', sx2);
dynLine.setAttribute('y2', sy2);
// Equations
const aStr = a === 1 ? 'x' : (a === -1 ? '-x' : a + 'x');
const bStr = b >= 0 ? '+ ' + (b === 1 ? 'y' : b + 'y') : '- ' + (b === -1 ? 'y' : Math.abs(b) + 'y');
const cStr = c >= 0 ? '+ ' + c : '- ' + Math.abs(c);
statGeneral.textContent = aStr + ' ' + bStr + ' ' + cStr + ' = 0';
statVtcp.textContent = 'u = (' + ux + '; ' + uy + ')';
}
[inX0, inY0, inA, inB].forEach(inp => inp.addEventListener('input', update));
update();
})();
</script>
5. Bốn dạng toán điển hình kèm lời giải chi tiết
Dạng 1: Lập phương trình tham số và tổng quát khi biết 1 điểm và VTCP / VTPT
Phương pháp giải:
- Biết và VTCP :
- Biết và VTPT :
Bài toán 1
Viết phương trình tham số và phương trình tổng quát của đường thẳng trong các trường hợp sau:
- đi qua điểm và có VTCP .
- đi qua điểm và có VTPT .
Lời giải:
Trường hợp 1: Đi qua và có VTCP :
- Phương trình tham số của :
- Từ VTCP , ta chọn VTPT là .
- Phương trình tổng quát:
Trường hợp 2: Đi qua và có VTPT :
- Phương trình tổng quát của :
- Từ VTPT , ta chọn VTCP là .
- Phương trình tham số:
Dạng 2: Lập phương trình đường thẳng đi qua hai điểm và các đường đặc biệt trong tam giác
Phương pháp giải:
- Đường thẳng đi qua hai điểm có một VTCP là .
- Đường trung trực của đoạn thẳng : Đi qua trung điểm của và nhận làm VTPT.
- Đường cao của tam giác : Đi qua đỉnh và nhận làm VTPT.
- Đường trung tuyến : Đi qua đỉnh và trung điểm của cạnh đối diện .
Bài toán 2
Trong mặt phẳng , cho tam giác có .
- Viết phương trình tổng quát của đường thẳng chứa cạnh .
- Viết phương trình tổng quát của đường cao kẻ từ đỉnh .
- Viết phương trình đường trung trực của đoạn thẳng .
Lời giải:
Phương trình cạnh :
- Vectơ .
- Chọn VTCP VTPT .
- Đường thẳng đi qua và có VTPT :
Phương trình đường cao :
- Vì nên đường cao nhận , hay vectơ cùng phương làm VTPT.
- đi qua đỉnh :
Phương trình đường trung trực của đoạn :
- Gọi là trung điểm của :
- Đường trung trực đi qua và vuông góc với , nên nhận làm VTPT:
Dạng 3: Chuyển đổi qua lại giữa các dạng phương trình đường thẳng
Phương pháp giải:
- Từ tham số sang tổng quát: Khử tham số từ hệ hai phương trình, hoặc lấy VTCP VTPT .
- Từ tổng quát sang tham số: Tìm 1 điểm thuộc đường thẳng (cho tìm ) và lấy VTCP từ VTPT.
Bài toán 3
- Cho đường thẳng có phương trình tham số:Hãy viết phương trình tổng quát của .
- Cho đường thẳng . Hãy viết phương trình tham số và phương trình đoạn chắn của .
Lời giải:
Chuyển tham số sang tổng quát:
- đi qua và có VTCP .
- Suy ra VTPT .
- Phương trình tổng quát:(Cách khác: Từ . Thay vào ).
Chuyển tổng quát sang tham số và đoạn chắn:
- có VTPT VTCP .
- Chọn điểm : Cho .
- Phương trình tham số:
- Phương trình đoạn chắn:
Dạng 4: Ứng dụng chuyển động thẳng đều trong thực tế
Phương pháp giải:
Vật chuyển động thẳng đều xuất phát từ điểm với vận tốc vectơ có phương trình chuyển động chính là phương trình tham số của đường thẳng:
với là thời gian chuyển động.
Bài toán 4
Trên màn hình radar kiểm soát không lưu, một chiếc máy bay dân dụng bay thẳng đều từ vị trí theo hướng vectơ vận tốc (đơn vị tọa độ tính bằng kilômét, thời gian tính bằng giờ).
- Viết phương trình quỹ đạo chuyển động của máy bay dưới dạng tham số.
- Xác định vị trí của máy bay sau khi bay được 30 phút ().
- Một trạm phát sóng định vị đặt tại . Hỏi máy bay có bay qua trạm phát sóng hay không?
Lời giải:
- Phương trình quỹ đạo chuyển động tham số:
- Sau thời gian :Vậy sau 30 phút, máy bay ở vị trí có tọa độ .
- Để kiểm tra máy bay có bay qua trạm không, ta giải hệ:Cả hai phương trình đều cho cùng một giá trị .
Kết luận: Máy bay có bay qua trạm phát sóng , đúng sau kể từ khi bắt đầu quan sát.
6. Năm ứng dụng thực tế khoa học & công nghệ
- Kiểm soát không lưu hàng không (ATC): Radar giám sát đường bay dân dụng mô hình hóa đường bay bằng phương trình tham số theo thời gian . Thuật toán máy tính tự động so sánh các phương trình tham số để cảnh báo nguy cơ va chạm trước hàng chục phút.
- Kỹ thuật trắc địa & Laser định vị công trình: Máy đo toàn đạc điện tử phát chùm tia laser song song mặt phẳng thiết kế. Phương trình tổng quát đảm bảo các dầm sàn của tòa tháp cao hàng trăm mét không bị lệch tâm quá .
- Đồ họa máy tính & Thuật toán Dò tia (Ray Tracing): Trong lập trình game 3D, mắt người quan sát phóng các tia nhìn (Rays) là các đường thẳng tham số . Giao điểm của tia với các vật thể xác định điểm ảnh màu sắc và hiệu ứng ánh sáng chân thực.
- Quy hoạch mạng lưới cấp thoát nước ngầm: Kỹ sư đô thị biểu diễn tuyến ống nước chính bằng phương trình đường thẳng để tính toán điểm đấu nối tối ưu đến các khu dân cư với chi phí đào đường thấp nhất.
- Hệ thống dẫn đường tự hành cho Robot kho hàng (AGV): Xe tự hành trong kho Amazon di chuyển dọc theo các đường ray từ tính được lập trình bằng phương trình đường thẳng, giúp robot vận chuyển hàng nghìn kiện hàng mỗi giờ mà không bao giờ va chạm nhau.
7. Trắc nghiệm kiểm tra hiểu bài (10 câu có chấm điểm & giải thích chi tiết)
8. Thử thách thực tế: Dự án Thiết kế Tuyến Cáp Treo Ngắm Cảnh
Ban quản lý khu du lịch muốn xây dựng tuyến cáp treo nối từ chân đồi lên đỉnh núi (đơn vị: trăm mét).
- Lập phương trình tham số và phương trình tổng quát của tuyến cáp treo .
- Để đảm bảo an toàn, cần đặt một cột trụ trung gian tại điểm chia đoạn theo tỉ lệ . Tìm tọa độ của trụ cáp .
- Một flycam bay tuần tra bay dọc theo đường thẳng . Hỏi đường bay của flycam có cắt ngang đường cáp treo hay không?
Khám phá hàm số bậc nhất y = ax + b
Kéo thanh trượt hệ số góc a và tung độ gốc b để quan sát độ dốc, góc tạo với tia Ox và tính đồng biến, nghịch biến.
Tự kiểm tra kiến thức
Các thẻ lấy từ nội dung bài học. Với câu điền khuyết, bấm vào dấu “…” để chọn cụm từ phù hợp; với thẻ nhớ lại, em tự đối chiếu và đánh giá.