Сформировать точку, движущуюся по контуру треугольника с заданными размерами и расположением - QBasic
Формулировка задачи:
Собственно сабж в заголовке. Прошу помощи
Решение задачи: «Сформировать точку, движущуюся по контуру треугольника с заданными размерами и расположением»
textual
Листинг программы
DEFSNG D-E, S, X-Y DEFLNG I CLS INPUT "Vvedite A(x,y)"; x1, y1 INPUT "Vvedite B(x,y)"; x2, y2 INPUT "Vvedite C(x,y)"; x3, y3 ex1 = x2 - x1 ey1 = y2 - y1 s1 = SQR(ex1 ^ 2 + ey1 ^ 2) dx1 = ex1 / s1 dy1 = ey1 / s1 ex2 = x3 - x2 ey2 = y3 - y2 s2 = SQR(ex2 ^ 2 + ey2 ^ 2) dx2 = ex2 / s2 dy2 = ey2 / s2 ex3 = x1 - x3 ey3 = y1 - y3 s3 = SQR(ex3 ^ 2 + ey3 ^ 2) dx3 = ex3 / s3 dy3 = ey3 / s3 dx = dx1 dy = dy1 x = x1 + dx y = y1 + dy SCREEN 12 LINE (x1, y1)-(x2, y2), 1 LINE (x2, y2)-(x3, y3), 1 LINE (x3, y3)-(x1, y1), 1 DO x = x + dx y = y + dy PSET (x, y), 14 FOR i = 1 TO 300000: NEXT i PSET (x, y), 1 IF ABS(x - x2) < 1 AND ABS(y - y2) < 1 THEN dx = dx2 dy = dy2 ELSEIF ABS(x - x3) < 1 AND ABS(y - y3) < 1 THEN dx = dx3 dy = dy3 ELSEIF ABS(x - x1) < 1 AND ABS(y - y1) < 1 THEN dx = dx1 dy = dy1 END IF LOOP WHILE INKEY$ = "" END
Объяснение кода листинга программы
- Задаются размеры и расположение треугольника с помощью ввода координат вершин A(x1,y1), B(x2,y2), C(x3,y3).
- Вычисляются длины сторон треугольника и их нормали (направления) ex1, ey1, ex2, ey2, ex3, ey3.
- Вычисляются длины отрезков между вершинами и их серединами s1, s2, s3.
- Вычисляются координаты середины отрезка между вершинами dx1, dy1, dx2, dy2, dx3, dy3.
- Устанавливаются начальные координаты для движения точки (x,y) равными координатам одной из вершин, например, A(x1,y1).
- Задается основной цикл, который выполняет два действия: а) перемещает точку по контуру треугольника, меняя направление движения каждый раз, когда точка достигает одной из вершин; б) рисует линии между вершинами треугольника.
- Условие для цикла: повторять цикл, пока не будет нажата клавиша.
- Код не завершается, пока выполняется условие цикла.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д