-
Notifications
You must be signed in to change notification settings - Fork 0
/
Line.cs
86 lines (81 loc) · 2.45 KB
/
Line.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
namespace Maximum_flow
{
class Line
{
private string myname;
private Point mystart;
private Point myend;
private decimal mygradient;
private decimal myaxisintercept;
public Line(string name, Point start, Point end)
{
this.myname = name;
this.mystart = start;
this.myend = end;
if (myend.X == mystart.X)
{
this.mygradient = 10 ^ 10;
}
else
{
this.mygradient = Convert.ToDecimal(mystart.Y - myend.Y) / Convert.ToDecimal(myend.X - mystart.X);
}
this.myaxisintercept = -mystart.Y - mygradient * mystart.X;
}
public bool Is_Mouse_Over(int mouseX, int mouseY)
{
if (-mygradient * mouseX - myaxisintercept < mouseY + 5 && -mygradient * mouseX - myaxisintercept > mouseY - 5)
{
if (myend.X >= mystart.X)
{
if (mouseX >= mystart.X - 5 && mouseX < myend.X + 5)
{
return true;
}
}
else
{
if (mouseX <= mystart.X + 5 && mouseX > myend.X - 5)
{
return true;
}
}
}
else if (myend.X == mystart.X)
{
if (mouseX >= mystart.X - 5 && mouseX < myend.X + 5)
{
if (myend.Y >= mystart.Y)
{
if (mouseY <= myend.Y + 5 && mouseY > mystart.Y - 5)
{
return true;
}
}
else
{
if (mouseY >= myend.Y - 5 && mouseY < mystart.Y + 5)
{
return true;
}
}
}
}
return false;
}
public Point Start_Point()
{
return mystart;
}
public Point End_Point()
{
return myend;
}
}
}