надо чтобы результат всегда всезал в размеры формы, помогите пожалуйста!!!
Код:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <math>
#include <stdlib.h>
#include <stdio.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------+------------------------------
float t1,f1,f0,u,fT,w,x1,u00,u11,tmax,xp,wx,v,y1,yp,wy,t2,x2,y2,t3,ft,x3,y3,x0,
y0,fk,tp2,T,tp1,ff1,S,x1p,y1p,x3p,y3p,TT;
bool ff;
int x00=400,y00=400;
TColor coll;
void paint(int u0,int u1,TColor col, float tp1, float tp2, float T) {
Form1->Memo1->Lines->Add(FloatToStr(tp1+tp2+T));
for (t1=0;t1<=tp1;t1+=0.5) {
//Sleep(1);
f1=f0+w*u0*t1;
//if (u0!=0) {
x1=x0+wx*t1+(v*cos(f0)/(w*u0))-(v*cos(f1)/(w*u0));
y1=y0-wy*t1-(v*sin(f0)/(w*u0))+(v*sin(f1)/(w*u0));
//} else {
// x1=x0+wx*t1;
// y1=y0+(v-wy)*t1;
//}
Form1->Canvas->Pixels[x1/100+x00][y1/100+y00]=col;
}
for (t2=0;t2<=tp2;t2+=0.5) {
//Sleep(1);
x2=x1+(v*sin(f1)+wx)*t2;
y2=y1+(v*cos(f1)-wy)*t2;
Form1->Canvas->Pixels[x2/100+x00][y2/100+y00]=col;
}
for (t3=0;t3<=T;t3+=0.5) {
//Sleep(1);
ft=fk-w*u1*t3;
x3=0-wx*(t3)-(v*cos(fk))/(w*u1)+(v*cos(ft)/(w*u1));
y3=0+wy*(t3)+(v*sin(fk))/(w*u1)-(v*sin(ft)/(w*u1));
Form1->Canvas->Pixels[x3/100+x00][y3/100+y00]=col;
}
}
void ddraw(int u0,int u1,TColor col) {
ff=0;
t1=0;
tmax=100000000;
while (ff==0) {
t1+=0.5;
f1=f0+w*u0*t1;
x1p=x1; y1p=y1;
x1=x0+wx*t1+(v*cos(f0)/(w*u0))-(v*cos(f1)/(w*u0));
y1=y0-wy*t1-(v*sin(f0)/(w*u0))+(v*sin(f1)/(w*u0));
if (abs(f1-f0)>=2*M_PI) {break;}
//Form1->Canvas->Pixels[x1/100][y1/100]=col;
t3=0;
while (ff==0) {
t3+=0.5;
ft=fk-w*u1*t3;
x3p=x3; y3p=y3;
x3=0-wx*t3-(v*cos(fk))/(w*u1)+(v*cos(ft)/(w*u1));
y3=0+wy*t3+(v*sin(fk))/(w*u1)-(v*sin(ft)/(w*u1));
//Form1->Canvas->Pixels[x3/100][y3/100]=col;
if (abs(ft-fk)>=2*M_PI) {break;}
if ((cos(f1-ft)<=-0.98) &&
(abs((x3-x1)/(v*sin(f1)+wx)-(y3-y1)/(v*cos(f1)-wy))<=0.5) &&
((pow(x1p-x3p,2)+pow(y1p-y3p,2))>(pow(x3-x1,2)+pow(y3-y1,2))) &&
((t1+(x3-x1)/(v*sin(f1)+wx)+t3)<TT) ){
//paint(u0,u1,col,t1,(x3-x1)/(v*sin(f1)+wx),t3);
tp1=t1; tp2=(x3-x1)/(v*sin(f1)+wx); T=t3; u00=u0; u11=u1; coll=col;
tmax=t1+tp2+t3;
if (tmax<=TT) {TT=tmax;}
}
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form1->Refresh();
Memo1->Clear();
TT=100000000;
v=StrToFloat(Edit3->Text);
wx=StrToFloat(Edit5->Text);
wy=StrToFloat(Edit6->Text);
w=StrToFloat(Edit4->Text);
x0=(StrToFloat(Edit7->Text)-x00)*100;
y0=(StrToFloat(Edit8->Text)-y00)*100;
Canvas->Pen->Color=clBlack;
Canvas->Pen->Width=1;
Form1->Canvas->MoveTo(x00,0);
Form1->Canvas->LineTo(x00,700);
Form1->Canvas->MoveTo(0,y00);
Form1->Canvas->LineTo(900,y00);
x1=0;
y1=0;
f0=StrToFloat(Edit1->Text);
fk=StrToFloat(Edit2->Text);
Canvas->Pen->Color=clBlack;
Canvas->Pen->Width=3;
S=sqrt(pow(xp,2)+pow(yp,2))+2*v/w;
Canvas->MoveTo(x00,y00);
Canvas->LineTo(x00-20*sin(fk),y00-20*cos(fk));
Canvas->MoveTo(x0/100+x00,y0/100+y00);
Canvas->LineTo(x0/100+x00-20*sin(f0),y0/100+y00-20*cos(f0));
ddraw(1,-1,clRed);
ddraw(1,1,clLime);
ddraw(-1,1,clBlue);
ddraw(-1,-1,clGreen);
paint(u00,u11,coll,tp1,tp2,T);
}
//---------------------------------------------------------------------------