IsoUtil.pas
上传用户:ctlcnc
上传日期:2021-12-10
资源大小:4933k
文件大小:1k
源码类别:

2D图形编程

开发平台:

Delphi

  1. unit IsoUtil;
  2. interface
  3. procedure Iso2Line(Xmap,Ymap:Integer;out Xline,Yline:Integer);
  4. procedure Line2Iso(Xline,Yline:Integer;out Xmap,Ymap:Integer);
  5. procedure TileAtCoord(Xcoord,Ycoord,TileWidth,TileHeight:Integer;out Xmap,Ymap:Integer);
  6. procedure CoordAtTile(Xmap,Ymap,TileWidth,TileHeight:Integer;out Xcoord,Ycoord:Integer);
  7. implementation
  8. procedure Iso2Line(Xmap,Ymap:Integer;out Xline,Yline:Integer);
  9. begin
  10.  Yline:=(Ymap shr 1)-Xmap;
  11.  Xline:=Xmap+(Ymap and 1)+(Ymap shr 1);
  12. end;
  13. procedure Line2Iso(Xline,Yline:Integer;out Xmap,Ymap:Integer);
  14. begin
  15.  Xmap:=(Xline-Yline) shr 1;
  16.  Ymap:=Xline+Yline;
  17. end;
  18. procedure TileAtCoord(Xcoord,Ycoord,TileWidth,TileHeight:Integer;out Xmap,Ymap:Integer);
  19. Var Thh,Twh:Integer;
  20. begin
  21.  Twh:=TileWidth div 2;
  22.  Thh:=TileHeight div 2;
  23.  Ymap:=Ycoord div Thh;
  24.  Xmap:=(Xcoord-((Ymap and 1)*Twh)) div TileWidth;
  25. end;
  26. procedure CoordAtTile(Xmap,Ymap,TileWidth,TileHeight:Integer;out Xcoord,Ycoord:Integer);
  27. Var Thh,Twh:Integer;
  28. begin
  29.  Twh:=TileWidth div 2;
  30.  Thh:=TileHeight div 2;
  31.  Ycoord:=Ymap*Thh;
  32.  Xcoord:=(Xmap*TileWidth)+((Ymap and 1)*Twh);
  33. end;
  34. end.
  35.