17.08.2012, 21:37
|
#3
|
Разработчик
Регистрация: 27.01.2011
Адрес: Афипский
Сообщений: 419
Написано 100 полезных сообщений (для 182 пользователей)
|
Ответ: "Пружинистое" движение
А если решать "в лоб"? У шарика есть масса, скорость; у невидимой пружины - коэффициент жесткости; при растяжении она придает синему шарику ускорение.
UPD: Реализовал на мидлетпаскале:
uses sensor;
type
ball = record
x,y,r:integer;
m,vx,vy:real;
end;
procedure draw_ball(b:ball);
begin
fillellipse(b.x-b.r,b.y-b.r,b.r*2,b.r*2);
end;
var
b1,b2:ball;
fx,fy,k,lx,ly:real;
begin
sensor.init;
k:=1;
b1.r:=20;
b2.x:=0; b2.y:=0; b2.m:=100; b2.vx:=0; b2.vy:=0; b2.r:=10;
repeat
b1.x:=pointer_dragged_x;
b1.y:=pointer_dragged_y;
lx:=b1.x-b2.x;
ly:=b1.y-b2.y;
fx:=lx*k;
fy:=ly*k;
b2.vx:=b2.vx+(fx/b2.m);
b2.vy:=b2.vy+(fy/b2.m);
b2.x:=b2.x+trunc(b2.vx);
b2.y:=b2.y+trunc(b2.vy);
b2.vx:=b2.vx*0.95;
b2.vy:=b2.vy*0.95;
setcolor(255,255,255);
fillrect(0,0,getwidth,getheight);
setcolor(255,0,0);
draw_ball(b1);
setcolor(0,0,255);
draw_ball(b2);
repaint;
delay(10);
until false;
end.
|
(Offline)
|
|