пересечение трёх прямых из 6ти точек

import matplotlib.pyplot as plt

# Ввод координат 6 точек
points = []
for i in range(6):
    print(f"Введите координаты точки {i+1} (через пробел):")
    x, y = map(float, input().split())
    points.append((x, y))

# Формируем 3 пары точек для 3 прямых
pairs = [(points[0], points[1]),
         (points[2], points[3]),
         (points[4], points[5])]

# Построение прямых
lines = []
for p1, p2 in pairs:
    A = p2[1] - p1[1]
    B = p1[0] - p2[0]
    C = p2[0]*p1[1] - p1[0]*p2[1]
    lines.append((A, B, C))

# Построение графика
plt.figure(figsize=(8,8))
plt.xlim(0, 1000)
plt.ylim(0, 1000)

x_vals = [0, 1000]
for idx, line in enumerate(lines):
    A, B, C = line
    if B != 0:
        y1 = (-A*0 - C)/B
        y2 = (-A*1000 - C)/B
        plt.plot(x_vals, [y1, y2], label=f'Прямая {idx+1}')
    else:
        # Вертикальная линия
        x = -C/A
        plt.plot([x, x], [0, 1000], label=f'Прямая {idx+1}')

# Отметим точки
for i, point in enumerate(points):
    plt.plot(point[0], point[1], 'o')
    plt.text(point[0], point[1], f'P{i+1}', fontsize=12)

plt.legend()
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Три прямые по 6 точкам')
plt.grid(True)
plt.show()





 **-----------------------------------**



import matplotlib.pyplot as plt

# Ввод 12 координат 6 точек в строке
coords = list(map(float, input("Введите 12 координат (00): ").split()))
points = []
for i in range(0, 12, 2):
    points.append((coords[i], coords[i+1]))
   
# Формируем 3 пары точек для 3 прямых
pairs = [(points[0], points[1]),
         (points[2], points[3]),
         (points[4], points[5])]

# Построение прямых
lines = []
for p1, p2 in pairs:
    A = p2[1] - p1[1]
    B = p1[0] - p2[0]
    C = p2[0]*p1[1] - p1[0]*p2[1]
    lines.append((A, B, C))

# Построение графика
plt.figure(figsize=(8,8))
plt.xlim(0, 1000)
plt.ylim(0, 1000)

x_vals = [0, 1000]
for idx, line in enumerate(lines):
    A, B, C = line
    if B != 0:
        y1 = (-A*0 - C)/B
        y2 = (-A*1000 - C)/B
        plt.plot(x_vals, [y1, y2], label=f'Прямая {idx+1}')
    else:
        # Вертикальная линия
        x = -C/A
        plt.plot([x, x], [0, 1000], label=f'Прямая {idx+1}')

# Отметим точки
for i, point in enumerate(points):
    plt.plot(point[0], point[1], 'o')
    plt.text(point[0], point[1], f'P{i+1}', fontsize=12)

plt.legend()
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Три прямые по 6 точкам')
plt.grid(True)
plt.show()


Рецензии