кто нибудь скажите как сделать качение по поверхности+падение если земли нет.есть коефицент трения.если можно,то с кодом на tp7
Bokul
5.11.2006 3:15
mamont001, можешь как-то внятней описать проблему? Как это "качения по поверхности если земли нет"? И про знаки пунктуации, пожалуйста, тоже не забывай.
mamont001
5.11.2006 3:28
есть некоторый обект (пиксель) ,который после толчка катится по поверхности.Поверхность не является прямой линией,поетому пиксель падает вниз икатится дальше
Archon
5.11.2006 4:55
Как задана поверхность?
Лично я бы задал функцией y=f(x). Тогда f'(x) = tg(alpha) - тангенс угла наклона касательной в данной точке поверхности. C его помощью находим направленную вдоль этой касательной составляющую силы тяжести. Отсюда ускорение.
Теперь практика: 1. Вместо силы тяжести сразу берём ускорение свободного падения. Не в м/с, а в пикселах в секунду, сколько понравится.
2. alpha=arctg(f'(x)) a=sin(alpha)*g a_x=cos(alpha)*a a_y=sin(alpha)*a Где a - ускорение, направленное по касательной к поверхности; a_x, a_y - горизонтальная и вертикальная составляющие ускорения
3. a_y считать не надо, т. к. y мы уже знаем (y = f(x)).
4. Для ускорения вычислений можно в двух массивах хранить заранее расчитанные для каждого x значения f(x) и a_x(x).
Bokul
5.11.2006 7:35
Если я правильно понял задачу, то вот имитация для поверхности в виде прямой горки или для земли, при l=0, или же для падения, при l=90.
uses crt, graph; { $define text}// убери пробел перед "$" для текстового вывода { $define graph}// убери пробел перед "$" для графической имитации const v0=100; //начальная скорость g=10; // сила тяжести k=0.2; //коэффициент трения l=40; //угол подъёма горки radius=8; //радиус шарика xb=0; //начальное положения шарика yb=0; shag=0.05; //квант времени, за объяснениям - http://forum.pascal.net.ru/index.php?showtopic=12821 var r,x,y,v,a:double;
function rad(q:real):real; begin rad:=q/360*2*pi; end;
procedure calculation(t:real); begin if v>0 then a:=g*(-cos(rad(l))*k-sin(rad(l))) else a:=g*(cos(rad(l))*k-sin(rad(l)));