Расчет начальных координат объектов Raketa и Sputuik
Алгоритмизация и программирование управления моментом старта и вектором скорости ракеты; перехват спутника, летящего по круговой орбите. Вычисление команды на перемещение объекта Raketa и координат объекта Sputnik; реализация контакта между объектами.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 14.02.2014 |
Размер файла | 17,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство образования Российской Федерации
АНО
Международный институт «ИНФО-Рутения»
Московский государственный институт стали и сплавов
Курсовая работа
по курсу: Алгоритмизация и программирование
Тема:
Расчет начальных координат объектов Raketa и Sputuik
г. Боровичи
Задание
Перехват спутника ракетой. Спутник летит по круговой орбите слева направо. Ракета стартует из левого нижнего угла экрана. Управление моментом старта и вектором скорости ракеты (скорость постоянна)
Ракета стартует из левого нижнего угла экрана. Спутник летит слева направо, начиная с левого верхнего угла экрана по круговой орбите с центром в левом нижнем углу экрана и радиусом равным высоте экрана. Спутник изображен в виде вытянутого треугольника. Ракета имеет рисунок в форме стрелки и управляется под действием нажатия стрелок (LEFT или RIGHT - поворот влево или вправо). При контакте (определяется по расстоянию между объектами) спутник распадается на фрагменты в виде кружков.
DECLARATE SUB comm (vs, da, ar, com$)
вычисление команды на перемещение объекта Raketa
DECLARATE SUB coord (v, ar, dt, x, y)
вычисление новых координат объекта Raketa
DECLARATE SUB angle (ar, ang$)
вычисление угла разворота объекта Raketa
DECLARATE SUB Raketa (d$, x, y, ang$, ar, xc.yc, r, st)
перемещение объекта Raketa
DECLARATE SUB coord (x1, y1, t, dt, vx, vy, ang1$)
вычисление новых координат объекта Sputnik
DECLARATE SUB Sputnik (x1, y1, st, do$, ang1$)
перемещение объекта Sputnik
DECLARATE SUB contact (xc, yc, st, x1, y1)
реализация контакта между объектами
SCREEN 9. WINDOWS (0, 0)-(800, 600). COLOR, 1
назначение синего цвета фона
t = 0: dt = 1
назначение отсчета текущего времени t интервалом dt
х = 0: у = 0
назначение начальной точки рисования объекта Raketa
v=10: vs=0
значение скорости ракеты постоянно и интервал изменения скорости равен нулю
ar=-1.5708: da=.15
начальное значение угла разворота ar объекта Raketa в радианах и интервал изменения угла da
d$ = “bu20 e15 r5 f15 d20 y17 g17 u20 br5
макет рисунка объекта Raketa (строка оператора DRAW без символов закрашивания фигуры)
х1 = 0: y1=600
начальные координаты спутника
ar1 = -1.5708: da1 =.1
начальное значение угла ar1 расположения объекта Sputnik в радианах и величины изменения угла da1 при перемещении объекта Sputnik за 1 цикл
vx = 5: vy = 0
начальное значение компонент вектора скорости объекта Sputnik
do$ = “u10 m+59,10 m-50,10 u10 br5”
макет рисунка объекта Sputnik
r = 100
константа для вычисления контрольной точки контакта объектов
sr = 0
флаг, принимающий значение 1 при наличии контакта DO
начало цикла движения объектов
t = t + dt
счетчик времени
i = i + 1
счетчик цикла
angl = da1 * i
расчет угла поворота объекта Sputnik
x1 = -600 * sin (ang1)
y1 = 600 * cos (ang1)
расчет новых координат объекта Sputnik
vy = 5 * sin (ang1)
vx = -5 * cos (ang1)
расчет текущих значений вектора скорости объекта Sputnik
CALL comm(x1, y1, t, dt, i, vx, vy, ang1$)
расчет координат объекта Sputnik
CALL comm(vs, da, v, ar, com$)
определение команды на перемещение объекта Raketa (переменной com$ присваивается символ нажатой клавиши)
CALL coord(v, ar, dt, x, y)
расчет новых координат объекта Raketa
CALL angle(ar, ang$)
расчет угла разворота объекта Raketa
CALL ракета (d$, x, y, ang$, ar, xc, yc, r, st)
перемещение рисунка объекта Raketa
IF com$ = “s” OR st > 0 THEN EXIT DO
окончание работы программы (выход из цикла DO-LOOP) производится по одному из двух условий: либо нажата клавиша s, либо st = 1 (что означает наличие контакта)
CALL contact (xc, yc, st, x1, y1)
вычисление условий контакта путем сравнения координат контрольной точки (хс, ус) объекта Raketa и координат начальной точки рисования (xl, yl) объекта Sputnik
LOOP
конец цикла движения объектов
END
SUB angle (ar, ang$)
пересчет угла в радианах аr в угол в градусах ang$, требуемый оператором DRAW
pi = 3.1415
число р
ad = INT(ar * 180 / pi)
угол в градусах в числовой форме
ad$ = $(ad)
угол в градусах в символьной форме
IF ad >= 0 THEN adS = "+" + LTRIM$(RAK$(ad))
при положительном угле символ «+» будет отсутствовать, а он нужен в строке оператора DRAW, поэтому он добавляется
ang$ = "ta" + ad$
формирование фрагмента строки оператора DRAW END SUB
SUB comm (vs, da, v, ar, com$)
pi2 = 6.2830 - число 2р
FOR i = l TO 1000
старт скорость ракета перехват спутник
замедляющий цикл, необходимый для того, чтобы нажатая клавиша была принята оператором INKFY$. Если не нажата ни одна клавиша, значение переменной соm$ равно пустой строке и движение объекта «Ракета» продолжается со старыми значениями параметров v и аг
com$ = INKEY;: IF com; <> "" THEN EXIT FOR
NEXT i
IF RIGHTS(com$, I) = "M" THEN ar = ar - da
нажата клавиша RIGHT, угол уменьшился
IF RIGHTS(com$, 1) = "К" THEN ar = ar + da
нажата клавиша LEFT, угол увеличился
IF ar > pi2 THEN ar = ar - pi2
контролируется полный оборот, так как значение угла не может превышать 2р по модулю
IF ar < -pi2 THEN ar = ar + pi2 IF v > 0 THEN SOUND 37 + v * 500, .1
при увеличении скорости увеличивается частота сопровождающего звука. END SUB
SUB contact (хс, ус, st, xl, yl
расчет условия контакта
DIM xo(10), yo(10), dxo(10), dyo(10)
dist = SQR((x 1 - хс)^2 + (yl - ус)^2)
расчет расстояния между объектами
IF dist < 50 THEN
при расстоянии меньше 50 пикселов фиксируется контакт (флаг st равен. единице) st = 1
RANDOMIZE TIMER
FOR i = l TO 10
расчет начальных координат фрагментов объекта Sputuik
xo(i) = x1: yo(i) = yl
dxo(i) = 10 * RND: dyo(i) = 20 * RND
NEXT i
DO
FOR i=l TO 10
изображение фрагментов в виде разлетающихся белых кружков радиуса 5 пикселов (приращения координат их центров случайны, поэтому каждый кружок перемещается в своем направлении)
xo(i) = xo(i) + dxo(i): yo(i) = yo(i) + dyo(i)
CIRCLE (xo(i), yo(i)), 5
NEXT i
LOOP WHILE xo(1) < 1000 OR yo(1) < 750
движение фрагментов прекращается, когда первый фрагмент достигнет границы экрана
END IF
END SUB
SUB coord (v, ar, dt, x, y)
координаты х и у объекта Raketa рассчитываются по законам механики
dx = -v * SIN(ar) * dt: dy = v * COS(ar) * dt
x = x + dx: у = у + dy
END SUB
SUB coord 1 (xl, yl, t, dt, i, vx, vy, angl$)
расчет координат движения объекта Sputnik х1 и у1 (рассчитываются
по законам механики)
x1 = 600 * sin (ang1)
y1 = 600 * cos (ang1)
рассчитываются координаты объекта Sputnik
vy = 5 * SIN(ang1)
vx = 5 * COS(ang1)
расчет текущих значений вектора скорости угол разворота фигуры спутника равен ang1 за i циклов объекта
Sputnik
angl$ = "ta" + ad$
формирование фрагмента строки для оператора DRAW. END SUB
SUB RAKETA (d$, x, y, ang$, ar, xc, yc, r, st)
рисунок объекта RAKETA
PRESET (x, y)
фиксация точки начала рисования
figpnt$ = "сЗ" + ang$ + d$ + "p5,3 b15"
формирование строки рисунка (строка собрана из символа цвета 3, угла разворота, макета рисунка, символов внутренней окраски)
DRAW figpnt$
рисование фигуры объекта RAKETA
PRESET (x, y)
вторичная фиксация начальной точки (необходима, так как последняя точка рисунка может не совпасть с начальной точкой -- а от нее рассчитываются координаты нового положения фигуры)
FOR i = l TO 30000: NEXT i
замедляющий цикл позволяет задержать изображение объекта на время, необходимое для глаза, перед тем, как стереть его
figdel$ = "с0" + d$ + "р0,0 b15"
формирование строки оператора DRAW для стирания фигуры объекта (рисование цветом фона - при указании цвета ноль оператор DRAW воспринимает цвет фона, каким бы он не был назначен в операторе COLOR)
DRAW figdel$
стирание объекта RAKETA
PRESET (x, у)
возвращение начальной точки dar = 1.27
угол в радианах, необходимый для расчета координат контактной точки (хс, ус) (эта точка находится прямо по курсу объекта перед ним на близком расстоянии - сделано это по той причине, что точка с координатами (х, у) находится в хвосте и неудобно по ней фиксировать контакт)
хс = х + r * COS(ar + dar): ус = у + r * SIN(ar + dar)
расчет координат хс и ус
PSET (х, у) ставится точка белым цветом, которая не стирается и изображает шлейф от движения объекта
IF st > 0 THEN DRAW figpnt$
восстановление рисунка объекта, который в момент контакта оказывается стертым. END SUB
SUB Sputnik (xl, yl, st, do$, angl$)
рисунок объекта Sputnik
IF st = 0 THEN
PRESET (xl,yl)
фиксация начальной точки рисования
figpnt$ = "с12" + angl$ + do$ + "p14,12 b15"
формирование строки оператора DRAW с окраской и заданным углом разворота
DRAW figpnt$
рисование фигуры объекта Sputnik PRESET (xl.yl), возврат начальной точки
OR i = 1 ТО 30000: NEXT i
замедляющий цикл для фиксации объекта на экране
figdel$ = "с0" + do$ + "р0,0 b15"
формирование строки стирания объекта Sputnik
DRAW figdel$
стирание объекта Sputnik
PRESET (xl, yl)
возврат начальной точки (если ее не возвращать, то может появиться эффект размазывания фигуры объекта)
END IF
END SUB
Размещено на Allbest.ru
Подобные документы
Определение параметров кеплерова эллипса, являющегося траекторией невозмущенного движения спутника. Вычисление переменных величин, характеризующих спутник на орбите в момент отключения двигателей. Разработка программы, моделирующей перемещение спутника.
курсовая работа [667,5 K], добавлен 25.12.2013Визуальная среда моделирования в масштабе реального времени, типичные проблемы разработки робототехнических систем. Описание среды Apartment Environment, перемещение камеры по осям координат. Описание системы координат и алгоритма перемещения объектов.
контрольная работа [2,1 M], добавлен 20.09.2010Проект графического приложения, управляющего движением объекта в форме круга с заданным диаметром. Описание языка программирования С#. Его достоинства и недостатки. Разработка математической модели траектории движения объекта с учетом уменьшения скорости.
курсовая работа [1,4 M], добавлен 25.02.2015Поведение идентификации термического объекта исследования, компьютерного моделирования объекта по полученной математической модели. Расчет переходных характеристик замкнутой системы автоматического управления, а также анализ ее устойчивости и качества.
дипломная работа [1,8 M], добавлен 17.09.2011Фрагментарная обработка больших объектов в мультимедийных базах данных (прямой доступ к отдельным фрагментам хранимого объекта). Двухуровневое разбиение полей большого размера. Древовидное представление данных. Части объекта, определяемые поддеревом.
презентация [93,4 K], добавлен 11.10.2013Основы программирования графики на языке Паскаль. Способы решения графических программ и рекомендации к их решениям. Связь между декартовой и полярной системами координат. Алгоритм переноса объекта. Построение фракталов, классической пыли Кантора.
курсовая работа [3,3 M], добавлен 24.04.2013Создание программы для обучения пользователя пониманию и нахождению координат точки на координатной плоскости. Обоснование этапов обработки информации, общая концепция программы "Декартовая система координат", определение ее состава и структуры.
курсовая работа [1,3 M], добавлен 20.10.2022Разработка алгоритма, который может выполнить расчет определения координат точек кинематической схемы и выполнить анимацию (визуальное отображение перемещений объектов) кинематической схемы с использованием пакета MathCad. Расчет кинематической схемы.
курсовая работа [1,1 M], добавлен 10.07.2012Разработка теории и методики преподавания раздела "Алгоритмизация и программирование" в школьном курсе информатики. Методические проблемы изучения алгоритмов работы с величинами. Требования к знаниям учащихся по линии алгоритмизации и программирования.
курсовая работа [70,2 K], добавлен 09.07.2012Идентификация моделей каналов преобразования координатных воздействий объекта управления. Реализация моделей на ЦВМ и их адекватность. Формулирование задач управления, требований к их решению и выбор основных принципов построения автоматических систем.
курсовая работа [1,4 M], добавлен 10.04.2013