Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML Function MoveTank(x0, y0, x1, y1, alpha: integer ): integer ; var newAlpha: integer ; // FlagsField : byte; // angle_tmp: integer ; TmpStr: string; angle, dist: byte; // , begin // newAlpha := Round(ArcTan(Abs((x0-x1)/(y0-y1)))); // angle_tmp := (360 + newAlpha - alpha) mod 360; // dist := Round(10*Sqrt(Sqr(x0-x1) + Sqr(y0-y1))); FlagsField := 0; // if angle_tmp <= 90 then FlagsField := 0 // , else if angle_tmp < 180 then begin angle_tmp := 180 - angle_tmp; FlagsField := FlagsField or 4; // , end else if angle_tmp < 270 then begin angle_tmp := angle_tmp - 180; FlagsField := FlagsField or 6; // , end else begin angle_tmp := angle_tmp - 270; FlagsField := FlagsField or 2; //, end ; angle := angle_tmp; // COM- , . FlagsField:= FlagsField or 1; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(angle); ComPort_. Write (TmpStr); FlagsField:= FlagsField and 254; // TmpStr := Chr(FlagsField); ComPort_. Write (TmpStr); TmpStr := Chr(dist); ComPort_. Write (TmpStr); Result := newAlpha; end ;
Copy Source | Copy HTML
- #include "AFMotor.h" // library for easy handling of engines
- #define TX 9 // pin to Arduino where the output from the COM port is connected
- // coding commands from the joystick
- #define cmdForward 1
- #define cmdBackward 2
- #define cmdRapid Left 3
- #define cmdRapid Right 4
- #define cmd Left 5
- #define cmd Right 6
- // speed of rotation of engines
- // MaxSpeed - normal motion
- // MinSpeed - the speed of one of the tracks during a sharp turn
- // HalfSpeed - the speed of one of the tracks with a smooth turn
- #define MaxSpeed 200
- #define MinSpeed 100
- #define HalfSpeed 150
- // movement of the tank with the speeds of the left and right tracks LTS and RTS
- // towards Direction
- void MoveTank ( byte LTS, byte RTS, byte Direction );
- // read one byte from the COM port
- byte COMread ();
- // stores the command received from the COM port
- byte Command = 0 ;
- // current direction of travel
- byte Current Direction = FORWARD;
- // select the 1st and 2nd connectors on the Motor Shield, where the engines are connected
- AF_DCMotor Left Track ( 1, MOTOR12_1KHZ );
- AF_DCMotor Right Track ( 2, MOTOR12_1KHZ );
- void setup ()
- {
- Left Track.setSpeed ( MaxSpeed );
- Right Track.setSpeed ( MaxSpeed );
- pinMode ( TX, INPUT );
- }
- void loop ()
- {
- Command = COMread ();
- switch ( Command )
- {
- case cmdForward:
- MoveTank ( MaxSpeed, MaxSpeed, FORWARD );
- Current Direction = FORWARD;
- break;
- case cmdBackward:
- MoveTank ( MaxSpeed, MaxSpeed, BACKWARD );
- Current Direction = BACKWARD;
- break;
- case cmdRapid Left :
- MoveTank ( MinSpeed, MaxSpeed, CurrentDirection );
- break;
- case cmdRapid Right :
- MoveTank ( MaxSpeed, MinSpeed, CurrentDirection );
- break;
- case cmd Left :
- MoveTank ( HalfSpeed, MaxSpeed, CurrentDirection );
- break;
- case cmd Right :
- MoveTank ( MaxSpeed, HalfSpeed, CurrentDirection );
- break;
- default :
- Left Track.run ( RELEASE ); // stop the engines
- Right Track.run ( RELEASE );
- break;
- }
- }
- void MoveTank ( byte LTS, byte RTS, byte Direction )
- {
- Left Track.setSpeed ( LTS );
- Right Track.setSpeed ( RTS );
- Left Track.run ( Direction );
- Right Track.run ( Direction );
- }
- byte COMread ()
- {
- byte val = 0 ;
- while ( digitalRead (TX ));
- // waiting for the start bit
- if ( digitalRead (TX ) == LOW )
- {
- delayMicroseconds ( 42 );
- for ( int k = 0; k <8; k ++ )
- {
- delayMicroseconds ( 84 );
- val | = digitalRead ( TX ) << k;
- }
- // waiting for the 9th bit and stop
- delayMicroseconds ( 168 );
- return val;
- }
- }
Source: https://habr.com/ru/post/90590/
All Articles