2021-02-08T20:58:43

Движение мяча: текстуры, вращение, сопротивление воздуха

Просмотров: 82 • 08.02.2021
3 1

Компьютерная модель движения тела под действием силы тяжести
--------------------------------
Литература по теме:
1. 3D графика в PascalABC.NET - возможности модуля Graph3D
http://pascalabc.net/downloads/Presentations/Tutorials/Graph3D.pdf
2. Майер Р.В. Компьютерное моделирование. Глава 2. НЕПРЕРЫВНО-ДЕТЕРМИНИРОВАННЫЕ МОДЕЛИ ДИНАМИЧЕСКИХ СИСТЕМ С КОНЕЧНЫМ ЧИСЛОМ СТЕПЕНЕЙ СВОБОДЫ
http://maier-rv.glazov.net/KM/Mayer_Komp_mod2.pdf
---------------------------------
Теория по теме:
Численное интегрирование методом Эйлера
https://youtu.be/ZZ4_GyeB6PM
---------------------------------
Примеры текстур:
1. Текстура мяча
http://blender3d.org.ua/forum/beginner/iwe/upload/10120974_2.jpg
2. Текстуры кирпичных стен:
https://clipart-db.ru/catalog/texture-brick/
---------------------------------
Листинг программы:
---------------------------------
? - заменяет символы "больше" и "меньше" соответственно (ограничение YouTube на символы в комментариях видео)
---------------------------------
uses graph3D;
const rad = 1;
dt = 0.001;
k = 0.1; // Коэффициент сопротивления воздуха
var x,y,z : real; // Координаты
vx,vy,vz: real; // Проекции скорости
ax,ay,az: real; // Проекции ускорения
collision : boolean;
alpha : real; //угол поворота

begin
View3D.ShowGridLines:=False;
view3d.ShowViewCube:=False;
view3d.Title:='Модель движения мяча';

// Начальные координаты
x:=0;
y:=0;
z:=10;
// Начальные скорости
vx:=10;
alpha:=1;
var s:=Sphere(x,y,z,rad,ARGB(255,255,255,255));
s.Material:=ImageMaterial('ball.jpg',1,1);
var rect1:=Rectangle3D(0,0,0,20,10,V3D(0,0,1),V3D(1,0,0),ARGB(255,0,100,0));
var rect2:=Rectangle3D(10,0,5,10,10,V3D(-1,0,0),V3D(0,0,1),ARGB(50,0,0,200));
rect2.Material:=ImageMaterial('bricks.jpg',1,1);
var rect3:=Rectangle3D(-10,0,5,10,10,V3D(1,0,0),V3D(0,0,1),ARGB(50,0,0,200));
rect3.Material:=ImageMaterial('bricks2.jpg',1,1);
repeat
// Проекции ускорения
ax:=-k*vx;
ay:=-k*vy;
az:=-k*vz-9.8;
// Проекции скорости
vx:=vx+ax*dt;
vy:=vy+ay*dt;
vz:=vz+az*dt;
// Координаты
x:=x+vx*dt;
y:=y+vy*dt;
z:=z+vz*dt;
// Перемещаем объект
s.MoveOnX(vx*dt);
s.MoveOnY(vy*dt);
s.MoveOnZ(vz*dt);
// Вращение мяча
s.Rotate(V3D(0,0,1),5*alpha);
if collision then s.Rotate(V3D(0,1,0),alpha)
else s.Rotate(V3D(0,1,0),-alpha);
alpha:=alpha-0.0001;
if abs(alpha)?=0.01 then alpha:=0;
// sleep(1);
if z?=rad then
begin
vz:=-vz;
collision:=not(collision);
end;
if (x?=(10-rad))or(x?=(-10+rad)) then
begin
vx:=-vx;
collision:=not(collision);
end;
until z?20;
end.
#Graph3D #PascalABC #компьютерноемоделирование #силатяжести #методЭйлера
Еще

Похожие видео

Последние видео

Max Giesinger - Irgendwann ist jetzt (Offizielles Video)

Просмотров: 285 195

Добавлено: 28.02.2021

wir stellen mein zimmer um!

Просмотров: 162 518

Добавлено: 28.02.2021

Hazel und Carolin Kebekus über Karneval, Fame und Frauen in der Comedy

Просмотров: 247 174

Добавлено: 28.02.2021

Haze – KLEINER VATO (prod. by Dannemann)

Просмотров: 273 191

Добавлено: 28.02.2021

What is the Punishment for Emergency Ejection? #shorts

Просмотров: 4 223 647

Добавлено: 28.02.2021

Wenn mein Kumpel mal wieder übertreibt 😂😂😝

Просмотров: 611 149

Добавлено: 28.02.2021

Krass, ihr habt mein neues Privatauto ausgesucht! | Matthias Malmedie

Просмотров: 445 178

Добавлено: 28.02.2021

MIT WEM BIST DU ZUSAMMEN? - Frag Josef Special | Joey's Jungle

Просмотров: 1 569 968

Добавлено: 28.02.2021

Spontane Hausgeburt 😱 Die Geburt unserer Tochter! ❤️

Просмотров: 360 778

Добавлено: 28.02.2021

Terroranschlag Hanau: Ich sah meine Freunde sterben

Просмотров: 337 640

Добавлено: 28.02.2021