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
|
//-- Calcul du vecteur
//If sommexmx2<>0 then Rxx := grandrayon * sin(i*PI/180+(sommexmxymy/sommexmx2));
// If sommexmx2<>0 then Ryy := petitrayon * cos(i*PI/180+(sommexmxymy/sommexmx2));
//-- On applique la matrice de rotation par rapport au centre de coordonnées Cx,Cy au vecteur
// If sommexmx2<>0 then xx := mx + Rxx*cos(ARCTAN(sommexmxymy/sommexmx2)) - Ryy*sin(ARCTAN(sommexmxymy/sommexmx2));
// If sommexmx2<>0 then yy := my + Rxx*sin(ARCTAN(sommexmxymy/sommexmx2)) + Ryy*cos(ARCTAN(sommexmxymy/sommexmx2));
for i:= 0 to 360 do begin
//-- Calcul du vecteur
If StrToFloat(ellipsescalc.cells[8,ellipsescalc.rowcount-2])<>0 then
begin
Rxx := grandrayon * sin(i*PI/180+ARCTAN(StrToFloat(ellipsescalc.cells[10,ellipsescalc.rowcount-2])/StrToFloat(ellipsescalc.cells[8,ellipsescalc.rowcount-2])));
Ryy := petitrayon * cos(i*PI/180+ARCTAN(StrToFloat(ellipsescalc.cells[10,ellipsescalc.rowcount-2])/StrToFloat(ellipsescalc.cells[8,ellipsescalc.rowcount-2])));
//-- On applique la matrice de rotation par rapport au centre de coordonnées Cx,Cy au vecteur
xx :=StrToFloat( EllipsesCalc.Cells[1,ellipsescalc.rowcount-1])
+ Rxx*cos(ARCTAN(StrToFloat(ellipsescalc.cells[10,ellipsescalc.rowcount-2])/StrToFloat(ellipsescalc.cells[8,ellipsescalc.rowcount-2])))
- Ryy*sin(ARCTAN(StrToFloat(ellipsescalc.cells[10,ellipsescalc.rowcount-2])/StrToFloat(ellipsescalc.cells[8,ellipsescalc.rowcount-2])));
yy := StrToFloat(EllipsesCalc.Cells[2,ellipsescalc.rowcount-1])
+ Rxx*sin(ARCTAN(StrToFloat(ellipsescalc.cells[10,ellipsescalc.rowcount-2])/StrToFloat(ellipsescalc.cells[8,ellipsescalc.rowcount-2])))
+ Ryy*cos(ARCTAN(StrToFloat(ellipsescalc.cells[10,ellipsescalc.rowcount-2])/StrToFloat(ellipsescalc.cells[8,ellipsescalc.rowcount-2])));
//-- On mémorise les coordonnées du point
ellipsesGrid.cells[1,i+1] :=FloatToStr(xx);
ellipsesGrid.Cells[2,i+1] :=FloatToStr(yy); |
Partager