Текущий архив: 2002.03.28;
Скачать: CL | DM;
ВнизНарисовать график Найти похожие ветки
← →
anod (2002-03-16 22:37) [0]Подскажите, нужно нарисовать график в PaintBox.
var a,b:integer; sh,x,y:real;
begin
x:=a;
a:=StrToInt(Edit1.Text);
b:=StrToInt(Edit2.Text);
sh:=(b-a)/50;
while (x<>b) do
begin
y:=10/(1+sqr(x));
PaintBox1.Canvas. <-- Что писать?
x:=x+sh;
end;
end;
Я видел мельком пример, там отображалось на Form1.canvas,
приводили к определенному виду, для этого использовали Pi, я это не запомнил.
← →
Song (2002-03-16 22:41) [1]PaintBox1.Canvas.DrawPoint(X,Y);
← →
Song (2002-03-16 22:42) [2]Да, забыл, нужно отмасштабировать по размерам окна и перевести в Integer
← →
anod (2002-03-16 22:58) [3]Вот это мне и не понятно как сделать
В каком смысле отмаштобировать по размерам окна, и как перевести в Integer, а дробная часть?
← →
MBo (2002-03-17 06:50) [4]общее правило
нужно выполнить линейное преобразование
дано xmin,xmax - пределы вх. данных
x1,x2 - нач. и кон. точки на графике (целые, скорее всего 0 и Width)
xmin*scale+base=x1
xmax*scale+base=x2
решаем
scale=(x2-x1)/(xmax-xmin)
base=x1-xmin*(x2-x1)/(xmax-xmin)
итого
xgraf=x1+round((x-xmin)*scale)
scale считаем до цикла
так же для y, не забывая об инверсии шкалы (ymin в height)
← →
anod (2002-03-17 09:17) [5]2MBo
Как я понял skale, это то, что у меня дано в условии и = 50
А base?
Выводить на график нужно xgraf.
Также надо высчитать ygraf
← →
MBo (2002-03-17 09:44) [6]procedure TForm1.Button3Click(Sender: TObject);
var x,y:array[1..50] of double;
i:integer;
scalex,scaley:double;
ymin,ymax,xmin,xmax:double;
begin
for i:=1 to 50 do begin
y[i]:=sin(i*0.5);
x[i]:=i;
end;
xmin:=1;
xmax:=50;
ymin:=y[1];
ymax:=y[1];
for i:=2 to 50 do begin
if y[i]<ymin then ymin:=y[i];
if y[i]>ymax then ymax:=y[i];
end;
scalex:=paintbox1.Width/(xmax-xmin);
scaley:=paintbox1.Height/(ymax-ymin);
with paintbox1.canvas do begin
moveto(trunc(scalex*(x[1]-xmin)),paintbox1.height-trunc(scaley*(y[1]-ymin)));
for i:=2 to 50 do
Lineto(trunc(scalex*(x[i]-xmin)),paintbox1.height-trunc(scaley*(y[i]-ymin)));
end;
end;
Страницы: 1 вся ветка
Текущий архив: 2002.03.28;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.007 c