Free cookie consent management tool by TermsFeed Policy Generator

source: branches/RoutePlanning/HeuristicLab.Problems.RoutePlanning/3.3/Osm/RectangleD.cs @ 8308

Last change on this file since 8308 was 8308, checked in by spimming, 12 years ago

#1894:

  • get neighbors for specific node
  • method to calculate weight between two nodes
  • interface for router
  • Dijkstra algorithm initial commit
  • Utils methods added
File size: 2.1 KB
Line 
1using System;
2using System.Drawing;
3
4namespace HeuristicLab.Problems.RoutePlanning.Osm {
5  public class RectangleD {
6    private const int Digits = 4;
7    private double x;
8    private double y;
9    private double width;
10    private double height;
11
12    #region Properties
13
14    public double X {
15      get { return Math.Round(x, Digits); }
16      set { x = value; }
17    }
18
19    public double Y {
20      get { return Math.Round(y, Digits); }
21      set { y = value; }
22    }
23
24    public double Width {
25      get { return Math.Round(width, Digits); }
26      set { width = value; }
27    }
28
29    public double Height {
30      get { return Math.Round(height, Digits); }
31      set { height = value; }
32    }
33
34    public PointD TopLeft {
35      get { return new PointD(X, Y); }
36    }
37
38    public PointD BottomRight {
39      get { return new PointD(X + Width, Y + Height); }
40    }
41
42    public PointD Center {
43      get { return new PointD(X + Width / 2d, Y + Height / 2d); }
44    }
45
46    public double MaxSide {
47      get { return Math.Max(width, height); }
48    }
49
50    public double MinSide {
51      get { return Math.Min(width, height); }
52    }
53
54    #endregion
55
56    #region Constructors
57
58    public RectangleD(double x, double y, double w, double h) {
59      this.x = x;
60      this.y = y;
61      this.width = w;
62      this.height = h;
63    }
64
65    public RectangleD(RectangleD r) {
66      x = r.X;
67      y = r.Y;
68      width = r.Width;
69      height = r.Height;
70    }
71
72    #endregion
73
74    #region Operators
75
76    public static explicit operator RectangleF(RectangleD r) {
77      return new RectangleF((float)r.X, (float)r.Y, (float)r.Width, (float)r.Height);
78    }
79
80    #endregion
81
82    #region Overridden Methods
83
84    public override bool Equals(object obj) {
85      if (obj is RectangleD) {
86        RectangleD r = (RectangleD)obj;
87        return (X == r.X && Y == r.Y && Width == r.Width && Height == r.Height);
88      }
89      return false;
90    }
91
92    public override int GetHashCode() {
93      return ((RectangleF)this).GetHashCode();
94    }
95
96    #endregion
97  }
98}
Note: See TracBrowser for help on using the repository browser.