построение графика

Общие вопросы: версии и диалекты, синтаксис языка, cтруктуры и типы данных (массивы, строки, списки...), обработка данных и т.д.
Ответить
fiascko
Сообщения: 4
Зарегистрирован: 25 мар 2010, 22:59

Даны изменения координат за некоторый промежуток времени, т.е. даны , к примеру, значения широты (shirota) в формате 5553,4235 (55 градусов 53,4235 минут) на каждую секунду времени (vrema) с 072345 (7 часов 23 минуты 45 секунд) по 073624 (7 часов 36 минут 24 секунд). Необходимо построить график. Недоумеваю, как это сделать. Как будет выглядеть код? Если строить непосредственно график по данным, то получится не очень хорошо (ведь в минуте не 100, а 60 секунд, поэтому на графике будут прямые линии с 59 секунд по 99 секунду)
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Сделайте функцию перевода этих странных данных в нормальные дробные числа, и стройте уже по ним.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
dr.Jekill
Сообщения: 526
Зарегистрирован: 03 янв 2009, 23:17
Откуда: Voronezh
Контактная информация:

Вот Вам построение графика в Паскале. Вам необходимо написать свою функцию Func.
[syntax="pascal"]
uses crt,graph;
var xBeg,xEnd:real;
gd,gm:integer;

function Func(arg:real):real;
begin
Func:=arg; //здесь нужно описать Вашу зависимость
end;

procedure DrawGraph(a,b:real);
var x,dx,max,min,koef,h,g:real;
k,x0,y0:integer;
begin
h:=a;
g:=b;
ClearViewPort;
dx:=(b-a)/639;
x:=a;
max:=Func(a);
min:=Func(a);
for k:=1 to 640 do
begin
if Func(x)>max then max:=Func(x);
if Func(x)<min then min:=Func(x);
x:=x+dx;
end;
koef:=479/(max-min);
x:=a;
MoveTo(0,round(479-koef*(Func(a)-min)));
for k:=1 to 639 do
begin
x:=x+dx;
SetBkColor(Black);
SetColor(Green);
LineTo(k,round(479-koef*Func(x)-min));
end;
x0:=round(639*a/(a-b));
Line(x0,0,x0,479);
y0:=round(479-479*(min/(min-max)));
Line(0,y0,639,y0);
PutPixel(x0,y0,Red);
SetColor(White);
OutTextXY(x0+3,y0+4,'0');
OutTextXY(x0-10,6,'y');
OutTextXY(615,y0+3,'x');
end;

begin
ClrScr;
write('Zadaite nizhnuiu granicu intervala: ');
readln(xBeg);
write('Zadaite verhnuiu granicu intervala: ');
readln(xEnd);
gd:=detect;
initgraph(gd,gm,'');
if graphresult<>grok then
begin
writeln('Error in graphic mode!');
write('Press any key to EXIT...');
readkey;
Exit;
end
else
begin
DrawGraph(xBeg,xEnd);
readkey;
end;
end.
[/syntax]
Нет религии выше истины
Ответить