خورزميات محاكات حركة السيارة
الجزء الثاني : القسم التطبيقي
هذه الفيديو هي عبارة عن هيكل لسيارة تبرز اهمية المعدلات التفاضلي لحساب مسار الدواليب االمرسومة بالخطوط الحمراء كما تلاحضون و التحكم على التسارع و اتجهاه المقود عن كريق الضغط على الزر
ملاحضة : هذا البرنامج مكتوب بلغة الجافا على هاتفي النقال و تم تطوير في اوقات الفراغ في المقهى.
void motion(float dt) {
v+=a*dt;
v*=0.995;
phiA+=v/RA*dt;
phiB+= v/(RB*abs(cos(wtheta)))*dt;
omega = v*tan(wtheta)/D;
phi+= omega*dt;
AB.x=abx*cos(phi)-aby*sin(phi);
AB.y=abx*sin(phi)+aby*cos(phi);
float stepa= v/D*dt;
float stepb= omega*dt;
AR.x+=stepa*AB.x;
AR.y+=stepa*AB.y;
AL.x+=stepa*AB.x;
AL.y+=stepa*AB.y;
BR.x+= stepa*AB.x-stepb*AB.y;
BR.y+= stepa*AB.y+stepb*AB.x;
BL.x+= stepa*AB.x-stepb*AB.y;
BL.y+= stepa*AB.y+stepb*AB.x;
rot(AL,(AL.x+AR.x)/2,(AL.y+AR.y)/2,omega*dt);
rot(AR,(AL.x+AR.x)/2,(AL.y+AR.y)/2,omega*dt);
rot(BL,(BL.x+BR.x)/2,(BL.y+BR.y)/2,omega*dt);
rot(BR,(BL.x+BR.x)/2,(BL.y+BR.y)/2,omega*dt);
G.x=(AL.x+AR.x+BL.x+BR.x)/4;
G.y=(AL.y+AR.y+BL.y+BR.y)/4;
al.add(new PVector(AL.x,AL.y,0));
ar.add(new PVector(AR.x,AR.y,0));
br.add(new PVector(BR.x,BR.y,0));
bl.add(new PVector(BL.x,BL.y,0));
float fx= v*v/D*tan(wtheta);
float fz= 10;
alpha = 0.05*atan(fx/fz);
}