Пахненко Иван 516 RandSquare 7142
Георгий Попандопуло, 520 группа RandSquare 7323
t1import randomt1import random
22
3def check(x1, y1, x2, y2, x3, y3):3def check(x1, y1, x2, y2, x3, y3):
4    return abs((x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2)) / 2.0)4    return abs((x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2)) / 2.0)
55
6def randsquare(A, B):6def randsquare(A, B):
7    (x_1, y_1) = A7    (x_1, y_1) = A
8    (x_2, y_2) = B8    (x_2, y_2) = B
9    x_center = (x_1 + x_2) / 29    x_center = (x_1 + x_2) / 2
10    y_center = (y_1 + y_2) / 210    y_center = (y_1 + y_2) / 2
11    x_3 = x_center - y_1 + y_center11    x_3 = x_center - y_1 + y_center
12    y_3 = y_center + x_1 - x_center12    y_3 = y_center + x_1 - x_center
13    x_4 = x_center - y_2 + y_center13    x_4 = x_center - y_2 + y_center
14    y_4 = y_center + x_2 - x_center14    y_4 = y_center + x_2 - x_center
15    min_x = min(x_1, x_2, x_3, x_4)15    min_x = min(x_1, x_2, x_3, x_4)
16    max_x = max(x_1, x_2, x_3, x_4)16    max_x = max(x_1, x_2, x_3, x_4)
17    min_y = min(y_1, y_2, y_3, y_4)17    min_y = min(y_1, y_2, y_3, y_4)
18    max_y = max(y_1, y_2, y_3, y_4)18    max_y = max(y_1, y_2, y_3, y_4)
19    all_1 = check(x_1, y_1, x_2, y_2, x_3, y_3)19    all_1 = check(x_1, y_1, x_2, y_2, x_3, y_3)
20    while True:20    while True:
21        (x, y) = (random.uniform(min_x, max_x), random.uniform(min_y, max_y))21        (x, y) = (random.uniform(min_x, max_x), random.uniform(min_y, max_y))
22        f_1 = check(x, y, x_2, y_2, x_3, y_3)22        f_1 = check(x, y, x_2, y_2, x_3, y_3)
23        s_1 = check(x_1, y_1, x, y, x_3, y_3)23        s_1 = check(x_1, y_1, x, y, x_3, y_3)
24        t_1 = check(x_1, y_1, x_2, y_2, x, y)24        t_1 = check(x_1, y_1, x_2, y_2, x, y)
25        if all_1 == f_1 + s_1 + t_1:25        if all_1 == f_1 + s_1 + t_1:
26            return (x, y)26            return (x, y)
27        f_2 = check(x, y, x_2, y_2, x_4, y_4)27        f_2 = check(x, y, x_2, y_2, x_4, y_4)
28        s_2 = check(x_1, y_1, x, y, x_4, y_4)28        s_2 = check(x_1, y_1, x, y, x_4, y_4)
29        if all_1 == f_2 + s_2 + t_1:29        if all_1 == f_2 + s_2 + t_1:
30            return (x, y)30            return (x, y)
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op