RandSquare/SaurinK
RandSquare/Agafonova525
f1import randomf1import random
2from decimal import *2from decimal import *
33
44
5def randsquare(t1, t2):5def randsquare(t1, t2):
6    x1, y1 = t16    x1, y1 = t1
7    x2, y2 = t27    x2, y2 = t2
88
9    if (x1 - x2) == (y2 - y1):9    if (x1 - x2) == (y2 - y1):
10        return (random.uniform(x1, x2), random.uniform(y1, y2))10        return (random.uniform(x1, x2), random.uniform(y1, y2))
1111
12    cent_x, cent_y = ((x2+x1)/2, (y1+y2)/2)12    cent_x, cent_y = ((x2+x1)/2, (y1+y2)/2)
13    x3, y3 = (cent_x - (cent_y - y1), cent_y + (cent_x - x1))13    x3, y3 = (cent_x - (cent_y - y1), cent_y + (cent_x - x1))
14    x4, y4 = (cent_x + (cent_y - y1), cent_y - (cent_x - x1))14    x4, y4 = (cent_x + (cent_y - y1), cent_y - (cent_x - x1))
15    lx = [x1, x2, x3, x4]15    lx = [x1, x2, x3, x4]
16    l_x = sorted([x1, x2, x3, x4])16    l_x = sorted([x1, x2, x3, x4])
17    x = random.uniform(l_x[0], l_x[3])17    x = random.uniform(l_x[0], l_x[3])
18    ly = [y1, y2, y3, y4]18    ly = [y1, y2, y3, y4]
1919
20    if x > l_x[2]:20    if x > l_x[2]:
21        g1 = lx.index(l_x[3])21        g1 = lx.index(l_x[3])
22        if l_x[3] == l_x[2]:22        if l_x[3] == l_x[2]:
23            g2 = lx.index(l_x[2], g1+1)23            g2 = lx.index(l_x[2], g1+1)
24        else:24        else:
25            g2 = lx.index(l_x[2])25            g2 = lx.index(l_x[2])
26        if l_x[1] == l_x[3]:26        if l_x[1] == l_x[3]:
27            g3 = lx.index(l_x[1], g1+1)27            g3 = lx.index(l_x[1], g1+1)
28        elif l_x[1] == l_x[2]:28        elif l_x[1] == l_x[2]:
29            g3 = lx.index(l_x[1], g2+1)29            g3 = lx.index(l_x[1], g2+1)
30        else:30        else:
31            g3 = lx.index(l_x[1])31            g3 = lx.index(l_x[1])
nn32        #print(lx[g1], ly[g1], lx[g2], ly[g2], lx[g3], ly[g3])
32        if lx[g1] != lx[g2]:33        if lx[g1] != lx[g2]:
33            k = (ly[g1] - ly[g2])/(lx[g1] - lx[g2])34            k = (ly[g1] - ly[g2])/(lx[g1] - lx[g2])
34            b = ly[g1] - k * lx[g1]35            b = ly[g1] - k * lx[g1]
35            y_top = k * x + b36            y_top = k * x + b
36        else:37        else:
37            y_top = y138            y_top = y1
3839
39        if lx[g1] != lx[g3]:40        if lx[g1] != lx[g3]:
40            k = (ly[g1] - ly[g3])/(lx[g1] - lx[g3])41            k = (ly[g1] - ly[g3])/(lx[g1] - lx[g3])
41            b = ly[g1] - k * lx[g1]42            b = ly[g1] - k * lx[g1]
42            y_bot = k * x + b43            y_bot = k * x + b
43        else:44        else:
44            y_bot = y245            y_bot = y2
45    elif x < l_x[1]:46    elif x < l_x[1]:
46        g1 = lx.index(l_x[0])47        g1 = lx.index(l_x[0])
47        if l_x[0] == l_x[2]:48        if l_x[0] == l_x[2]:
48            g2 = lx.index(l_x[2], g1+1)49            g2 = lx.index(l_x[2], g1+1)
49        else:50        else:
50            g2 = lx.index(l_x[2])51            g2 = lx.index(l_x[2])
51        if l_x[1] == l_x[0]:52        if l_x[1] == l_x[0]:
52            g3 = lx.index(l_x[1], g1+1)53            g3 = lx.index(l_x[1], g1+1)
53        elif l_x[1] == l_x[2]:54        elif l_x[1] == l_x[2]:
54            g3 = lx.index(l_x[1], g2+1)55            g3 = lx.index(l_x[1], g2+1)
55        else:56        else:
56            g3 = lx.index(l_x[1])57            g3 = lx.index(l_x[1])
57        if lx[g1] != lx[g2]:58        if lx[g1] != lx[g2]:
58            k = (ly[g1] - ly[g2])/(lx[g1] - lx[g2])59            k = (ly[g1] - ly[g2])/(lx[g1] - lx[g2])
59            b = ly[g1] - k * lx[g1]60            b = ly[g1] - k * lx[g1]
60            y_top = k * x + b61            y_top = k * x + b
61        else:62        else:
62            y_top = y163            y_top = y1
63        if lx[g1] != lx[g3]:64        if lx[g1] != lx[g3]:
64            k = (ly[g1] - ly[g3])/(lx[g1] - lx[g3])65            k = (ly[g1] - ly[g3])/(lx[g1] - lx[g3])
65            b = ly[g1] - k * lx[g1]66            b = ly[g1] - k * lx[g1]
66            y_bot = k * x + b67            y_bot = k * x + b
67        else:68        else:
68            y_bot = y269            y_bot = y2
69    else:70    else:
nn71        #print("мы тут")
70        g1 = lx.index(l_x[3])72        g1 = lx.index(l_x[3])
71        if l_x[3] == l_x[1]:73        if l_x[3] == l_x[1]:
72            g2 = lx.index(l_x[1], g1+1)74            g2 = lx.index(l_x[1], g1+1)
73        else:75        else:
74            g2 = lx.index(l_x[1])76            g2 = lx.index(l_x[1])
75        if l_x[2] == l_x[3]:77        if l_x[2] == l_x[3]:
76            g3 = lx.index(l_x[2], g1+1)78            g3 = lx.index(l_x[2], g1+1)
77        elif l_x[2] == l_x[1]:79        elif l_x[2] == l_x[1]:
78            g3 = lx.index(l_x[2], g2+1)80            g3 = lx.index(l_x[2], g2+1)
79        else:81        else:
80            g3 = lx.index(l_x[2])82            g3 = lx.index(l_x[2])
81        if (g1 in [0, 1, 2]) and (g2 in [0, 1, 2]) and (g3 in [1, 2, 0]):83        if (g1 in [0, 1, 2]) and (g2 in [0, 1, 2]) and (g3 in [1, 2, 0]):
82            g4 = 384            g4 = 3
83        elif (g1 in [0, 3, 2]) and (g2 in [0, 3, 2]) and (g3 in [0, 2, 3]):85        elif (g1 in [0, 3, 2]) and (g2 in [0, 3, 2]) and (g3 in [0, 2, 3]):
84            g4 = 186            g4 = 1
85        elif (g1 in [3, 1, 2]) and (g2 in [1, 2, 3]) and (g3 in [1, 2, 3]):87        elif (g1 in [3, 1, 2]) and (g2 in [1, 2, 3]) and (g3 in [1, 2, 3]):
86            g4 = 088            g4 = 0
87        else:89        else:
88            g4 = 290            g4 = 2
nn91        #print(lx[g1], lx[g2], lx[g3], lx[g4])
89        if lx[g1] != lx[g2]:92        if lx[g1] != lx[g2]:
90            k = Decimal(ly[g1] - ly[g2])/Decimal(lx[g1] - lx[g2])93            k = Decimal(ly[g1] - ly[g2])/Decimal(lx[g1] - lx[g2])
91            b = Decimal(ly[g1]) - k * Decimal(lx[g1])94            b = Decimal(ly[g1]) - k * Decimal(lx[g1])
92            y_top = k * Decimal(x) + b95            y_top = k * Decimal(x) + b
93        else:96        else:
94            y_top = y197            y_top = y1
95        if lx[g3] != lx[g4]:98        if lx[g3] != lx[g4]:
nn99            #print("точки ", lx[g3], lx[g4], ly[g3], ly[g4])
100            #print(ly[g3] - ly[g4])
101            #print(lx[g3] - lx[g4])
96            k = Decimal(ly[g3] - ly[g4])/Decimal(lx[g3] - lx[g4])102            k = Decimal(ly[g3] - ly[g4])/Decimal(lx[g3] - lx[g4])
97            b = Decimal(ly[g3]) - k * Decimal(lx[g3])103            b = Decimal(ly[g3]) - k * Decimal(lx[g3])
98            y_bot = k * Decimal(x) + b104            y_bot = k * Decimal(x) + b
nn105            #print("k =, b =", k, b)
99        else:106        else:
100            y_bot = y2107            y_bot = y2
101108
tt109    #print("y top = ", y_top, y_bot)
102    y = random.uniform(float(y_top), float(y_bot))110    y = random.uniform(float(y_top), float(y_bot))
103    return (x, y)111    return (x, y)
104112
105#print(randsquare((0, 0), (100, 101)))113#print(randsquare((0, 0), (100, 101)))
106114
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op