Сформировать точку, движущуюся по контуру треугольника с заданными размерами и расположением - 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).
- Задается основной цикл, который выполняет два действия: а) перемещает точку по контуру треугольника, меняя направление движения каждый раз, когда точка достигает одной из вершин; б) рисует линии между вершинами треугольника.
- Условие для цикла: повторять цикл, пока не будет нажата клавиша.
- Код не завершается, пока выполняется условие цикла.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д