2015-01-02 3 views
0

У меня есть мяч с этими двумя уравнениями: x (t) = v0 * cos (α) * t и y (t) = h + v0 * sin (α) * t- 1/2 g t^2, где t ∈ [0, t финал] - это временная переменная, h - высота, v0 - начальная скорость, α - угол, созданный v0 с горизонтали, g = 9,8 м/s^2. Пол находится в точке y (x) = 0.Анимация мяча в Matlab

Мне нужно нарисовать небольшую анимацию шара, движущегося по сюжету. Теперь я должен использовать, сюжет, спрятать, но я не знаю, как это сделать.

Можете ли вы рассказать мне, как обзавестись этой анимацией?

+0

Для более более продвинутую версию с помощью численного интегрирования с обнаружения событий, см [ 'ballode'] (HTTP: //www.mathworks.com/help/matlab/math/ordinary-differential-equations.html?refresh=true#f1-669698). Введите 'edit ballode' в свое командное окно. Вам нужно немного настроить анимацию в соответствии с вашими потребностями. – horchler

ответ

2

Во-первых, вот некоторые тестовые переменные, чтобы начать с, в том числе ускорение силы тяжести:

g = 9.8; %// m/s^2 
v0 = 2; %// m/s 
alpha = pi/6; %// Radians 
h = 30; %// Start at 30 metres 
t_final = 4.5; %// Seconds 
t_vector = 0 : 0.01 : t_final; 

t_vector в последней строке кода не создает вектор точек из начального времени t = 0 вплоть до наших время окончания с шагом 0,01. С учетом этого наша задача состоит в том, чтобы пройти каждый из этих точек в нашем векторе и построить наш шар. Далее, давайте создавать анонимные функции для каждого x и y, чтобы сделать наше черчения проще:

x = @(t) v0*cos(alpha)*t; 
y = @(t) h + v0*sin(alpha)*t - 0.5*g*t.^2; 

Что вы можете делать дальше использовать for петли и пройти каждое значение t_vector вплоть до t_final и построить индивидуальную точку. Вы, вероятно, следует сделать пункт большой, так что мы можем увидеть, что мяч выглядит следующим образом:

close all; 
figure; hold on; 
for t = t_vector 
    plot(x(t), y(t), 'b.', 'MarkerSize', 16); 
    axis([0 t_final 0 h]); 
    pause(0.01); 
end 

Приведенный выше код будет первым закрыть все цифры, мы имеем открытое, породит новую figure и использовать hold on так, что мы можем назвать plot несколько раз и добавлять точки к графику, не стирая каждый раз. Затем для каждого момента времени мы определяем местоположение на графике как синюю точку, а затем делаем размер точки 16. Мы также следим за тем, чтобы ось автоматически не корректировала себя, применяя значения x между t = 0 до t = t_final. Мы также ограничиваем значения y от y = 0 до начальной начальной высоты, что составляет 30 в моем примере. В каждой точке мы останавливаемся на 0,01 мс, чтобы вы могли видеть рисунок точек.

В качестве бонуса, это то, что эта цифра выглядит как анимированные gif:

enter image description here

+0

безупречный. спасибо и счастливый 2015! – 3abcDEF3

+0

Только что получил флэшбэк [Scorched Earth] (http://i.imgur.com/ow48h3E.png). Ницца! – chappjc

+0

@ 3abcDEF3 мое удовольствие! Это было весело. Удачи! – rayryeng

Смежные вопросы