реализации физического движка, сорц ежели можно

Тема в разделе "WASM.A&O", создана пользователем MEPOX, 29 мар 2010.

  1. MEPOX

    MEPOX New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    259
    В общем нужно по быстрому сделать что-то вроде демонстрации. Времени писать такую штуку нету, вернее оно есть, но до мая боюсь не успеть.
    Короче нужно чтобы было трение, скольжение, соударение, масса, вязкость(в среде), архимедова сила, учет ускорения\скорости, сложение сил, импульсов и тп. В общем всё по ньютону.
     
  2. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    Самый простой подход

    http://forum.boolean.name/attachment.php?attachmentid=3138&d=1185115134
     
  3. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    http://www.gamedev.ru/code/articles/PositionBasedPhysics
     
  4. MEPOX

    MEPOX New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    259
    Окей, но это я уже читал. А что ещё есть ?
     
  5. MEPOX

    MEPOX New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    259
    Просто я так понял, что у меня объекты должны "тонуть", причем с разной скоростью.
     
  6. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    Это уже ближе к гидродинамике

    http://rtfss.sourceforge.net/
     
  7. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    600
    Есть алгорит моделируищий матрицу шариков соединёные пружинами.
    Типа так.
    Код (Text):
    1. +-+-+-+
    2. | | | |
    3. +-O-O-+
    4. | | | |
    5. +-O-O-+
    6. | | | |
    7. +-+-+-+
    Мышкой можно возмущать шарики и смотреть как возмущения другим шарикам передаётся.
     
  8. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    physics.nad.ru

    там есть демки физических процессов
     
  9. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    600
    Блин чота намудрил ширики вдруг все в угол экрана все падают во прикол. Хотя должны просто вибрировать, и они же на пружинах. Короче если у кого алгоритм этих долбаных шариков на пружинах, интерфейс я проги то сделал, так что нужна только модель.
     
  10. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    600
    Короче просто накасячил с прогой, сам алгоритм верный.
    Код (Text):
    1. procedure StepModel;
    2. var x, y, Xs, Ys, N : integer;
    3.     Ax, Ay, A, Rx, Ry, Vx0, Vy0, R : real;
    4. begin
    5.   for y:=1 to Kl do
    6.    for x:=1 to Kl do
    7.      begin
    8.        Ax:=0;Ay:=0;
    9.        for N:=1 to 4 do
    10.          begin
    11.            Xs:=x+Sx[N];Ys:=y+Sy[N];
    12.            Rx:=Kx[x,y]-Kx[Xs,Ys];
    13.            Ry:=Ky[x,y]-Ky[Xs,Ys];
    14.            R:=Sqrt(Rx*Rx+Ry*Ry);
    15.            A:=KnaM*(R-DP);
    16.            Ax:=Ax+A*Rx/R;
    17.            Ay:=Ay+A*Ry/R;
    18.          end;
    19.        Vx0:=Vx[x,y]+Ax*Dt;
    20.        Vy0:=Vy[x,y]+Ay*Dt;
    21.        Kx1[x,y]:=Kx[x,y]+(Vx[x,y]+Vx0)/2*Dt;
    22.        Ky1[x,y]:=Ky[x,y]+(Vy[x,y]+Vy0)/2*Dt;
    23.        Vx1[x,y]:=Vx0;
    24.        Vy1[x,y]:=Vy0;
    25.      end;
    26.    Kx:=Kx1;
    27.    Ky:=Ky1;
    28.    Vx:=Vx1;
    29.    Vy:=Vy1;
    30.  
    31. end;
    32. то
    MEPOX
    Если надо, то могу все исходиники на делфи скинуть.
    ЗЫ
    А чо херь с делфи, берёт и сам по себе в счётчиках задом наперёд считает. Надо что бы ++ а он --.
     
  11. MEPOX

    MEPOX New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    259
    >>А чо геррь с делфи, берёт и сам по себе в счётчиках задом наперёд считает. Надо что бы ++ а он --.
    Так очевидно же. Приводит к loop виду. Если я конечно правильно понял о чем ты.
    >>Если надо, то могу все исходиники на делфи скинуть.
    Скинь\залей, если не в лом.
     
  12. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    600
    Вот они на делфи 6, хотел через API но не получилось, так же не получилось от мерциния избавится, так что над прогой надо бы поработать. Хотя и так она работает.
    Ещё забавно, если слишком задать большую жесткость пружин KnaM =-5 например, то при возмущении, через не которой время шарики на стока разлетаются, что прога вылетает (переполнения) резонанс что ли. Хотя модель верная но только трения не учитывается, но это можно исправить. :)
     
  13. MEPOX

    MEPOX New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    259
    Суть в чем?
    А -- работа? K это типа жесткость, а V скорость. Только всё равно не пойму что откуда упало. Очевидно ты
    по формулам считаешь, не понятно только откуда у тебя направление падает. Или ты считаешь по горизонтальным
    и вертикальным составляющим?
     
  14. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    600
    А это ускорения, КнаМ это жесткость делёная на массу, DP это длина пружины, трение не учитывается, так что формула A:=KnaM*(R-DP); вычистляет какому воздействию подвергается шарик и суммирует по четырём пружинам. Короче для более точной модели надо ещё трения учитывать в зависимости от скорости шариков (пропорцианально квадрату скорости).
    ЗЫ
    Что избавится от мерцания на Image1 заменить на PaintBox1 и пользоваться буфером.