Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2009, 00:46   #1
blackberryx
 
Аватар для blackberryx
 
Регистрация: 05.10.2008
Сообщений: 9
По умолчанию Тело, брошенное под углом к горизонту

Помогите пожалуйста написать программу, которая моделирует процесс бросания тела под углом к горизонту.
Дано : Начальная скорость, угол с горизонтом
Сделать : Построить график
Я пытался сделать, но не выходит. Надо ещё, чтобы график "масштабировался". Т.е. график всё время должен занимать примерно одинаковое место на экране, несмотря на то, какие величины я введу.
blackberryx вне форума Ответить с цитированием
Старый 14.05.2009, 00:47   #2
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

что именно не получается? уравнения движения не знаем?
Uguu~
__STDC__ вне форума Ответить с цитированием
Старый 14.05.2009, 01:01   #3
blackberryx
 
Аватар для blackberryx
 
Регистрация: 05.10.2008
Сообщений: 9
По умолчанию

Уравнение знаю. У меня просто этот "кружок" которым я обозначаю точку не двигается.
Могу тут код выложить.

Код:
program gorizont;
uses graph, wincrt;
const g=9.81;
var v0 : real;
    angle : real;
    x,y, x0, y0 : real;
    S, h : real;
    T,tt : real;
    gm,gt : integer;
    scaleX, scaleY : real;
    scale : real;
begin
Writeln('Программа моделирует бросок тела');
Writeln();
Write('Введите нач. скорость');
Readln(v0);
Write('Введите угол');
Readln(angle);

S:=(v0*v0/g)*(sin(angle*2*pi)/180);
h:=((v0*v0)/(2*g))*(sin(angle*2*pi)/180);
T:=2*(v0/g)*sin(angle*pi/180);
gt:=detect;
Initgraph(gt,gm,'');

scaleX:=(GetMaxX div 6)*5-(GetMaxX div 6)/S;
scaleY:=(GetMaxY div 6)*5-(GetMaxY div 6)/S;
If angle>45 Then scale:=scaley Else scale:=scalex;
Line(GetMaxX div 6, (GetMaxY div 6)*5, (GetMaxX div 6)*5+10, (GetMaxY div 6)*5);
//OX
Line(GetMaxX div 6, (GetMaxY div 6)*5, GetMaxX div 6, GetMaxY div 6+10);
//OY
tt:=0;
x0:=GetMaxX div 6;
y0:=(GetMaxY div 6)*5;
While tt<T Do Begin
   tt:=tt+0.0001;
   x:=(x0+v0*t*cos(angle*pi/180))*scale;
   y:=(y0+v0*t*sin(angle*pi/180)-(g*(t*t))/2)*scale;
   Circle(round(x),round(y),5);
End;
end.
blackberryx вне форума Ответить с цитированием
Старый 14.05.2009, 01:11   #4
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

хм.. значение x в нижнем цикле на первой итерации - "-162338917753650238,40042072256824" (вводил что-то типа 20, 45)

позвольте поинтересоваться, откуда такие формулы?
S:=(v0*v0/g)*(sin(angle*2*pi)/180);
h:=((v0*v0)/(2*g))*(sin(angle*2*pi)/180);
Uguu~

Последний раз редактировалось __STDC__; 14.05.2009 в 01:16.
__STDC__ вне форума Ответить с цитированием
Старый 14.05.2009, 01:18   #5
blackberryx
 
Аватар для blackberryx
 
Регистрация: 05.10.2008
Сообщений: 9
По умолчанию

В том-то и дело, что я не могу оттрасировать. У меня вылетает с какими-то ошибками.
http://img210.imageshack.us/img210/9131/troublel.jpg Вот такие вот ошибки. Поэтому и прошу помощи.

Пардон, там у синусов, конечно, степень. Но всё равно вылетает с 207-й ошибкой.

Последний раз редактировалось blackberryx; 14.05.2009 в 01:21.
blackberryx вне форума Ответить с цитированием
Старый 14.05.2009, 01:22   #6
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

ох... надо просто окошечко Call Stack закрыть... и попробовать еще.. отладчик в FPC частенько глючит... суть не в том..
насколько я знаю, ур-я движения такие:
x = V0 * cos(a) * t
y = V0 * sin(a) * t - (g * t^2) / 2

***
ага.. все понятно.. они ниже.. те формулы значит для расчета масштаба..
Uguu~

Последний раз редактировалось __STDC__; 14.05.2009 в 01:25.
__STDC__ вне форума Ответить с цитированием
Старый 14.05.2009, 01:24   #7
blackberryx
 
Аватар для blackberryx
 
Регистрация: 05.10.2008
Сообщений: 9
По умолчанию

Они у меня там и написаны.
x:=(x0+v0*t*cos(angle*pi/180))*scale;
y:=(y0+v0*t*sin(angle*pi/180)-(g*(t*t))/2)*scale;
Я прошу, чтобы мне с масштабом помогли. Не понимаю я его.
blackberryx вне форума Ответить с цитированием
Старый 14.05.2009, 01:37   #8
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

эх.. давай я завтра посмотрю? спать пора уже.. там явно с масштабом проблема.. из-за него ошибка..
Uguu~
__STDC__ вне форума Ответить с цитированием
Старый 14.05.2009, 01:40   #9
blackberryx
 
Аватар для blackberryx
 
Регистрация: 05.10.2008
Сообщений: 9
По умолчанию

Гх, я как всегда поздно спохватился. А будет ли к 11 где-то?
Мне в школу позарез надо.
blackberryx вне форума Ответить с цитированием
Старый 14.05.2009, 01:43   #10
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

о_О к 11?? не знаю... я постараюсь.. если проснусь, попробую сделать =) сейчас уже не соображаю что-то... а может кто-то раньше сделает...)
Uguu~
__STDC__ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тело по наклонной Lemo Помощь студентам 0 09.04.2009 15:50
Движение тела под углом Lemo Помощь студентам 6 05.04.2009 14:49
Графика под углом BOBAH13 Мультимедиа в Delphi 5 12.09.2008 21:18
вставка в тело тригера INTITY_INSERT Pitbull SQL, базы данных 0 21.02.2008 23:45