Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.12.2009, 02:06
tatee tatee вне форума
Прохожий
 
Регистрация: 21.12.2009
Сообщения: 2
Репутация: 10
По умолчанию найти угол наклона

Тело вращается вокруг неподвижной оси по закону f=10+20*t-2*sqr(t). Найти величину и угол наклона полного ускорения точки, находящейся на расстоянии L от оси вращения в момент времени t. Построить анимацию движения тела.
Помогите, пожалуйста!!! В среду уже сдавать, а я не знаю, как делать!!!

Последний раз редактировалось tatee, 21.12.2009 в 02:12.
Ответить с цитированием
  #2  
Старый 21.12.2009, 02:32
Аватар для Енот
Енот Енот вне форума
Прохожий
 
Регистрация: 17.12.2009
Сообщения: 28
Репутация: 10
По умолчанию Смотри

Кавайненько получилось
Код:
unit unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

const L=100;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Timer1: TTimer;
    procedure DrawObject(x,y:integer);
    procedure Refreshsh;
    procedure intr(corr:Tpoint;k,area:integer);
    procedure FormCreate(Sender: TObject);
    function Calculate(t:real):Tpoint;
    procedure Timer1Timer(Sender: TObject);
    procedure Image1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  t:real;
  TailLength:integer;
implementation

{$R *.dfm}

procedure Tform1.intr(corr:Tpoint;k,area:integer);
var a:array[1..1000,1..1000] of boolean;
    i,j:integer;
begin
   for i:=1 to area do
     for j:=1 to area do a[i,j]:=(random(k)=1);
   for i:=1 to area do
     for j:=1 to area do
      if not a[i,j] then image1.Canvas.Pixels[corr.x+i-8,corr.y-8]:=clblack;
end;

procedure TForm1.Refreshsh;
var i,j:integer;
begin
  image1.Canvas.Brush.Color:=clblack;
  image1.Canvas.Rectangle(0,0,image1.width,image1.Height);
  image1.Canvas.Brush.Color:=clblack;
  image1.Canvas.Brush.Color:=clYellow;
  for i:=1 to image1.Width do
   for j:=1 to image1.height do if (random(10000)=1)
      then image1.canvas.pixels[i,j]:=clYellow;
  image1.Canvas.ellipse((image1.Width div 2)-20,(image1.height div 2)-20,
  (image1.Width div 2)+20 ,(image1.height div 2)+20 );
end;

procedure Tform1.DrawObject(x,y:integer);
var penbuf:TColor;
begin
   penbuf:=image1.canvas.pen.color;
   image1.Canvas.brush.Color:=clBlue;
   image1.canvas.ellipse(x-17,y-17,x+17,y+17);
   image1.canvas.brush.Color:=penbuf;
end;

function Tform1.Calculate(t:real):Tpoint;
var f:real;
begin
   f:=round(10+20*t-2*sqr(t));
   result.X:=round((image1.Width div 2)+(L*cos(f/L)));
   result.Y:=round((image1.height div 2)+L*sin(f/L));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.interval:=10;
image1.Canvas.Pen.color:=clBlack;
TailLength:=1;
t:=1;
refreshsh;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
t:=t+0.1;
{if (round(t*10) mod TailLength)<>0 then intr(calculate(t),100,100) else }
Refreshsh;
DrawObject(Calculate(t).X,Calculate(t).Y);
end;

procedure TForm1.Image1Click(Sender: TObject);
begin
inc(TailLength);
end;

end.
Это только анимация, при небольшой доработке легко будет выводить угол наклона и ускорение точки

Последний раз редактировалось Енот, 21.12.2009 в 08:05.
Ответить с цитированием
  #3  
Старый 28.12.2009, 03:03
tatee tatee вне форума
Прохожий
 
Регистрация: 21.12.2009
Сообщения: 2
Репутация: 10
По умолчанию

Очень хорошая анимация! Спасибо! Надеюсь, она мне поможет.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:29.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025