⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 entities.pas

📁 sybase大全
💻 PAS
字号:
unit Entities;
interface
uses classes;

type
  SybObjectname = string[30];

type TLinks = class(TObject)
  public
    From_Entity  :SybObjectname;
    From_Field   :SybObjectname;
    From_X       :Integer;
    From_Y       :Integer;
    Real_From_X  :Integer;
    Real_From_Y  :Integer;
    To_Entity    :SybObjectname;
    To_Field     :SybObjectname;
    To_X         :Integer;
    To_Y         :Integer;
    Real_To_X    :Integer;
    Real_To_Y    :Integer;
  end;
  
var EntityList       :TList;
    linklist         :TList;
    oldlinklist      :TList;

    First_Entity     :byte;
    first_link       :byte;

    linking          :boolean;
    lnk_from_entity  :SybObjectname;
    lnk_from_field   :SybObjectname;
    lnk_from_X       :Integer;
    lnk_from_Y       :Integer;
    lnk_to_entity    :SybObjectname;
    lnk_to_field     :SybObjectname;
    lnk_to_X         :Integer;
    lnk_to_Y         :Integer;

    function online(where_x,where_y :integer; var real_from_x,
                                                  real_from_y,
                                                  real_to_x,
                                                  real_to_y:integer):boolean;
    function check_online(x1,y1,x2,y2,x,y :integer):boolean;

implementation

function online(where_x,where_y :integer; var real_from_x,
                                              real_from_y,
                                              real_to_x,
                                              real_to_y:integer):boolean;
var i      :integer;
    x1,x2,
    y1,y2  :integer;
begin
  result:=false;
  if linklist = nil then
    exit;
  for i:=0 to linklist.count-1 do
  begin
    x1:=tlinks(linklist[i]).real_from_x;
    x2:=tlinks(linklist[i]).real_to_x;
    y1:=tlinks(linklist[i]).real_from_y;
    y2:=tlinks(linklist[i]).real_to_y;
    real_from_x:=x1;
    real_from_y:=y1;
    real_to_x:=x2;
    real_to_y:=y2;

    result:=check_online(x1,y1,x2,y2,where_x,where_y);
    if result then
      exit;
  end;
end;

function check_online(x1,y1,x2,y2,x,y :integer):boolean;
var c,m   :real;
begin
  result:=false;

  m:= (y2 - y1) / (x2 - x1);
  c:=y1 - (m * x1);

  result:= (abs(((m * x) + c)-y) <= 20)
         and (((x>=x1) and (x<=x2))
           or ((x>=x2) and (x<=x1)))
         and (((y>=y1) and (y<=y2))
           or ((y>=y2) and (y<=y1)));
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -