В общем нужно по быстрому сделать что-то вроде демонстрации. Времени писать такую штуку нету, вернее оно есть, но до мая боюсь не успеть. Короче нужно чтобы было трение, скольжение, соударение, масса, вязкость(в среде), архимедова сила, учет ускорения\скорости, сложение сил, импульсов и тп. В общем всё по ньютону.
Есть алгорит моделируищий матрицу шариков соединёные пружинами. Типа так. Код (Text): +-+-+-+ | | | | +-O-O-+ | | | | +-O-O-+ | | | | +-+-+-+ Мышкой можно возмущать шарики и смотреть как возмущения другим шарикам передаётся.
Блин чота намудрил ширики вдруг все в угол экрана все падают во прикол. Хотя должны просто вибрировать, и они же на пружинах. Короче если у кого алгоритм этих долбаных шариков на пружинах, интерфейс я проги то сделал, так что нужна только модель.
Короче просто накасячил с прогой, сам алгоритм верный. Код (Text): procedure StepModel; var x, y, Xs, Ys, N : integer; Ax, Ay, A, Rx, Ry, Vx0, Vy0, R : real; begin for y:=1 to Kl do for x:=1 to Kl do begin Ax:=0;Ay:=0; for N:=1 to 4 do begin Xs:=x+Sx[N];Ys:=y+Sy[N]; Rx:=Kx[x,y]-Kx[Xs,Ys]; Ry:=Ky[x,y]-Ky[Xs,Ys]; R:=Sqrt(Rx*Rx+Ry*Ry); A:=KnaM*(R-DP); Ax:=Ax+A*Rx/R; Ay:=Ay+A*Ry/R; end; Vx0:=Vx[x,y]+Ax*Dt; Vy0:=Vy[x,y]+Ay*Dt; Kx1[x,y]:=Kx[x,y]+(Vx[x,y]+Vx0)/2*Dt; Ky1[x,y]:=Ky[x,y]+(Vy[x,y]+Vy0)/2*Dt; Vx1[x,y]:=Vx0; Vy1[x,y]:=Vy0; end; Kx:=Kx1; Ky:=Ky1; Vx:=Vx1; Vy:=Vy1; end; то MEPOX Если надо, то могу все исходиники на делфи скинуть. ЗЫ А чо херь с делфи, берёт и сам по себе в счётчиках задом наперёд считает. Надо что бы ++ а он --.
>>А чо геррь с делфи, берёт и сам по себе в счётчиках задом наперёд считает. Надо что бы ++ а он --. Так очевидно же. Приводит к loop виду. Если я конечно правильно понял о чем ты. >>Если надо, то могу все исходиники на делфи скинуть. Скинь\залей, если не в лом.
Вот они на делфи 6, хотел через API но не получилось, так же не получилось от мерциния избавится, так что над прогой надо бы поработать. Хотя и так она работает. Ещё забавно, если слишком задать большую жесткость пружин KnaM =-5 например, то при возмущении, через не которой время шарики на стока разлетаются, что прога вылетает (переполнения) резонанс что ли. Хотя модель верная но только трения не учитывается, но это можно исправить.
Суть в чем? А -- работа? K это типа жесткость, а V скорость. Только всё равно не пойму что откуда упало. Очевидно ты по формулам считаешь, не понятно только откуда у тебя направление падает. Или ты считаешь по горизонтальным и вертикальным составляющим?
А это ускорения, КнаМ это жесткость делёная на массу, DP это длина пружины, трение не учитывается, так что формула A:=KnaM*(R-DP); вычистляет какому воздействию подвергается шарик и суммирует по четырём пружинам. Короче для более точной модели надо ещё трения учитывать в зависимости от скорости шариков (пропорцианально квадрату скорости). ЗЫ Что избавится от мерцания на Image1 заменить на PaintBox1 и пользоваться буфером.