Нужно сделать так, чтоб программа нормально отображала график

kekw

Новичок
Пользователь
Дек 22, 2020
1
0
1
# импорт нужных библиотек
import sympy as sym
import matplotlib.pyplot as plt
import numpy as np

# Ввод начальных условий
x1 = float(input('Задайте начальные координаты окружности (1) по оси Х: '))
y1 = float(input('Задайте начальные координаты окружности (1) по осу У: '))
x2 = float(input('Задайте начальные координаты окружности (2) по оси Х: '))
y2 = float(input('Задайте начальные координаты окружности (2) по оси У: '))
r1 = float(input('Задайте радиус окружности (1): '))
r2 = float(input('Задайте радиус окружности (2): '))

# расстояние между центрами окружностей
l = sym.sqrt((x2-x1)**2+(y2-y1)**2)
print(l)
# Нужно задать символьные переменные Х и У и число π
x = sym.Symbol('x')
y = sym.Symbol('y')
pi = (sym.pi)

#Задаем уравнения для двух окружностей

first_circle = ((x-x1)**2 + (y-y1)**2 - r1**2)
second_circle = ((x-x2)**2 + (y-y2)**2 - r2**2)
#Выполним проверку пересекаются ли окружности
if l < r1+r2 and l>0:
#Если верно, продолжим решение
#Нахожу точки пересечения двух окружностей
points = sym.solvers.solve([first_circle, second_circle], (x, y))

horda_x1 = points [0][0]
horda_y1 = points [0][1]
horda_x2 = points [1][0]
horda_y2 = points [1][1]

#Нахожу площадь пересечения окружностей
f1 = 2 * sym.acos((r1**2 - r2**2 + l**2)/(2 * r1 * l))
f2 = 2 * sym.acos((r2**2 - r1**2 + l**2)/(2 * r2 * l))
s1 = (r1**2 * (f1 - sym.sin(f1)))/(2)
s2 = (r2**2 * (f2 - sym.sin(f2)))/(2)

s = float(s1 + s2)
print(f'Площадь пересечения окружностей равна {s}')
#Рисую график
fig, ax = plt.subplots() # тело графика
plt.title ("Две окружности") # название графика
plt.xlabel("Ось X", fontsize=10, color='blue') # ось абсцисс (x)
plt.ylabel("Ось Y", fontsize=10, color='red') # ось ординат ( y )
ax.scatter(horda_x1, horda_y1, s=12, c='red', marker="o", alpha = 1, label='Легенда точек') # отображение точек
ax.scatter(horda_x2, horda_y2, s=12, c='red', marker="o", alpha = 1, label='Легенда точек') # отображение точек
ax.set_xlim((x1-r1 if x1<x2 else x2-x2, x1+r1 if x1>x2 else x2+r2))
ax.set_ylim((y1-r1 if y1<y2 else y2-y2, y1+r1 if y1>y2 else y2+r2))

circle1 = plt.Circle((x1,y1),r1,fill = False)
circle2 = plt.Circle((x2,y2),r2,fill = False)
ax.add_artist(circle1)
ax.add_artist(circle2)
ax.grid(True)

else:
print('Не пересекаются')
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Код вставляйте с помощью ... -> код -> python.
Нужно сделать так, чтоб программа нормально отображала график
Чтобы график отображался (в случае пересечения окружностей) нужно его выводить на экран.
Для этого после строки
Python:
ax.grid(True)
нужно добавить строку
Python:
plt.show()
 

Форум IT Специалистов