Показать сообщение отдельно
Старый 17.08.2012, 21:37   #3
AVL
Разработчик
 
Регистрация: 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.
Вложения
Тип файла: zip TEST_PROJECT.jar.zip (7.8 Кб, 475 просмотров)
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
cahekp (18.08.2012)