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

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Человек разгоняется и прыгает в яму, Как это сделать?
Mystical
сообщение 14.12.2008 7:33
Сообщение #1


Новичок
*

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

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


Облазил весь форум и не нашел ничего подходящего. Вот сама задача:
Составить программу вывода на экран стилизованного "человека" в положении готовности осуществить прыжок в длину. При нажатии клавиши “Ввод” спортсмен осуществляет разбег и прыгает. Помогите, плиз, чем сможите.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 14.12.2008 8:35
Сообщение #2


Гуру
*****

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

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


Начинать всегда следует с того, что понять задачу.
А наиболее простой и надежный способ понять - сформулировать подробно своими словами.
Желательно указать сроки выполнения самой задачи и отдельных ее этапов, привлекаемые силы и оборудование, объем имеющихся средств и т.п.

Насколько я понимаю, эту задачу можно решать одним из, минимум, трех способов:
1. Как мультипликатор - нарисовать по кадрам, после чего тем или иным образом реализовать в алгоритме.
2. Как ученый-теоретик - составить математическую модель и ровести численное моделирование.
3. Как ученый экспериментатор - воспользоваться аппаратурой motion capture, после чего обработать данные, провести статистический анализ и вывести его результат на экран.

Во всех трех случаях вывод на экран - лишь конечный этап работы. Снаяала нужно разобраться с физикой движения.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Mystical
сообщение 14.12.2008 8:44
Сообщение #3


Новичок
*

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

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


Начнем с того, что это всего лишь лаба по программухе и ее нужно решить как можно проще, хотел бы методом раскодровки.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
krox
сообщение 14.12.2008 9:14
Сообщение #4


Новичок
*

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

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


я реализовывал вращающееся колесо... взял пэйнт и нарисовал движение колеса в нём)))
в итоге, происходит смещение кадра и изменение координаты по х...

если надо, могу скинуть
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Mystical
сообщение 14.12.2008 9:54
Сообщение #5


Новичок
*

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

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


Сбрось, посмотрим что у тебя получилось, но а может у тебя еще есть что-нить про человечка? smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 14.12.2008 12:39
Сообщение #6


Гость






Цитата(Mystical @ 14.12.2008 9:54) *
но а может у тебя еще есть что-нить про человечка? smile.gif
Есть! У меня есть.

Вот:
 К началу страницы 
+ Ответить 
Гость
сообщение 14.12.2008 12:43
Сообщение #7


Гость






Кажется, гостям нельзя картинки.. sad.gif
Но тогда вот это тоже сойде:
10.gif
- годится? По-моему очень даже ниче..
А тем, кто про физику движения, посоветуй первое предложение из их же мессаджа..
 К началу страницы 
+ Ответить 
Mystical
сообщение 14.12.2008 16:19
Сообщение #8


Новичок
*

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

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


Цитата(andriano @ 14.12.2008 8:35) *

Начинать всегда следует с того, что понять задачу.
А наиболее простой и надежный способ понять - сформулировать подробно своими словами.
Желательно указать сроки выполнения самой задачи и отдельных ее этапов, привлекаемые силы и оборудование, объем имеющихся средств и т.п.

Насколько я понимаю, эту задачу можно решать одним из, минимум, трех способов:
1. Как мультипликатор - нарисовать по кадрам, после чего тем или иным образом реализовать в алгоритме.
2. Как ученый-теоретик - составить математическую модель и ровести численное моделирование.
3. Как ученый экспериментатор - воспользоваться аппаратурой motion capture, после чего обработать данные, провести статистический анализ и вывести его результат на экран.

Во всех трех случаях вывод на экран - лишь конечный этап работы. Снаяала нужно разобраться с физикой движения.


Может кто сможет реализавать эту задачку как мультипликатор (т.е. по кадрам). Я понимаю, что нудно сидеть и рисовать, но может у кого уже есть программка, или мож кому-то интересно это сделать smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Mystical
сообщение 14.12.2008 21:06
Сообщение #9


Новичок
*

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

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


program WalkingHuman;
uses
Graph, Crt;
const
handlen = 60;
leglen = 80;
length = 10; {Длина штриха}
head = 30;
u = 17; {Смещение земли}
neck = 20; {Шея}
ground = 390; {Уровень земли}
step = 20; {Длина ступни}
pause = 17500; {Задержка}
stAng = pi/10; {Начальный угол}
dfAng = pi/30; {Величина изменения угла}
ratio = 2.5; {Сдвиг по фазе}
var
gd, gm, ec:integer; {Графика}
k: integer; {Смещение земли}
ang, stepAng, lapAng: real; {Углы}
ascent: integer; {Подьем тела}
shoulderX, shoulderY: integer;{Плечи}
loinX, loinY: integer; {Пояс}
lElbowX, lElbowY: integer; {Левый локоть}
rElbowX, rElbowY: integer; {Правый локоть}
rLapX, rLapY:integer; {Правое колено}
lLapX, lLapY:integer; {Левое колено}
lBrushX, lBrushY: integer; {Левая кисть}
rBrushX, rBrushY: integer; {Правая кисть}
lStepX, lStepY: integer; {Левая пятка}
rStepX, rStepY: integer; {Правая пятка}
lStep1X, lStep1Y: integer; {Левый носок}
rStep1X, rStep1Y: integer; {Правый носок}

