Сформировать точку, движущуюся по контуру треугольника с заданными размерами и расположением - QBasic

Узнай цену своей работы

Формулировка задачи:

Собственно сабж в заголовке. Прошу помощи

Решение задачи: «Сформировать точку, движущуюся по контуру треугольника с заданными размерами и расположением»

textual
Листинг программы
  1. DEFSNG D-E, S, X-Y
  2. DEFLNG I
  3. CLS
  4. INPUT "Vvedite A(x,y)"; x1, y1
  5. INPUT "Vvedite B(x,y)"; x2, y2
  6. INPUT "Vvedite C(x,y)"; x3, y3
  7. ex1 = x2 - x1
  8. ey1 = y2 - y1
  9. s1 = SQR(ex1 ^ 2 + ey1 ^ 2)
  10. dx1 = ex1 / s1
  11. dy1 = ey1 / s1
  12.  
  13. ex2 = x3 - x2
  14. ey2 = y3 - y2
  15. s2 = SQR(ex2 ^ 2 + ey2 ^ 2)
  16. dx2 = ex2 / s2
  17. dy2 = ey2 / s2
  18.  
  19. ex3 = x1 - x3
  20. ey3 = y1 - y3
  21. s3 = SQR(ex3 ^ 2 + ey3 ^ 2)
  22. dx3 = ex3 / s3
  23. dy3 = ey3 / s3
  24.  
  25. dx = dx1
  26. dy = dy1
  27. x = x1 + dx
  28. y = y1 + dy
  29.  
  30. SCREEN 12
  31.  
  32. LINE (x1, y1)-(x2, y2), 1
  33. LINE (x2, y2)-(x3, y3), 1
  34. LINE (x3, y3)-(x1, y1), 1
  35.  
  36. DO
  37.    x = x + dx
  38.    y = y + dy
  39.    PSET (x, y), 14
  40.    FOR i = 1 TO 300000: NEXT i
  41.    PSET (x, y), 1
  42. IF ABS(x - x2) < 1 AND ABS(y - y2) < 1 THEN
  43.    dx = dx2
  44.    dy = dy2
  45. ELSEIF ABS(x - x3) < 1 AND ABS(y - y3) < 1 THEN
  46.    dx = dx3
  47.    dy = dy3
  48. ELSEIF ABS(x - x1) < 1 AND ABS(y - y1) < 1 THEN
  49.    dx = dx1
  50.    dy = dy1
  51. END IF
  52.  
  53. LOOP WHILE INKEY$ = ""
  54. END

Объяснение кода листинга программы

  1. Задаются размеры и расположение треугольника с помощью ввода координат вершин A(x1,y1), B(x2,y2), C(x3,y3).
  2. Вычисляются длины сторон треугольника и их нормали (направления) ex1, ey1, ex2, ey2, ex3, ey3.
  3. Вычисляются длины отрезков между вершинами и их серединами s1, s2, s3.
  4. Вычисляются координаты середины отрезка между вершинами dx1, dy1, dx2, dy2, dx3, dy3.
  5. Устанавливаются начальные координаты для движения точки (x,y) равными координатам одной из вершин, например, A(x1,y1).
  6. Задается основной цикл, который выполняет два действия: а) перемещает точку по контуру треугольника, меняя направление движения каждый раз, когда точка достигает одной из вершин; б) рисует линии между вершинами треугольника.
  7. Условие для цикла: повторять цикл, пока не будет нажата клавиша.
  8. Код не завершается, пока выполняется условие цикла.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.7 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы