If alpha is half the central angle of one side a*sqrt(2), and beta is half the central angle of one side b, then
a*sqrt(2) = 2 r sin alpha
b = 2r sin beta
and 4 * 2 * (alpha + beta) = 2 * pi
or alpha + beta = pi/4
A table of values with increasing a is:
a b r 2alpha 2 beta (degrees)
1 6 5 16.260 73.740
1 40 29 2.794 87.206
1 238 169 0.479 89.521
2 12 10 16.260 73.740
2 80 58 2.794 87.206
2 476 338 0.479 89.521
3 18 15 16.260 73.740
3 120 87 2.794 87.206
4 24 20 16.260 73.740
4 160 116 2.794 87.206
5 30 25 16.260 73.740
5 200 145 2.794 87.206
6 36 30 16.260 73.740
6 240 174 2.794 87.206
7 10 13 44.760 45.240
7 16 17 33.855 56.145
7 42 35 16.260 73.740
7 96 73 7.776 82.224
7 130 97 5.850 84.150
So a can be 1, making b = 6 and r = 5.
(r was limited to 500 for the above table)
For part 2:
For increasing b:
a b r 2alpha 2 beta (degrees)
17 14 25 57.480 32.520
31 18 41 64.639 25.361
49 22 61 69.222 20.778
71 26 85 72.405 17.595
34 28 50 57.480 32.520
97 30 113 74.744 15.256
47 32 65 61.500 28.500
127 34 145 76.534 13.466
62 36 82 64.639 25.361
161 38 181 77.949 12.051
79 40 101 67.158 22.842
51 42 75 57.480 32.520
199 42 221 79.095 10.905
98 44 122 69.222 20.778
241 46 265 80.042 9.958
119 48 145 70.945 19.055
287 50 313 80.838 9.162
142 52 170 72.405 17.595
93 54 123 64.639 25.361
So b can be as small as 14, requiring a=17 and r=25.
(r was allowed to go to 5000 to be reasonably sure of not missing any possibilities). Of course it's remotely possible that using values of r larger than 5000 might alow lower b with increased a.
DEFDBL A-Z
CLS
pi = ATN(1) * 4
FOR a = 1 TO 500
FOR r = 1 TO 500
salpha = a * SQR(2) / (2 * r)
IF ABS(salpha) <= 1 THEN
alpha = ATN(salpha / SQR(1 - salpha * salpha))
beta = pi / 4 - alpha
sbeta = SIN(beta)
b = 2 * r * sbeta
IF b > 0 AND ABS((INT(b + .5) - b) / b) < 1E-12 THEN
ct = ct + 1
IF ct < 20 THEN
PRINT USING "### ### ### ###.### ###.###"; a; b; r; alpha * 360 / pi; beta * 360 / pi
END IF
END IF
END IF
NEXT
NEXT
nextPart:
ct = 0
PRINT
FOR b = 1 TO 500
FOR r = 1 TO 5000
sbeta = b / (2 * r)
IF ABS(sbeta) <= 1 THEN
IF ABS(sbeta) = 1 THEN
beta = pi / 2 * SGN(sbeta)
ELSE
beta = ATN(sbeta / SQR(1 - sbeta * sbeta))
END IF
alpha = pi / 4 - beta
salpha = SIN(alpha)
a = 2 * r * salpha / SQR(2)
IF a > b AND ABS((INT(a + .5) - a) / a) < 1E-12 THEN
ct = ct + 1
IF ct < 20 THEN
PRINT USING "### ### ### ###.### ###.###"; a; INT(b + .5); r; alpha * 360 / pi; beta * 360 / pi
END IF
END IF
END IF
NEXT
NEXT
|
Posted by Charlie
on 2007-04-22 15:40:57 |