procedure Earth(k:integer); {Рисование земли}
var
i:integer;
begin
Line(0, ground, GetMaxX, ground);
for i:= 0 to 12 do
Line(80*i - k, ground, 80*i - k, ground + length);
end;

procedure Body (head, shoulderX, shoulderY, loinX, loinY: integer);
begin
Circle(shoulderX, shoulderY - neck - head, head);
Line(shoulderX, shoulderY - neck, loinX, loinY);
end;

procedure Hand (shoulderX, shoulderY, elbowX, elbowY, brushX, brushY, vHend:integer);
begin
Line(shoulderX, shoulderY, elbowX, elbowY);
Line(elbowX, elbowY, brushX, brushY);
end;

procedure Leg (loinX, loinY, lapX, lapY, stepX, stepY, leglen, step1X, step1Y:integer; ang: real);
begin
Line(loinX, loinY, lapX, lapY);
Line(lapX, lapY, stepX, stepY);
Line(StepX, StepY, StepX + step, StepY);
end;

begin
{Инициализация графики}
gd:= Detect;
InitGraph(gd, gm, 'c:\bp\bgi ');
ec:= GraphResult;
if ec <> grOk then begin
Writeln('Ошибка инициализации', GraphErrorMsg(ec));
Halt;
end;
{Рисование}
shoulderX:= 320;
shoulderY:= 120;

loinX:= 320;
loinY:= 230;

repeat
SetColor(White);
OutTextXY(50, 50, 'Обычная походка');
ang:= pi/2 + stAng;
k:=0;
while ang > pi/3 do begin
ang:= ang - dfAng;
ascent:= Round(3*cos(5*ang));
SetColor(white);
Earth(k);
Body(head, shoulderX, shoulderY - ascent, loinX, loinY - ascent);
lElbowX:= Round(shoulderX + handlen*cos(ang));
lElbowY:= Round(shoulderY + handlen*sin(ang) );
rElbowX:= Round(shoulderX + handlen*(-cos(ang-dfAng+dfAng*ratio)));
rElbowY:= Round(shoulderY + handlen*(sin(ang-dfAng+dfAng*ratio)) );
lBrushX:= Round(shoulderX + 2*handlen*cos(ang-dfAng));
lBrushY:= Round(shoulderY + 2*handlen*sin(ang-dfAng) );
rBrushX:= Round(shoulderX + 2*handlen*(-cos(ang+dfAng*ratio)));
rBrushY:= Round(shoulderY + 2*handlen*(sin(ang+dfAng*ratio)) );

lLapX:= Round(loinX + leglen*(cos(ang)));
lLapY:= Round(loinY + leglen*(sin(ang)) );

rLapX:= Round(loinX + leglen*(-cos(ang+dfAng*ratio)));
rLapY:= Round(loinY + leglen*(sin(ang+dfAng*ratio)) );

lStepX:= Round(loinX + 2*leglen*(cos(ang+dfAng)));
lStepY:= Round(loinY + 2*leglen*(sin(ang+dfAng)) );
rStepX:= Round(loinX + 2*leglen*(-cos(ang-dfAng+dfAng*ratio)));
rStepY:= Round(loinY + 2*leglen*(sin(ang-dfAng+dfAng*ratio)) );

Hand(shoulderX, shoulderY - ascent , lelbowX, lelbowY - ascent , lbrushX, lbrushY - ascent , handlen);
Hand(shoulderX, shoulderY - ascent , relbowX, relbowY - ascent , rbrushX, rbrushY - ascent , handlen);
Leg(loinX, loinY - ascent , lLapX, lLapY - ascent
, lStepX, lStepY - ascent, lStep1X, lStep1Y - ascent, leglen, ang);
Leg(loinX, loinY - ascent , rLapX, rLapY - ascent , rStepX, rStepY - ascent , rStep1X, rStep1Y - ascent, leglen, ang);
Body(head, shoulderX, shoulderY - ascent, loinX, loinY - ascent);

Delay(pause);
SetColor(Black);
Hand(shoulderX, shoulderY - ascent , lelbowX, lelbowY - ascent , lbrushX, lbrushY - ascent , handlen);
Hand(shoulderX, shoulderY - ascent , relbowX, relbowY - ascent , rbrushX, rbrushY - ascent , handlen);
Leg(loinX, loinY - ascent , lLapX, lLapY - ascent
, lStepX, lStepY - ascent , lStep1X, lStep1Y - ascent, leglen, ang);
Leg(loinX, loinY - ascent , rLapX, rLapY - ascent , rStepX, rStepY - ascent , rStep1X, rStep1Y - ascent, leglen, ang);
Body(head, shoulderX, shoulderY - ascent, loinX, loinY - ascent);
Earth(k);
k:= k + u;
end;
until keypressed;
ReadLn;
CloseGraph;
end.


Вот этот код я нашел на форуме, здесь как-бы интуитивно понятно что к чему (хотя и не все, но многое). Так вот ясно, что здесь используется не мультипликация, а какая-то непонятная хрень(извините за выражение, но иначе это не назавеш, прошу прощения заранее у автора сего творения good.gif ). Так вот, что требуется от этого творения: может кто врубился и сможет посоветовать или дописать, чтобы этот человечек по нажатию клавиши "Ввод" разбегался и в конце прыгал в длину (имитация прыжка в длину с разбега). Плиз! кто может -- отзавитесь yes2.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 29.03.2024 10:07
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"