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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 21.04.2007, 20:09   #1
NecroSlider
Пользователь
 
Регистрация: 19.02.2007
Сообщений: 24
По умолчанию Анимация прямой

Есть прямая, по середине формы, как заставить ее вращаться от крайне левого положения до крайне правого и обратно?
Как-то вот так:
_|_
NecroSlider вне форума
Старый 22.04.2007, 20:13   #2
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Одна точка прямой не подвижна (x0 y0), другая движется по окружности
x:=R*Cos(t)+dx;
y:=R*Sin(t)+dy;
dx, dy - смещение (чтоб по центру формы были), например dx=300; dy=300;
R - длинна прямой
Всё это делаем в цикле (t меняем от 3.14 до 0 и обратно - два цикла for друг за другом, и оба в while например - т.е. пробегаем туда, потом обратно и повторяем)
zetrix вне форума
Старый 22.04.2007, 23:12   #3
NecroSlider
Пользователь
 
Регистрация: 19.02.2007
Сообщений: 24
По умолчанию

zetrix, я пользовался таким способом чтобы делать вращение фигур. Если тебе не трудно, то не мог бы ты поподробнее расписать, а то у меня не получается, желательно через таймер это делать, так как я потом буду использовать закон движения, но пока мне нужно просто чтобы прямая крутилась туда-сюда, а то рисуется чего-то непонятное.
NecroSlider вне форума
Старый 23.04.2007, 13:31   #4
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

На форме расположи таймер: Interval=1
Цвет формы: clWhite
ну и собственно код:
Код:
unit Unit1;

interface

uses
  Windows, Classes, Graphics, Controls, Forms, ExtCtrls;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  t, dt, tempx, tempy: real;

const dx=150;
      dy=150;
      R=50;
      
implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
var x,y:real;
begin
canvas.Pen.Color:=clWhite;
canvas.MoveTo(dx,dy);
canvas.LineTo(round(tempx),round(tempy));
if (t>3.18)or(t<0) then dt:=-dt;
t:=t+dt;
x:=R*cos(t)+dx;
y:=R*sin(t)+dy;
canvas.Pen.Color:=clBlack;
canvas.MoveTo(dx,dy);
canvas.LineTo(round(x),round(y));
tempx:=x;
tempy:=y;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
dt:=0.02;
end;

end.
Скорость колебаний регулируется с помощью интервала таймера и dt!
zetrix вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Анимация SanekIrk Общие вопросы Delphi 2 15.08.2008 21:57
Анимация SanekIrk Общие вопросы Delphi 11 08.08.2008 15:24
Анимация AVI Hottabych Мультимедиа в Delphi 5 16.03.2008 16:10
Пересечение прямой и круга CoGnaC Паскаль, Turbo Pascal, PascalABC.NET 8 11.03.2008 17:01