Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.009 c
3-90733
weak
2002-02-28 16:09
2002.03.28
Надо переменную вставить UPDATE-ом в поле data_p.


1-90916
MegaVolt
2002-03-13 14:34
2002.03.28
Преобразование из виндяшной кодировки в DOS


6-91028
SemFLY
2002-01-10 04:08
2002.03.28
Компоненты Indy -> TIdTCPServer и TIdTCPClient


1-90871
P.
2002-03-17 13:40
2002.03.28
Вещественный тип...


14-91067
J_S (A)
2002-02-15 15:05
2002.03.28
ЭЛЕМЕНТ: 115. НАЗВАНИЕ: Женщина. СИМВОЛ: Fm




   Наверх