RandSquare/Agafonova525
RandSquare/SaurinK
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])
n32        #print(lx[g1], ly[g1], lx[g2], ly[g2], lx[g3], ly[g3])n
33        if lx[g1] != lx[g2]:32        if lx[g1] != lx[g2]:
34            k = (ly[g1] - ly[g2])/(lx[g1] - lx[g2])33            k = (ly[g1] - ly[g2])/(lx[g1] - lx[g2])
35            b = ly[g1] - k * lx[g1]34            b = ly[g1] - k * lx[g1]
36            y_top = k * x + b35            y_top = k * x + b
37        else:36        else:
38            y_top = y137            y_top = y1
3938
40        if lx[g1] != lx[g3]:39        if lx[g1] != lx[g3]:
41            k = (ly[g1] - ly[g3])/(lx[g1] - lx[g3])40            k = (ly[g1] - ly[g3])/(lx[g1] - lx[g3])
42            b = ly[g1] - k * lx[g1]41            b = ly[g1] - k * lx[g1]
43            y_bot = k * x + b42            y_bot = k * x + b
44        else:43        else:
45            y_bot = y244            y_bot = y2
46    elif x < l_x[1]:45    elif x < l_x[1]:
47        g1 = lx.index(l_x[0])46        g1 = lx.index(l_x[0])
48        if l_x[0] == l_x[2]:47        if l_x[0] == l_x[2]:
49            g2 = lx.index(l_x[2], g1+1)48            g2 = lx.index(l_x[2], g1+1)
50        else:49        else:
51            g2 = lx.index(l_x[2])50            g2 = lx.index(l_x[2])
52        if l_x[1] == l_x[0]:51        if l_x[1] == l_x[0]:
53            g3 = lx.index(l_x[1], g1+1)52            g3 = lx.index(l_x[1], g1+1)
54        elif l_x[1] == l_x[2]:53        elif l_x[1] == l_x[2]:
55            g3 = lx.index(l_x[1], g2+1)54            g3 = lx.index(l_x[1], g2+1)
56        else:55        else:
57            g3 = lx.index(l_x[1])56            g3 = lx.index(l_x[1])
58        if lx[g1] != lx[g2]:57        if lx[g1] != lx[g2]:
59            k = (ly[g1] - ly[g2])/(lx[g1] - lx[g2])58            k = (ly[g1] - ly[g2])/(lx[g1] - lx[g2])
60            b = ly[g1] - k * lx[g1]59            b = ly[g1] - k * lx[g1]
61            y_top = k * x + b60            y_top = k * x + b
62        else:61        else:
63            y_top = y162            y_top = y1
64        if lx[g1] != lx[g3]:63        if lx[g1] != lx[g3]:
65            k = (ly[g1] - ly[g3])/(lx[g1] - lx[g3])64            k = (ly[g1] - ly[g3])/(lx[g1] - lx[g3])
66            b = ly[g1] - k * lx[g1]65            b = ly[g1] - k * lx[g1]
67            y_bot = k * x + b66            y_bot = k * x + b
68        else:67        else:
69            y_bot = y268            y_bot = y2
70    else:69    else:
n71        #print("мы тут")n
72        g1 = lx.index(l_x[3])70        g1 = lx.index(l_x[3])
73        if l_x[3] == l_x[1]:71        if l_x[3] == l_x[1]:
74            g2 = lx.index(l_x[1], g1+1)72            g2 = lx.index(l_x[1], g1+1)
75        else:73        else:
76            g2 = lx.index(l_x[1])74            g2 = lx.index(l_x[1])
77        if l_x[2] == l_x[3]:75        if l_x[2] == l_x[3]:
78            g3 = lx.index(l_x[2], g1+1)76            g3 = lx.index(l_x[2], g1+1)
79        elif l_x[2] == l_x[1]:77        elif l_x[2] == l_x[1]:
80            g3 = lx.index(l_x[2], g2+1)78            g3 = lx.index(l_x[2], g2+1)
81        else:79        else:
82            g3 = lx.index(l_x[2])80            g3 = lx.index(l_x[2])
83        if (g1 in [0, 1, 2]) and (g2 in [0, 1, 2]) and (g3 in [1, 2, 0]):81        if (g1 in [0, 1, 2]) and (g2 in [0, 1, 2]) and (g3 in [1, 2, 0]):
84            g4 = 382            g4 = 3
85        elif (g1 in [0, 3, 2]) and (g2 in [0, 3, 2]) and (g3 in [0, 2, 3]):83        elif (g1 in [0, 3, 2]) and (g2 in [0, 3, 2]) and (g3 in [0, 2, 3]):
86            g4 = 184            g4 = 1
87        elif (g1 in [3, 1, 2]) and (g2 in [1, 2, 3]) and (g3 in [1, 2, 3]):85        elif (g1 in [3, 1, 2]) and (g2 in [1, 2, 3]) and (g3 in [1, 2, 3]):
88            g4 = 086            g4 = 0
89        else:87        else:
90            g4 = 288            g4 = 2
n91        #print(lx[g1], lx[g2], lx[g3], lx[g4])n
92        if lx[g1] != lx[g2]:89        if lx[g1] != lx[g2]:
93            k = Decimal(ly[g1] - ly[g2])/Decimal(lx[g1] - lx[g2])90            k = Decimal(ly[g1] - ly[g2])/Decimal(lx[g1] - lx[g2])
94            b = Decimal(ly[g1]) - k * Decimal(lx[g1])91            b = Decimal(ly[g1]) - k * Decimal(lx[g1])
95            y_top = k * Decimal(x) + b92            y_top = k * Decimal(x) + b
96        else:93        else:
97            y_top = y194            y_top = y1
98        if lx[g3] != lx[g4]:95        if lx[g3] != lx[g4]:
n99            #print("точки ", lx[g3], lx[g4], ly[g3], ly[g4])n
100            #print(ly[g3] - ly[g4])
101            #print(lx[g3] - lx[g4])
102            k = Decimal(ly[g3] - ly[g4])/Decimal(lx[g3] - lx[g4])96            k = Decimal(ly[g3] - ly[g4])/Decimal(lx[g3] - lx[g4])
103            b = Decimal(ly[g3]) - k * Decimal(lx[g3])97            b = Decimal(ly[g3]) - k * Decimal(lx[g3])
104            y_bot = k * Decimal(x) + b98            y_bot = k * Decimal(x) + b
n105            #print("k =, b =", k, b)n
106        else:99        else:
107            y_bot = y2100            y_bot = y2
108101
t109    #print("y top = ", y_top, y_bot)t
110    y = random.uniform(float(y_top), float(y_bot))102    y = random.uniform(float(y_top), float(y_bot))
111    return (x, y)103    return (x, y)
112104
113#print(randsquare((0, 0), (100, 101)))105#print(randsquare((0, 0), (100, 101)))
114106
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op