По разделам

 

Решение задачи Proc 59


Используя функции Leng и Area из заданий Proc56 и Proc58, описать
функцию Dist(xP , yP , xA, yA, xB, yB) вещественного типа, находящую
расстояние D(P, AB) от точки P до прямой AB по формуле
D(P, AB) = 2·SP AB/|AB|,
где SP AB — площадь треугольника PAB. С помощью этой функции найти
расстояния от точки P до прямых AB, AC, BC, если даны координаты
точек P, A, B, C.

Код (C/C++)

#include <bits/stdc++.h>

using namespace std;
double func(double px, double py, double x1, double y1, double x2, double y2)
{
    double a = sqrt(pow((px - x1),2) + pow((py - y1),2));
    double b = sqrt(pow((px - x2),2) + pow((py - y2),2));
    double c = sqrt(pow((x1 - x2),2) + pow((y1 - y2),2));
    double p = (a + b + c)/2;
    double s = sqrt(p * (p - a) * (p - b) * (p - c));
    return 2 * s/c;
}
int main()
{
    double x1, y1, x2, y2, x3, y3, px, py;
    cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3 >> px >> py;
    cout << func(px, py, x1, y1, x2, y2) << endl;
    cout << func(px, py, x1, y1, x3, y3) << endl;
    cout << func(px, py, x2, y2, x3, y3) << endl;
    return 0;
}

Код (Python)

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

def Area(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)
    p = Perim(xA, yA, xB, yB, xC, yC) / 2
    S = math.sqrt(p*(p-d_AB)*(p-d_AC)*(p-d_BC))
    return S

def Dist(xP, yP, xA, yA, xB, yB):
    S_PAB = Area(xA, yA, xB, yB, xP, yP)
    d_AB = Leng(xA, yA, xB, yB)
    d_P_AB = 2 * S_PAB / d_AB
    return d_P_AB

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
P_x = x4
P_y = y4

##A_x = 3
##A_y = 0
##B_x = 0
##B_y = 3
##P_x = 0
##P_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("Точка P (x, y): ({0},{1})".format(P_x, P_y))
D = Dist(P_x, P_y, A_x, A_y, B_x, B_y)
print("Расстояние от P до AB: ", D)
print()

print("Точка A (x, y): ({0},{1})".format(A_x, A_y))
print("Точка C (x, y): ({0},{1})".format(C_x, C_y))
print("Точка P (x, y): ({0},{1})".format(P_x, P_y))
D = Dist(P_x, P_y, A_x, A_y, C_x, C_y)
print("Расстояние от P до AB: ", D)
print()

print("Точка B (x, y): ({0},{1})".format(B_x, B_y))
print("Точка C (x, y): ({0},{1})".format(C_x, C_y))
print("Точка P (x, y): ({0},{1})".format(P_x, P_y))
D = Dist(P_x, P_y, B_x, B_y, C_x, C_y)
print("Расстояние от P до BC: ", D)
print()
									




Proc. Абрамян
Proc 1 Просмотров: 6511
Proc 2 Просмотров: 5032
Proc 3 Просмотров: 5115
Proc 4 Просмотров: 4302
Proc 5 Просмотров: 3362
Proc 6 Просмотров: 4607
Proc 7 Просмотров: 3891
Proc 8 Просмотров: 2985
Proc 9 Просмотров: 3123
Proc 10 Просмотров: 2882
Proc 11 Просмотров: 2984
Proc 12 Просмотров: 2181
Proc 13 Просмотров: 2422
Proc 14 Просмотров: 2655
Proc 15 Просмотров: 1865
Proc 16 Просмотров: 2840
Proc 17 Просмотров: 2484
Proc 18 Просмотров: 2405
Proc 19 Просмотров: 2323
Proc 20 Просмотров: 3169
Proc 21 Просмотров: 3298
Proc 22 Просмотров: 2401
Proc 23 Просмотров: 2397
Proc 24 Просмотров: 1659
Proc 25 Просмотров: 2032
Proc 26 Просмотров: 1806
Proc 27 Просмотров: 2006
Proc 28 Просмотров: 1737
Proc 29 Просмотров: 1915
Proc 30 Просмотров: 2444
Proc 31 Просмотров: 1668
Proc 32 Просмотров: 1220
Proc 33 Просмотров: 1250
Proc 34 Просмотров: 1670
Proc 35 Просмотров: 1154
Proc 36 Просмотров: 1612
Proc 37 Просмотров: 1473
Proc 38 Просмотров: 1193
Proc 39 Просмотров: 1098
Proc 40 Просмотров: 1831
Proc 41 Просмотров: 1897
Proc 42 Просмотров: 1149
Proc 43 Просмотров: 1115
Proc 44 Просмотров: 998
Proc 45 Просмотров: 1129
Proc 46 Просмотров: 999
Proc 47 Просмотров: 1060
Proc 48 Просмотров: 811
Proc 49 Просмотров: 1045
Proc 50 Просмотров: 2078
Proc 51 Просмотров: 1682
Proc 52 Просмотров: 1687
Proc 53 Просмотров: 1173
Proc 54 Просмотров: 1260
Proc 55 Просмотров: 1144
Proc 56 Просмотров: 1738
Proc 57 Просмотров: 1488
Proc 58 Просмотров: 1171
Proc 59 Просмотров: 1082
Proc 60 Просмотров: 1364

Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться



Заявка на расчет