![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
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.
Вот этот код я нашел на форуме, здесь как-бы интуитивно понятно что к чему (хотя и не все, но многое). Так вот ясно, что здесь используется не мультипликация, а какая-то непонятная хрень(извините за выражение, но иначе это не назавеш, прошу прощения заранее у автора сего творения ![]() ![]() |
![]() ![]() |
![]() |
Текстовая версия | 18.04.2025 22:48 |