Кому порешать задачи - пишите сюда

Cris

Member
Народ помогите, мне надо нариовать траекторию а я без рамы как!
язик: делфи

задание: написать програму чтобы вышитывала траекторию предмета, и рисовала траекторию его полёта!

как выщитать ето пол биды а как её нарисовать хз, подскажите кто знает где можно взять програму, или хотябы как нарисовать траекторию!

Зарание спс!
вот формулы для вычислений:
П.С перенеси y0 и x0 в другую сторону, для уравнения надо начальная скорость, угол по отношению к горизонту, начальные x и y,
незабывай что функции sin/cos .. считают в радианах)
подставляеш в цикле t находиш x,у, с шагом гдето в 0,001 и меньше и или рисуеш PutPixel'em или LineTo и траектория готова)
П.С.С если вместо картинок черные полосы, то нажми на них чтоб открылись в другом окне
 

Вкладення

  • 198 байт Перегляди: 237
  • 327 байт Перегляди: 236

BarT

New Member
вот формулы для вычислений:
П.С перенеси y0 и x0 в другую сторону, для уравнения надо начальная скорость, угол по отношению к горизонту, начальные x и y,
незабывай что функции sin/cos .. считают в радианах)
подставляеш в цикле t находиш x,у, с шагом гдето в 0,001 и меньше и или рисуеш PutPixel'em или LineTo и траектория готова)
П.С.С если вместо картинок черные полосы, то нажми на них чтоб открылись в другом окне

чтота я всеравно не понял, х0 и у0 ето что?? точка где тело упадет??

и что ети формулы мне найдут?? :Р обясни плз а то у меня с физикой туговато ))
 

dreamer

Member
чтота я всеравно не понял, х0 и у0 ето что?? точка где тело упадет??

и что ети формулы мне найдут?? :Р обясни плз а то у меня с физикой туговато ))
Чтоб нарисовать траекторию движения тела, необходимо проследить в каких точках пространства тело побывало. Т.е. если у нас есть некоторая функция движения тела:
{ x = f(t), y = g(t) } то мы можем узнать координаты тела в каждый момент времени.
Вот и выходит:
Код:
t = t_start;
Canvas.MoveTo(x_start, y_start);
while t < t_end do begin
    x = f(t);
    y = g(t);
    Canvas.LineTo(x, y);
    t := t + delta_t;
end;
Не заставляй нас разжевывать еще подробней ;)
 

BarT

New Member
Чтоб нарисовать траекторию движения тела, необходимо проследить в каких точках пространства тело побывало. Т.е. если у нас есть некоторая функция движения тела:
{ x = f(t), y = g(t) } то мы можем узнать координаты тела в каждый момент времени.
Вот и выходит:
Код:
t = t_start;
Canvas.MoveTo(x_start, y_start);
while t < t_end do begin
    x = f(t);
    y = g(t);
    Canvas.LineTo(x, y);
    t := t + delta_t;
end;
Не заставляй нас разжевывать еще подробней ;)

ето уже как оно рисует, я про другое, 2 формулы которые он выложил что там где и как выщитать Т и х0 и у0 ( х0 и у0 конечная точка где оно упадет) !
 

Cris

Member
ето уже как оно рисует, я про другое, 2 формулы которые он выложил что там где и как выщитать Т и х0 и у0 ( х0 и у0 конечная точка где оно упадет) !
x0 и y0 - это точки старта, ну х0 обычно делают 0 , а у0 - начальная высота
 

BarT

New Member
а как узнать конечные х и у ? и что ето в формуле х-х0 =...? нам надо конкретный х что бы туда линию провести а не число = числу
 

Cris

Member
а как узнать конечные х и у ? и что ето в формуле х-х0 =...? нам надо конкретный х что бы туда линию провести а не число = числу
рисуем траекторию:
t:=0; //начальное время
v:=1; //начальная скорость
L:=45; // начальный угол
H:=0; //начальная высота
while(t<20)
{
x:=v*t*cos(L/180*3.14);
y:=v*t*sin(L/180*3.14)-9.8*t*t/2+H;
.... //рисуем очередную точку
t:=t+0.001;
}
 
Останнє редагування:

Cris

Member
вот написал на C++ Builder(практически такой же как и Delphi)
смотреть приложение,есть мелкие баги вроде когда летит тупо вверх, показывает что оно смешается))
 

Вкладення

Glu4it

Member
здрасте всем, здачка по делфи:

нада сделать так чтобы в паинтбоксе можно было рисовать всякую всячину с помощью мышки(типа как в обычнонм виндовсовском Paint )
помогите решить проблемку


unit Unit1;

interface

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

type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
SavePictureDialog1: TSavePictureDialog;
OpenPictureDialog1: TOpenPictureDialog;
ColorDialog1: TColorDialog;
PrintDialog1: TPrintDialog;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
Panel1: TPanel;
Panel2: TPanel;
PaintBox1: TPaintBox;
procedure PaintBox1MouseDown(Sender:TObject; Button: TMouseButton;
Shift:TShiftState; x,y:Integer);
procedure PaintBox1MouseMove(Sender:TObject; Button: TMouseButton; Shift:TShiftState; x,
y:Integer);
procedure PaintBox1MouseUp(Sender:TObject; Button: TMouseButton;
Shift:TShiftState; x,y:Integer);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
drag: boolean;


implementation

{$R *.dfm}

procedure TForm1.PaintBox1MouseMove(Sender:TObject; Button: TMouseButton;
Shift:TShiftState; x,y:Integer);
var
dtc: TCanvas;
begin
if drag then
begin
dtc:=TCanvas.Create;
dtc.Handle:=GetDC(Hwnd_Desktop);
dtc.Pen.Mode:=pmMaskPenNot;
ReleaseDC(dtc.Handle,Hwnd_Desktop);
dtc.Free;
dtc.Pen.Color:=clGreen;
dtc.Pen.Width:=20;
x:=Mouse.CursorPos.X;
y:=Mouse.CursorPos.Y;
dtc.MoveTo(x,y);
dtc.LineTo(x,y);
end;
end;

procedure TForm1.PaintBox1MouseUp(Sender:TObject; Button: TMouseButton;
Shift:TShiftState; x,y:Integer);
begin
drag:=false;
end;

procedure TForm1.PaintBox1MouseDown(Sender:TObject; Button: TMouseButton;
Shift:TShiftState; x,y:Integer);
begin
drag:=true;
end;



end.
 
Останнє редагування:
Зверху