Bài 20. Vị trí tương đối giữa hai đường thẳng. Góc và khoảng cách
Khi hai con tàu di chuyển trên biển hay hai tuyến đường sắt giao nhau trên đất liền, các kỹ sư cần xác định chính xác: Hai quỹ đạo có cắt nhau hay không? Nếu cắt thì giao điểm ở đâu và tạo với nhau một góc bao nhiêu độ? Nếu song song thì khoảng cách an toàn là bao nhiêu? Toàn bộ các câu hỏi thực tiễn đó được giải quyết triệt để thông qua các công thức về vị trí tương đối, góc và khoảng cách trong mặt phẳng tọa độ .
1. Sơ đồ tư duy (Mindmap) Vị trí tương đối, Góc & Khoảng cách
<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. Vị trí tương đối</h4>
<p style="margin: 0; font-size: 0.9em; color: #475569;">
Xét hệ phương trình giao điểm của $\Delta_1$ và $\Delta_2$:<br>
• <strong>Cắt nhau:</strong> Hệ có 1 nghiệm duy nhất.<br>
• <strong>Song song:</strong> Hệ vô nghiệm.<br>
• <strong>Trùng nhau:</strong> Hệ có vô số nghiệm.
</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. Điều kiện vuông góc</h4>
<p style="margin: 0; font-size: 0.9em; color: #475569;">
• $\Delta_1 \perp \Delta_2 \iff \vec{n}_1 \cdot \vec{n}_2 = 0 \iff a_1 a_2 + b_1 b_2 = 0$.<br>
• Nếu dùng hệ số góc: $k_1 \cdot k_2 = -1$.
</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. Góc giữa hai đường thẳng</h4>
<p style="margin: 0; font-size: 0.9em; color: #475569;">
• Luôn là góc nhọn hoặc góc vuông ($0^\circ \le \varphi \le 90^\circ$):<br>
$$\cos\varphi = \frac{|\vec{n}_1 \cdot \vec{n}_2|}{|\vec{n}_1| \cdot |\vec{n}_2|} = \frac{|a_1 a_2 + b_1 b_2|}{\sqrt{a_1^2 + b_1^2}\sqrt{a_2^2 + b_2^2}}$$
</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. Khoảng cách</h4>
<p style="margin: 0; font-size: 0.9em; color: #475569;">
• Từ $M_0(x_0; y_0)$ đến $\Delta: ax + by + c = 0$:<br>
$$d(M_0, \Delta) = \frac{|ax_0 + by_0 + c|}{\sqrt{a^2 + b^2}}$$
• Giữa 2 đường thẳng song song: Lấy 1 điểm thuộc đường này rồi tính khoảng cách đến đường kia.
</p>
</div>
</div>
2. Khởi động: 5 câu hỏi nhanh & Mẹo tính nhẩm
- Hai đường thẳng và có vuông góc với nhau không?
Mẹo: Tính tích vô hướng hai VTPT: . - Khoảng cách từ gốc tọa độ đến đường thẳng bằng bao nhiêu?
Mẹo: . - Góc giữa hai đường thẳng song song hoặc trùng nhau bằng bao nhiêu độ?
Đáp án: Bằng . - Góc giữa hai đường thẳng có thể là góc tù () không?
Đáp án: Không bao giờ. Theo quy ước toán học, góc giữa hai đường thẳng luôn nằm trong đoạn (vì luôn lấy góc không tù). - Đường thẳng và có vị trí tương đối thế nào?
Đáp án: Trùng nhau (vì ).
3. Lý thuyết trọng tâm
3.1. Vị trí tương đối giữa hai đường thẳng
Trong mặt phẳng tọa độ , cho hai đường thẳng:
Ghi nhớTọa độ giao điểm của và là nghiệm của hệ phương trình:
- Hệ có nghiệm duy nhất cắt tại điểm .
- Hệ vô nghiệm song song với ().
- Hệ có vô số nghiệm trùng với ().
Mẹo hayXét tỉ số (khi các hệ số ):
- cắt .
3.2. Góc giữa hai đường thẳng
Ghi nhớGọi là góc giữa hai đường thẳng và (). Khi đó bằng giá trị tuyệt đối của côsin góc giữa hai VTPT và (hoặc hai VTCP ):
Quan trọngĐiều kiện vuông góc:
3.3. Khoảng cách từ một điểm đến một đường thẳng
Ghi nhớTrong mặt phẳng , khoảng cách từ điểm đến đường thẳng được tính bằng công thức:
3.4. Khoảng cách giữa hai đường thẳng song song
Mẹo hayCho hai đường thẳng song song và ():
Hoặc lấy một điểm bất kì rồi tính .
4. Widget tương tác: Máy Tính Góc & Khoảng Cách Động
Di chuyển điểm và xoay đường thẳng để quan sát hình chiếu vuông góc , độ dài khoảng cách và góc tạo bởi đường thẳng với trục hoành biến thiên trực quan:
<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;">⚡ Thí Nghiệm Khoảng Cách & Góc Hình Học Giải Tích</h3>
<span style="font-size: 0.85rem; background: #dbeafe; color: #1e40af; padding: 4px 10px; border-radius: 999px; font-weight: 500;">Hình chiếu vuông góc</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="distSvg" 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" />
<!-- Line Delta -->
<line id="svgLine" x1="0" y1="0" x2="360" y2="280" stroke="#2563eb" stroke-width="2.2" />
<!-- Perpendicular segment M0 -> H -->
<line id="svgPerp" x1="0" y1="0" x2="0" y2="0" stroke="#dc2626" stroke-width="2" stroke-dasharray="3,3" />
<!-- Projected point H -->
<circle id="svgPtH" cx="0" cy="0" r="4" fill="#d97706" />
<!-- Point M0 -->
<circle id="svgPtM0" cx="0" cy="0" r="6" fill="#dc2626" />
<text id="lblM0" x="0" y="0" font-size="11" fill="#dc2626" font-weight="bold">M₀</text>
<text id="lblH" x="0" y="0" font-size="10" fill="#d97706" font-weight="bold">H</text>
</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="inMx" value="2" step="1" style="width: 50%; padding: 4px; border: 1px solid #cbd5e1; border-radius: 4px;" />
<input type="number" id="inMy" value="3" step="1" style="width: 50%; padding: 4px; border: 1px solid #cbd5e1; border-radius: 4px;" />
</div>
</div>
<div style="margin-bottom: 12px;">
<label style="display: block; font-weight: 600; color: #475569; margin-bottom: 4px;">Đường thẳng $\Delta: ax + by + c = 0$:</label>
<div style="display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 6px;">
<input type="number" id="inLa" value="3" step="1" title="a" style="padding: 4px; border: 1px solid #cbd5e1; border-radius: 4px;" />
<input type="number" id="inLb" value="4" step="1" title="b" style="padding: 4px; border: 1px solid #cbd5e1; border-radius: 4px;" />
<input type="number" id="inLc" value="-5" step="1" title="c" style="padding: 4px; border: 1px solid #cbd5e1; border-radius: 4px;" />
</div>
</div>
<div style="background: #f8fafc; border-radius: 6px; padding: 10px; border: 1px solid #e2e8f0;">
<div style="font-weight: 700; color: #1e293b; margin-bottom: 4px;">Khoảng cách $d(M_0, \Delta)$:</div>
<div id="statDist" style="color: #dc2626; font-size: 1.25rem; font-weight: 800; margin-bottom: 6px;">2.60</div>
<div style="font-size: 0.8rem; color: #64748b;" id="statFormula">|3(2) + 4(3) - 5| / √(3² + 4²)</div>
</div>
</div>
</div>
</div>
<script>
(() => {
const inMx = document.getElementById('inMx');
const inMy = document.getElementById('inMy');
const inLa = document.getElementById('inLa');
const inLb = document.getElementById('inLb');
const inLc = document.getElementById('inLc');
const svgLine = document.getElementById('svgLine');
const svgPerp = document.getElementById('svgPerp');
const svgPtM0 = document.getElementById('svgPtM0');
const svgPtH = document.getElementById('svgPtH');
const lblM0 = document.getElementById('lblM0');
const lblH = document.getElementById('lblH');
const statDist = document.getElementById('statDist');
const statFormula = document.getElementById('statFormula');
const ox = 180, oy = 140, scale = 25;
function toScreen(x, y) {
return [ox + x * scale, oy - y * scale];
}
function update() {
const x0 = parseFloat(inMx.value) || 0;
const y0 = parseFloat(inMy.value) || 0;
let a = parseFloat(inLa.value);
let b = parseFloat(inLb.value);
const c = parseFloat(inLc.value) || 0;
if (isNaN(a)) a = 1;
if (isNaN(b)) b = 0;
if (a === 0 && b === 0) { a = 1; inLa.value = 1; }
// Distance calculation
const num = Math.abs(a * x0 + b * y0 + c);
const den = Math.sqrt(a * a + b * b);
const d = num / den;
statDist.textContent = d.toFixed(2);
statFormula.textContent = '|' + a + '(' + x0 + ') + ' + b + '(' + y0 + ') + ' + c + '| / √(' + a + '² + ' + b + '²)';
// Projection H of M0 onto Delta
// H = M0 - t * n where t = (a*x0 + b*y0 + c)/(a^2 + b^2)
const t = (a * x0 + b * y0 + c) / (a * a + b * b);
const hx = x0 - t * a;
const hy = y0 - t * b;
const [smx, smy] = toScreen(x0, y0);
const [shx, shy] = toScreen(hx, hy);
svgPtM0.setAttribute('cx', smx);
svgPtM0.setAttribute('cy', smy);
lblM0.setAttribute('x', smx + 8);
lblM0.setAttribute('y', smy - 6);
lblM0.textContent = 'M₀(' + x0 + ';' + y0 + ')';
svgPtH.setAttribute('cx', shx);
svgPtH.setAttribute('cy', shy);
lblH.setAttribute('x', shx + 8);
lblH.setAttribute('y', shy + 12);
svgPerp.setAttribute('x1', smx);
svgPerp.setAttribute('y1', smy);
svgPerp.setAttribute('x2', shx);
svgPerp.setAttribute('y2', shy);
// Draw line Delta through H with direction (-b, a)
const ux = -b, uy = a;
const [lx1, ly1] = toScreen(hx - 15 * ux, hy - 15 * uy);
const [lx2, ly2] = toScreen(hx + 15 * ux, hy + 15 * uy);
svgLine.setAttribute('x1', lx1);
svgLine.setAttribute('y1', ly1);
svgLine.setAttribute('x2', lx2);
svgLine.setAttribute('y2', ly2);
}
[inMx, inMy, inLa, inLb, inLc].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: Xét vị trí tương đối và tìm giao điểm của hai đường thẳng
Phương pháp giải:
Giải hệ phương trình tọa độ giao điểm gồm phương trình của và :
- Nếu hệ có nghiệm duy nhất Cắt nhau tại .
- Nếu hệ vô nghiệm Song song.
- Nếu hệ vô số nghiệm Trùng nhau.
Bài toán 1
Xét vị trí tương đối và tìm giao điểm (nếu có) của các cặp đường thẳng sau:
- và .
- và .
Lời giải:
Xét hệ phương trình giao điểm của và :
Hệ có nghiệm duy nhất . Kết luận: cắt tại điểm .
Xét tỉ số các hệ số của và :
Vì , hệ phương trình tọa độ giao điểm vô nghiệm. Kết luận: Hai đường thẳng và song song với nhau ().
Dạng 2: Tính góc giữa hai đường thẳng
Phương pháp giải:
Xác định hai VTPT và . Áp dụng công thức:
Tra bảng lượng giác hoặc bấm máy tính để suy ra số đo góc .
Bài toán 2
Tính số đo góc giữa hai đường thẳng:
Lời giải:
- có VTPT . Độ dài .
- có VTPT . Độ dài .
- Gọi là góc giữa và :
- Suy ra .
Kết luận: Góc giữa hai đường thẳng bằng .
Dạng 3: Tính khoảng cách từ điểm đến đường thẳng và giữa hai đường thẳng song song
Phương pháp giải:
- .
- Khoảng cách giữa 2 đường thẳng song song: .
Bài toán 3
- Tính khoảng cách từ điểm đến đường thẳng .
- Tính khoảng cách giữa hai đường thẳng song song:
Lời giải:
- Áp dụng công thức khoảng cách:
- Hai đường thẳng và song song nhau (cùng có ):
Dạng 4: Lập phương trình đường thẳng thỏa mãn điều kiện góc hoặc khoảng cách
Phương pháp giải:
Gọi phương trình đường thẳng cần tìm theo dạng chùm đường thẳng đi qua điểm có VTPT ():
Dùng điều kiện góc hoặc khoảng cách để thiết lập phương trình liên hệ giữa và , từ đó chọn tỉ lệ thích hợp.
Bài toán 4
Viết phương trình đường thẳng đi qua điểm và cách điểm một khoảng bằng 3.
Lời giải:
- Đường thẳng đi qua có VTPT ():
- Khoảng cách từ đến bằng 3:
- Quy đồng và bình phương hai vế:
- Trường hợp 1: . Vì , ta chọn . Phương trình đường thẳng: .
- Trường hợp 2: . Chọn . Phương trình đường thẳng: .
Kết luận: Có hai đường thẳng thỏa mãn yêu cầu bài toán là và .
6. Năm ứng dụng thực tế khoa học & công nghệ
- Hệ thống dẫn đường hàng hải & Tránh va chạm trên biển (COLREGS): Hệ thống nhận dạng tự động AIS tính toán khoảng cách tiếp cận gần nhất (CPA - Closest Point of Approach) giữa hai tàu bằng công thức khoảng cách đường thẳng, kịp thời điều chỉnh góc bánh lái để tránh đâm va.
- Khai khoáng & Thiết kế hầm lò mỏ than: Kỹ sư trắc địa dùng công thức góc giữa hai đường thẳng để xác định góc xiên khoan nổ mìn, đảm bảo hai nhánh đường hầm đào từ hai sườn núi gặp nhau chính xác tuyệt đối tại tâm điểm lòng đất.
- Mạng lưới cáp viễn thông & Vành đai bảo vệ hành lang an toàn: Quy chuẩn quốc gia yêu cầu khoảng cách từ đường dây điện cao thế đến mép công trình nhà ở phải lớn hơn khoảng cách phóng điện an toàn ().
- Thuật toán thị giác máy tính & Phân làn đường ô tô tự lái: Camera trên xe Tesla nhận diện hai vạch sơn kẻ đường và tính khoảng cách từ tâm xe đến mép làn đường bằng công thức , kích hoạt hệ thống giữ làn tự động (Lane Keeping Assist).
- Định vị nguồn phát tín hiệu vô tuyến (Triangulation): Ba trạm thu sóng radar xác định góc phương vị của máy bay địch. Giao điểm của ba đường thẳng định vị vị trí tọa độ của mục tiêu trên bản đồ tác chiến.
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ế Nút giao thông khác mức
Tại một ngã tư lớn ở cửa ngõ thành phố, hai tuyến đường giao nhau có phương trình:
(đơn vị tọa độ tính bằng mét).
- Chứng minh rằng hai tuyến đường này vuông góc với nhau và tìm tọa độ giao lộ ngã tư .
- Để giảm ùn tắc, thành phố muốn mở một đường nhánh rẽ nối từ điểm trên Tuyến 2 đến Tuyến 1 sao cho chiều dài đoạn đường rẽ là ngắn nhất. Tính chiều dài ngắn nhất đó.
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á.