1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
| float angle(int x,int y)
{
if (x==0) return 0;
float ang=atan(y/1.0/x);
if (x<0) ang=ang-(PI);
return ang;
}
void __fastcall TForm1::FormPaint(TObject *Sender)
{
int number=0;
int sx=0,sy=0;
vector <TV>::iterator ra;
ra=tv.begin();
int size=tv.size();
if (size>0)
for (int i=0;i<=tv.size();i++)
{
for (int j = 0 ; j < 3 ; j++)
{
ra=tv.begin()+((i+j)%size);
x[j]=ra->x1;
y[j]=ra->y1;
xold[j]=x[j];
yold[j]=y[j];
}
for (int j = 0; j <3;j++)
{
x[j]-=x[1];
y[j]-=y[1];
}
angx1=angle(x[2],y[2]);
angx2=angle(x[0],y[0]);
angxx=(angx2+angx1)/2.0;
angi=(angxx/PI)*180;
x[1]=xold[1]+x[1]+(16*cos(angxx));
y[1]=yold[1]+y[1]+(16*sin(angxx));
ra=tv.begin()+((i+1)%size);
ra->nx1=x[1];
ra->ny1=y[1];
}
ra=tv.begin();
if (tv.begin()!=tv.end())
{
while (ra!=tv.end()-1)
{
Canvas->Pen->Color=clRed;
Canvas->MoveTo(ra->x1,ra->y1);
Canvas->LineTo((ra+1)->x1,(ra+1)->y1);
ra++;
}
}
ra=tv.begin();
if (tv.begin()!=tv.end())
{
while (ra!=tv.end()-1)
{
Canvas->Pen->Color=clBlue;
Canvas->MoveTo(ra->nx1,ra->ny1);
Canvas->LineTo((ra+1)->nx1,(ra+1)->ny1);
ra++;
}
}
} |
Partager