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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2013, 18:35   #1
iFlash66
 
Регистрация: 11.02.2013
Сообщений: 4
Вопрос Синусоида: анимация

Здравствуйте! У меня есть прогрмма которая просто рисует синусоиду, при этом можно с клавиатуры вводить параметры графика (высота, длина, фаза). Нужно сделать анимацию синосоиды (волны), и при этом что-бы можно было изменять ее параметры. Помогите пожалуйста!
Вот код:
Код:
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    btn1: TButton;
    btn2: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button1: TButton;
    procedure btn1Click(Sender: TObject);
    procedure btn2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
  TWave=class
    height:Real;
    length:Real;
    phase:Real;
    function func(x:Real):Real;
  end;
 
var
  Form1: TForm1;
  H, L, P : real;
  XmaxP,YmaxP,X0,Y0,Xe,Ye:integer;
  Y,Xmax,Ymax,X,ScaleX,ScaleY,XR,XL,Max:extended;
implementation
 
{$R *.dfm}
 
procedure TForm1.btn1Click(Sender: TObject);
  var x,dx,mx,my:real;
      wave:TWave;
      by:Integer;
begin
    Canvas.Pen.Color:=clBlack;
    XmaxP:=Form1.Width;
    YmaxP:=Form1.Height;
    X0:=(XmaxP div 2)-350;
    Y0:=YmaxP div 2;
    with Form1.Canvas do
      begin
        MoveTo(X0,0);
        LineTo(X0,YmaxP);// OY
        MoveTo(0,Y0);
        LineTo(XmaxP,Y0);// OX
      end;
  x:=0;
  dx:=0.01;
  mx:=10;
  my:=10;
  by:=Height div 2;
  H:=StrToFloat(Edit1.Text);
  L:=StrToFloat(Edit2.Text);
  P:=StrToFloat(Edit3.Text);
  wave:=TWave.Create;
  wave.height:=H;     //высота волны
  wave.length:=L;   // длина волны
  wave.phase:=P;  // фаза волны
  Canvas.Pen.Color:=clBlue;
  Canvas.MoveTo(x0+Round(x*mx),by-Round(wave.func(x)*my));
  while x*mx<Width do
  begin
    x:=x+dx;
    Canvas.LineTo(x0+Round(x*mx),by-Round(wave.func(x)*my));
  end;
  wave.Free;
end;
 
{ TWave }
 
function TWave.func(x: Real): Real;
begin
  Result:=height*Sin(phase/57.3+x*2*pi/length);  //формула синусоиды
end;
 
procedure TForm1.btn2Click(Sender: TObject);
begin
Application.Terminate
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
Refresh
end;
 
end.
iFlash66 вне форума Ответить с цитированием
Старый 19.02.2013, 01:21   #2
iFlash66
 
Регистрация: 11.02.2013
Сообщений: 4
По умолчанию

Помогите решить пожалуйста!
iFlash66 вне форума Ответить с цитированием
Старый 19.02.2013, 08:36   #3
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

Постарайтесь сообразить из этого http://programmersforum.ru/showthread.php?t=193070
(там и по ссылке гляньте). Коли возникнут проблемы, тогда что накропаете - кидайте сюда архивом, будем разбираться.
У Вас чувствуется подход - обычно с такими людьми мы срабатываемся. Хотя, конечно, недочёты тоже видны сразу, постараемся исправлять по ходу дела.
phomm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Анимация в С++ Streb Общие вопросы C/C++ 28 07.06.2009 19:07
Синусоида jone Мультимедиа в Delphi 1 31.05.2009 10:19