← Назад к геометрии

Параллельная прямая на заданном расстоянии

Построение двух параллельных прямых на расстоянии r от заданной прямой ax + by + c = 0

🐍 Python
with open('line3.in', 'r') as fin:
    a, b, c, r = map(int, fin.readline().split())

c1 = c - r * (a**2 + b**2)**0.5
c2 = c + r * (a**2 + b**2)**0.5

with open('line3.out', 'w') as fout:
    fout.write(str(a) + " " + str(b) + " " + str(c1) + "\n")
    fout.write(str(a) + " " + str(b) + " " + str(c2) + "\n")
⚙️ C++
#include <bits/stdc++.h>
using namespace std;

int main() {
    ifstream fin("line3.in");
    ofstream fout("line3.out");
    
    double a, b, c, r;
    fin >> a >> b >> c >> r;
    
    double norm = sqrt(a * a + b * b);
    
    double c1 = c - r * norm;
    double c2 = c + r * norm;
    
    fout << a << " " << b << " " << c1 << "\n";
    fout << a << " " << b << " " << c2 << "\n";
    
    return 0;
}

Как построить параллельную прямую?

Дана прямая: ax + by + c = 0. Нужно найти уравнения двух параллельных прямых на расстоянии r от неё.

d = |a·x + b·y + c| / √(a² + b²)

Чтобы сдвинуть прямую на расстояние r, нужно изменить свободный член c:

c₁ = c - r·√(a² + b²)
c₂ = c + r·√(a² + b²)

Две полученные прямые будут параллельны исходной и находиться на расстоянии r от неё.

Формат ввода и вывода

Ввод: файл line3.in содержит a b c r

Вывод: файл line3.out содержит уравнения двух прямых

Пример:

3 4 5 2

Исходная прямая: 3x + 4y + 5 = 0, норма = 5

c₁ = 5 - 2·5 = -5

c₂ = 5 + 2·5 = 15

Вывод:
3 4 -5
3 4 15

Попробовать онлайн

Результат появится здесь...