Вычисление координат центра описанной окружности - QBasic
Формулировка задачи:
Задан треугольник координатами своих вершин
Требуется определить координаты центра описанной окружности
Сначала я аналитически решил эту задачу.
Потом написал программу. Она не только вычисляет координаты
центра описанной окружности. Но и вычисляет расстояние от
центра до каждой вершины. Все результаты выдаёт на экран.
Совпадение трёх последних чисел означает, что координаты вычисленного
центра соответствуют действительности, ведь такая точка только одна!!
(программа проверена)
Удачи вам!
Решение задачи: «Вычисление координат центра описанной окружности»
textual
Листинг программы
DECLARE SUB pr0(r1, r2) DECLARE SUB pr1(x, y) DIM x(1 TO 2, t TO 3) DATA 1, 3, 1, 1, 3, 1 FOR i=1 TO 3 READ x(1, i), x(2, i) NEXT k11=x(1, 1)-x(1, 2) k12=x(2, 2)-x(2, 1) k21=x(1, 3)-x(1, 2) k22=x(2, 2)-x(2, 3) b11=k12*(x(2, 1)+x(2, 2))-k11*(x(1, 1)+x(1, 2)) b12=k12*2 b21=k22*(x(2, 2)+x(2, 3))-k21*(x(1, 2)+x(1, 3)) b22=k22*2 r1=(b12*b21-b11*b22)*k12*k22 r2=(k11*k22-k12*k21)*b12*b22 IF r1=0 AND r2=0 THEN FOR i=1 TO 3 IF x(1, i)<min OR i=1 THEN min=x(1, i) IF x(1, i)>max OR i=1 THEN max=x(1, i) NEXT r1=max+min r2=2 EndIf IF k12>0 THEN r3=r1*k11*b12+r2*k12*b11 r4=r2*k12*b12 ELSE r3=r1*k21*b22+r2*k22*b21 r4=r2*k22*b22 EndIf PRINT "x:" CALL pr1(r1, r2) CALL pr0(r1, r2) PRINT "y:" CALL pr1(r3, r4) CALL pr0(r3, r4) SLEEP SUB pr0(r1, r2) rr1$=STR$(r1) rr2$=STR$(r2) IF LEN(rr1$)>LEN(rr2$) THEN i=LEN(rr1$) ELSE i=LEN(rr2$) PRINT SPACE$((i-LEN(rr1$))/2)&rr1$ PRINT STRING$(i, CHR$(196)) PRINT SPACE$((i-LEN(rr2$))/2)&rr2$ END SUB SUB pr1(x, y) i=2 DO WHILE i<x IF x MOD i = 0 THEN IF y MOD i = 0 THEN x=x/i: y=y/i: i=i-1 EndIf i=i+1 LOOP END SUB
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д