public override int Search(int x, int y, out double dist, DrawLevel dl) { int index = -1; dist = -1; dist = Int32.MaxValue; for (int i = 0; i < Rectangles.Count; i++) { if (dl == Rectangles[i].DL & !Rectangles[i].delete) { double _dist = Rectangles[i].Search(x, y); if (dist == -1 & _dist != -1) { dist = _dist; index = i; } else if (_dist < dist & _dist != -1) { dist = _dist; index = i; } } } return(index); }
public override int Search(int x, int y, out double dist, DrawLevel dl) { int index = -1; dist = -1; dist = Int32.MaxValue; for (int i = 0; i < Buildings.Count; i++) { if (dl == Buildings[i].MainMapDL & !Buildings[i].delete) { double _dist = Buildings[i].CalcPointInBuild(x, y); if (dist == -1 & _dist != -1) { dist = _dist; index = i; } else if (_dist < dist & _dist != -1) { dist = _dist; index = i; } } } return(index); }
/// <summary> /// Конструктор /// </summary> /// <param name="x">Координата Х</param> /// <param name="y">Координата У</param> /// <param name="_drawLevel">Уровень отображения</param> public Line(int x, int y, DrawLevel _drawLevel) { Points.Add(new Point(x, y)); Points.Add(new Point(x, y)); DL = _drawLevel; delete = false; }
/// <summary> /// Конструктор /// </summary> /// <param name="x">Координата Х</param> /// <param name="y">Координата У</param> /// <param name="_radius">Радиус</param> /// <param name="_DL">Уровень отображения</param> public Circle(int x, int y, int _radius, DrawLevel _DL) { MainCenterPoint = new Point(x, y); radius = _radius; MainDL = _DL; delete = false; }
public override int Search(int x, int y, DrawLevel dl) { int _i = -1; double _count = Double.MaxValue; for (int i = 0; i < Lines.Count; i++) { if (dl == Lines[i].DL & !Lines[i].delete) { double count = Lines[i].Search(x, y); if (count < _count & count != -1) { _count = count; _i = i; } } } if (_i != -1) { return(_i); } else { return(-1); } }
/// <summary> /// Конструктор /// </summary> /// <param name="x">Координата Х</param> /// <param name="y">Координата У</param> /// <param name="_MDL">Основной уровень отображения</param> /// <param name="_LDL">Локальный уровень отображения</param> public Circle(int x, int y, DrawLevel _MDL, DrawLevel _LDL) { MainCenterPoint = new Point(x, y); radius = 1; MainDL = _MDL; LocalDL = _LDL; delete = false; }
/// <summary> /// Конструктор /// </summary> /// <param name="texture">Текстура</param> /// <param name="dL">Уровень отображения</param> public NetworkElement(Texture texture, DrawLevel dL, int type) { this.type = type; groupname = MainForm.groups.GroupsOfNE[type].name; delete = false; this.texture = texture; DL = dL; }
/// <summary> /// Конструктор /// </summary> /// <param name="x">Координата Х</param> /// <param name="y">Координата У</param> /// /// <param name="_radius">Радиус</param> /// <param name="_MDL">Основной уровень отображения</param> /// <param name="_LDL">Локальный уровень отображения</param> /// <param name="side">Показывает, сбоку или нет находится точка</param> public Circle(int x, int y, int _radius, DrawLevel _MDL, DrawLevel _LDL, bool side) { MainCenterPoint = new Point(x, y); radius = _radius; MainDL = _MDL; LocalDL = _LDL; delete = false; this.side = side; }
/// <summary> /// Конструктор /// </summary> /// <param name="x">Координата Х</param> /// <param name="y">Координата У</param> /// <param name="_drawLevel">Уровень отображения</param> public Polygon(int x, int y, DrawLevel _drawLevel) { TempPoint.X = x; TempPoint.Y = y; Points.Add(TempPoint); ClearTempPoint(); DL = _drawLevel; delete = false; }
/// <summary> /// Добавление входа провода внутри здания /// </summary> /// <param name="x">Координата Х</param> /// <param name="y">Координата У</param> /// <param name="dl">Уровень отображения</param> /// <returns></returns> public bool AddIWInBuild(int x, int y, DrawLevel dl) { if (!InputWires.step) { InputWires.step = true; InputWires.AddTemp(x, y, dl, new DrawLevel(dl.Level, dl.Floor - 1)); return(false); } else { InputWires.step = false; InputWires.AddInBuild(); return(true); } }
/// <summary> /// Поиск входа в здание /// </summary> /// <param name="x">Координата Х</param> /// <param name="y">Координата У</param> /// <param name="dl">Уровень отображения</param> /// <returns>Возвращает идентификатор ближайшего входа в здание</returns> public int SearchEnt(int x, int y, DrawLevel dl) { int index = -1; double dist = Int32.MaxValue; for (int i = 0; i < Circles.Count; i++) { //Внутри if (dl.Level != -1) { if (dl == Circles[i].LocalDL & !Circles[i].delete) { double _dist = Circles[i].SearchEntInBuild(x, y); if (dist == -1 & _dist != -1) { dist = _dist; index = i; } else if (_dist < dist & _dist != -1) { dist = _dist; index = i; } } } //Снаружи else { if (dl == Circles[i].MainDL & !Circles[i].delete) { double _dist = Circles[i].SearchEnt(x, y); if (dist == -1 & _dist != -1) { dist = _dist; index = i; } else if (_dist < dist & _dist != -1) { dist = _dist; index = i; } } } } return(index); }
/// <summary> /// Поиск входа провода внутри здания /// </summary> /// <param name="x">Координата Х</param> /// <param name="y">Координата У</param> /// <param name="dl">Уровень отображения</param> /// <returns>Возвращает расстояние до точки</returns> public double SearchIWInBuild(int x, int y, DrawLevel dl) { if (dl == LocalDL) { if (Math.Pow((x - (double)LocalCenterPoint.X * MainForm.zoom), 2) + Math.Pow((y - (double)LocalCenterPoint.Y * MainForm.zoom), 2) <= Math.Pow((double)MainForm.colorSettings.InputWireRadius * MainForm.zoom, 2)) { return(Math.Abs((double)LocalCenterPoint.X * MainForm.zoom - x + (double)LocalCenterPoint.Y * MainForm.zoom - y)); } } else if (dl == MainDL) { if (Math.Pow((x - (double)MainCenterPoint.X * MainForm.zoom), 2) + Math.Pow((y - (double)MainCenterPoint.Y * MainForm.zoom), 2) <= Math.Pow((double)MainForm.colorSettings.InputWireRadius * MainForm.zoom, 2)) { return(Math.Abs((double)MainCenterPoint.X * MainForm.zoom - x + (double)MainCenterPoint.Y * MainForm.zoom - y)); } } return(-1); }
/// <summary> /// Поиск ближайшего входа /// </summary> /// <param name="x">Координата Х</param> /// <param name="y">Координата У</param> /// <param name="dl">Уровень отображения</param> /// <returns></returns> public int CalcNearestEnterise(int x, int y, DrawLevel dl) { return(Enterances.SearchEnt(x, y, dl)); }
/// <summary> /// Добавление временного элемента /// </summary> /// <param name="x">Координата мыши X</param> /// <param name="y">Координата мыши Y</param> /// <param name="MDL">Уровень отображения</param> /// <param name="LDL">Уровень отображения</param> public void AddTemp(int x, int y, DrawLevel MDL, DrawLevel LDL) { InputWires.TempCircle = new Circle(x, y, rad, MDL, LDL, side); }
/// <summary> /// Поиск ближайшего элемента к заданным координатам, находящимся на этом же уровне отображения /// </summary> /// <param name="x">Координата X</param> /// <param name="y">Координата Y</param> /// <param name="dist">Возвращаемый параметр расстояние до элемента</param> /// <param name="dl">Уровень отображения</param> /// <returns>Возвращает индекс элемента</returns> public abstract int Search(int x, int y, out double dist, DrawLevel dl);
/// <summary> /// Поиск ближайшего элемента к заданным координатам, находящимся на этом же уровне отображения /// </summary> /// <param name="x">Координата X</param> /// <param name="y">Координата Y</param> /// <param name="dl">Уровень отображения</param> /// <returns>Возвращает индекс элемента</returns> public abstract int Search(int x, int y, DrawLevel dl);
public override int Search(int x, int y, DrawLevel dl) { throw new NotImplementedException(); }
/// <summary> /// Поиск ближайшего входа провода в здание /// </summary> /// <param name="x">Координата Х</param> /// <param name="y">Координата У</param> /// <param name="dl">Уровень отображения</param> /// <returns></returns> public int CalcNearestIW(int x, int y, DrawLevel dl) { return(InputWires.SearchIW(x, y, dl)); }
/// <summary> /// Добавление временной точки /// </summary> /// <param name="x">Координата Х</param> /// <param name="y">Координата У</param> /// <param name="MDL">Гланвый уровень отображения</param> /// <param name="LDL">Локальный уровень отображения</param> public void AddTemp(int x, int y, DrawLevel MDL, DrawLevel LDL) { Enterances.TempCircle = new Circle(x, y, rad, MDL, LDL); }