IPB
ЛогинПароль:

 
 Ответить  Открыть новую тему 
> ефект 'колобка', помогите
сообщение
Сообщение #1


Вожак стада
***

Группа: Пользователи
Сообщений: 179
Пол: Мужской
Реальное имя: кирилл

Репутация: -  1  +


кто нибудь скажите как сделать качение по поверхности+падение если земли нет.есть коефицент трения.если можно,то с кодом на tp7


--------------------
Админ наш,
Иже еси на серверах!
Да святится имя Твое,
Да приидет Unix Твой,
Да будет воля Твоя,
Как на земле , так и на небе.
Пинг наш насущный дай нам на сей день;
И прости нам счета наши, как и мы оставляем их должникам нашим;
И не введи нас во искушение виндовое,
Но избавь нас от лукавого Билли.
И да пребудет с нами сила твоя великая,
Во имя Отца-админа, Сына-Пингвина, и духа мастдайного. Админь!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


mamont001, можешь как-то внятней описать проблему? Как это "качения по поверхности если земли нет"? И про знаки пунктуации, пожалуйста, тоже не забывай.


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Вожак стада
***

Группа: Пользователи
Сообщений: 179
Пол: Мужской
Реальное имя: кирилл

Репутация: -  1  +


есть некоторый обект (пиксель) ,который после толчка катится по поверхности.Поверхность не является прямой линией,поетому пиксель падает вниз икатится дальше


--------------------
Админ наш,
Иже еси на серверах!
Да святится имя Твое,
Да приидет Unix Твой,
Да будет воля Твоя,
Как на земле , так и на небе.
Пинг наш насущный дай нам на сей день;
И прости нам счета наши, как и мы оставляем их должникам нашим;
И не введи нас во искушение виндовое,
Но избавь нас от лукавого Билли.
И да пребудет с нами сила твоя великая,
Во имя Отца-админа, Сына-Пингвина, и духа мастдайного. Админь!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Профи
****

Группа: Пользователи
Сообщений: 618
Пол: Мужской

Репутация: -  24  +


Как задана поверхность?

Лично я бы задал функцией 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).


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Если я правильно понял задачу, то вот имитация для поверхности в виде прямой горки или для земли, при 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)));

v:=v+a*shag;
r:=r+v*shag;
x:=xb+cos(rad(l))*r;
y:=yb+sin(rad(l))*r;
end;

procedure show;
begin
setcolor(red);
circle(trunc(x),trunc(480-y),radius);
end;

procedure hide;
begin
setcolor(black);
circle(trunc(x),trunc(480-y),radius);
end;

var t:real;
grDriver : Integer;
grMode : Integer;
Begin
{$ifdef graph}
grDriver:=Detect;
InitGraph(grDriver, grMode, '');
{$endif}
t:=0;
v:=v0;
r:=0;
while not keypressed do
begin
t:=t+shag;
calculation(t);
{$ifdef graph}
show;
delay(1);
hide;
{$else}
writeln('x = ',x+xb:0:2);
writeln('y = ',y+yb:0:2);
writeln('a = ',a:0:2);
writeln('v = ',v:0:2);
writeln('t = ',t:0:2);
delay(50);
clrscr;
{$endif}

end;
end.




--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Вожак стада
***

Группа: Пользователи
Сообщений: 179
Пол: Мужской
Реальное имя: кирилл

Репутация: -  1  +


Конечно не совсем то что я хотел,но принцип понял


--------------------
Админ наш,
Иже еси на серверах!
Да святится имя Твое,
Да приидет Unix Твой,
Да будет воля Твоя,
Как на земле , так и на небе.
Пинг наш насущный дай нам на сей день;
И прости нам счета наши, как и мы оставляем их должникам нашим;
И не введи нас во искушение виндовое,
Но избавь нас от лукавого Билли.
И да пребудет с нами сила твоя великая,
Во имя Отца-админа, Сына-Пингвина, и духа мастдайного. Админь!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 13.11.2024 19:01
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name