![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Mystical |
![]() ![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Реальное имя: Руслан Репутация: ![]() ![]() ![]() |
Облазил весь форум и не нашел ничего подходящего. Вот сама задача:
Составить программу вывода на экран стилизованного "человека" в положении готовности осуществить прыжок в длину. При нажатии клавиши “Ввод” спортсмен осуществляет разбег и прыгает. Помогите, плиз, чем сможите. |
![]() ![]() |
andriano |
![]()
Сообщение
#2
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
Начинать всегда следует с того, что понять задачу.
А наиболее простой и надежный способ понять - сформулировать подробно своими словами. Желательно указать сроки выполнения самой задачи и отдельных ее этапов, привлекаемые силы и оборудование, объем имеющихся средств и т.п. Насколько я понимаю, эту задачу можно решать одним из, минимум, трех способов: 1. Как мультипликатор - нарисовать по кадрам, после чего тем или иным образом реализовать в алгоритме. 2. Как ученый-теоретик - составить математическую модель и ровести численное моделирование. 3. Как ученый экспериментатор - воспользоваться аппаратурой motion capture, после чего обработать данные, провести статистический анализ и вывести его результат на экран. Во всех трех случаях вывод на экран - лишь конечный этап работы. Снаяала нужно разобраться с физикой движения. |
Mystical |
![]()
Сообщение
#3
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Реальное имя: Руслан Репутация: ![]() ![]() ![]() |
Начнем с того, что это всего лишь лаба по программухе и ее нужно решить как можно проще, хотел бы методом раскодровки.
|
krox |
![]()
Сообщение
#4
|
Новичок ![]() Группа: Пользователи Сообщений: 19 Пол: Мужской Репутация: ![]() ![]() ![]() |
я реализовывал вращающееся колесо... взял пэйнт и нарисовал движение колеса в нём)))
в итоге, происходит смещение кадра и изменение координаты по х... если надо, могу скинуть |
Mystical |
![]()
Сообщение
#5
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Реальное имя: Руслан Репутация: ![]() ![]() ![]() |
Сбрось, посмотрим что у тебя получилось, но а может у тебя еще есть что-нить про человечка?
![]() |
Гость |
![]()
Сообщение
#6
|
Гость ![]() |
|
Гость |
![]()
Сообщение
#7
|
Гость ![]() |
Кажется, гостям нельзя картинки..
![]() Но тогда вот это тоже сойде: ![]() - годится? По-моему очень даже ниче.. А тем, кто про физику движения, посоветуй первое предложение из их же мессаджа.. |
Mystical |
![]()
Сообщение
#8
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Реальное имя: Руслан Репутация: ![]() ![]() ![]() |
Начинать всегда следует с того, что понять задачу. А наиболее простой и надежный способ понять - сформулировать подробно своими словами. Желательно указать сроки выполнения самой задачи и отдельных ее этапов, привлекаемые силы и оборудование, объем имеющихся средств и т.п. Насколько я понимаю, эту задачу можно решать одним из, минимум, трех способов: 1. Как мультипликатор - нарисовать по кадрам, после чего тем или иным образом реализовать в алгоритме. 2. Как ученый-теоретик - составить математическую модель и ровести численное моделирование. 3. Как ученый экспериментатор - воспользоваться аппаратурой motion capture, после чего обработать данные, провести статистический анализ и вывести его результат на экран. Во всех трех случаях вывод на экран - лишь конечный этап работы. Снаяала нужно разобраться с физикой движения. Может кто сможет реализавать эту задачку как мультипликатор (т.е. по кадрам). Я понимаю, что нудно сидеть и рисовать, но может у кого уже есть программка, или мож кому-то интересно это сделать ![]() |
Mystical |
![]()
Сообщение
#9
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Реальное имя: Руслан Репутация: ![]() ![]() ![]() |
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.
Вот этот код я нашел на форуме, здесь как-бы интуитивно понятно что к чему (хотя и не все, но многое). Так вот ясно, что здесь используется не мультипликация, а какая-то непонятная хрень(извините за выражение, но иначе это не назавеш, прошу прощения заранее у автора сего творения ![]() ![]() |
![]() ![]() |
![]() |
Текстовая версия | 28.07.2025 8:15 |