Proc 57. Используя функцию Leng из задания Proc56, описать функцию \(\text{Perim}(x_A, y_A, x_B, y_B, x_C, y_C)\) вещественного типа, находящую периметр треугольника ABC по координатам его вершин (\(x_A, y_A, x_B, y_B, x_C, y_C\) - вещественные параметры). С помощью этой функции найти периметры треугольников ABC, ABD, ACD, если даны координаты точек A, B, C, D.

Решение на Python 3

import math
import numpy as np
import random

def Leng(xA, yA, xB, yB):
d = math.sqrt((xA - xB)**2 + (yA - yB)**2)
return d

def Perim(xA, yA, xB, yB, xC, yC):
d_AB = Leng(xA, yA, xB, yB)
d_AC = Leng(xA, yA, xC, yC)
d_BC = Leng(xB, yB, xC, yC)
return d_AB + d_AC + d_BC


x1,x2,x3,y1,y2,y3 = list(np.random.choice(range(-10, 11), 6))
#x1,x2,x3,y1,y2,y3 = [0,3,0,0,0,4]
while (x3-x1)*(y2-y1) == (y3-y1)*(x2-x1):
x1,x2,x3,y1,y2,y3 = list(np.random.choice(range(-10, 11), 6))
x4, y4 = random.sample(range(-10, 11), 2)

A_x = x1
A_y = y1
B_x = x2
B_y = y2
C_x = x3
C_y = y3
D_x = x4
D_y = y4

A_x = 0
A_y = 0
B_x = 0
B_y = 3
C_x = 4
C_y = 0

print("Вершина A (x, y): ({0},{1})".format(A_x, A_y))
print("Вершина B (x, y): ({0},{1})".format(B_x, B_y))
print("Вершина C (x, y): ({0},{1})".format(C_x, C_y))
print("Вершина D (x, y): ({0},{1})".format(D_x, D_y))

p = Perim(A_x, A_y, B_x, B_y, C_x, C_y)
print("Периметр треугольника ABC: ", p)

p = Perim(A_x, A_y, B_x, B_y, D_x, D_y)
print("Периметр треугольника ABD: ", p)

p = Perim(A_x, A_y, C_x, C_y, D_x, D_y)
print("Периметр треугольника ABC: ", p)