Вниз
Скачать: CL | DM;

Работа с Canvas.   Найти похожие ветки 

← →
Катерина   (2005-11-29 18:27) [0]

Помогите с графиком разобраться пожалуйста!надо построить график синусоиды.в общем все строится,осталась одна проблема:как правильно ограничить PX, т е координату по оси X,чтобы строился только один период синусоиды и как расположить правильно ось OY.Т.е.надо чтоб сам график проходил через точку (0,0)вот программка для наглядности:

procedure TForm1.BtnPaintClick(Sender: TObject);
var
X, Y, A, w: real;      //   координаты  функции,амплитуды,частоты
PX, PY: longint; //   координаты  пикселей}
begin
try
A := StrToFloat (Edit1.Text);
  if (StrToFloat(Edit1.Text)>1) then
  begin
    showmessage ("Амплитуда должна быть не больше единицы!");
    exit;
  end;
w := StrToFloat (Edit2.Text);
except showmessage("Проверьте ввод!Следует ввести числовые значения!");
end;

with Canvas do begin
 MoveTo (190, ClientHeight div 2);
 LineTo (ClientWidth-90, ClientHeight div 2);
 MoveTo (ClientWidth div 2  , 0);
 LineTo (ClientWidth div 2  , ClientHeight);
end;

 for PX:=200 to (ClientWidth-100) do
 begin
  X := PX*4*Pi*w/(ClientWidth-100);
  Y := A*Sin(X);
  PY := trunc(ClientHeight - (Y+1)*ClientHeight/2);
  Canvas.LineTo (PX,PY);

 end;

end;


← →
Юрий Зотов ©   (2005-11-30 07:02) [1]

Есть интервал значений по оси Y: от -1 до +1, причем -1 соответствует ClientHeigh, +1 соответствует нулю, а ось X проходит посередине высоты формы.

Есть интервал значений по оси X: от -Pi до +Pi, причем -Pi соответствует нулю, +Pi соответствует ClientWidth, а ось Y проходит посередине ширины формы.

Все остальное - элементарные пропорции из начальной школы плюс смещение на середину формы. Неужели это так сложно?

PX = Trunc((ClientWidth div 2) * (1 + X / Pi));
PY = Trunc((ClientHeight div 2) * (1 - Sin(X)));


← →
Катерина   (2005-11-30 08:58) [2]

Да это так сложно!


← →
Юрий Зотов ©   (2005-11-30 09:03) [3]

> Катерина   (30.11.05 08:58) [2]

Килограмм масла стоит 150 руб. Сколько стоит 200-граммовая пачка этого масла, если ее упаковка стоит 1 рубль?

Эту задачку Вы решите влегкую - а ведь здесь то же самое. Элементарная пропорция плюс смещение на стоимость упаковки.



Страницы: 1 вся ветка

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



Память: 0.45 MB
Время: 0.026 c
9-1122218078
Большой Брат
2005-07-24 19:14
2005.12.18
Антилязинг


5-1116963546
w666w
2005-05-24 23:39
2005.12.18
Как в TListItem отрисовать TSpinEdit?


14-1133096072
Kerk
2005-11-27 15:54
2005.12.18
Филиал конфы "Начинающим" у меня в мобильном...


14-1132755922
msguns
2005-11-23 17:25
2005.12.18
Как сделать Soft-beholder ?


14-1132725642
Ega23
2005-11-23 09:00
2005.12.18
С днем рождения! 23 ноября




   Наверх