2016-03-17 2 views
0

поэтому мне нужно создать 10 частиц на каждый шаг в случайных положениях внутри круга, чтобы двигаться в случайных направлениях, а когда он попадает в стену основного круга, он отскакивает назад и без изменения скорости ,движущаяся частица внутри круга matlab

Я определил большой круг:

yc=0; 
rc=5; 
ang_c=0:0.01:2*pi; 
xpc=rc*cos(ang_c); 
ypc=rc*sin(ang_c); 
plot(xc+xpc,yc+ypc,'k'); 

и теперь только замышляет одну частицу:

r=0.05; 
x=rand; 
y=rand; 

ang=0:0.01:2*pi; 
xp=r*cos(ang); 
yp=r*sin(ang); 
plot(x+xp,y+yp,'b'); 

Теперь, как я получить частицу двигаться по кругу?

ответ

0

Вот набросок алгоритма

  • Определить круг (происхождение, радиус)
  • Создание массива particlePositions nParticles-на-2. Заполните его со случайными координатами, которые лежат внутри окружности
  • Участок позиции частиц, держать ручку, возвращенное plot
  • Создать массив particleSpeeds nParticles-на-2. Заполните его случайными векторами скорости (т. Е. Х- и у-компоненты). Убедитесь, что норма векторов намного меньше радиуса круга, по крайней мере, изначально.
  • Написать цикл, который обновляет позиции частиц:
    • particlePositions = particlePositions + particleSpeeds;
    • Для любой частицыпозиция будет лежать вне круга, вычислить, где частица пересекла окружность, и отразить частицу скорости для этой частицы. Это требует немного тригонометрии.
    • Обновить сюжет: set(plotHandle,'xData',particlePositions(:,1),'yData',particlePositions(:,2))
Смежные вопросы