Reputation: 2311
I can compute horizontal and vertical points, but I cant figure out how to compute distance using diagonal points. Can someone help me with this.
here's the code for my horizontal and vertical measuring:
private float ComputeDistance(float point1, float point2)
{
float sol1 = point1 - point2;
float sol2 = (float)Math.Abs(Math.Sqrt(sol1 * sol1));
return sol2;
}
protected override void OnMouseMove(MouseEventArgs e)
{
_endPoint.X = e.X;
_endPoint.Y = e.Y;
if (ComputeDistance(_startPoint.X, _endPoint.X) <= 10)
{
str = ComputeDistance(_startPoint.Y, _endPoint.Y).ToString();
}
else
{
if (ComputeDistance(_startPoint.Y, _endPoint.Y) <= 10)
{
str = ComputeDistance(_startPoint.X, _endPoint.X).ToString();
}
}
}
Assuming that the _startPoint has been already set.
In this image the diagonal point is obviously wrong.
Upvotes: 7
Views: 13047
Reputation: 3318
Well you might take a look at: https://en.wikipedia.org/wiki/Pythagorean_theorem
Upvotes: 3
Reputation: 27605
Much time later... I'd like to add that you could use some built-in functionality of .NET:
using System.Windows;
Point p1 = new Point(x1, y1);
Point p2 = new Point(x2, y2);
Vector v = p1 - p2;
double distance = v.Length;
or simply:
static double Distance(double x1, double x2, double y1, double y2)
{
return (new Point(x1, y1) - new Point(x2, y2)).Length;
}
Upvotes: 0
Reputation: 994071
I think you're looking for the Euclidean distance formula.
In mathematics, the Euclidean distance or Euclidean metric is the "ordinary" distance between two points that one would measure with a ruler, and is given by the Pythagorean formula.
Upvotes: 6
Reputation: 32586
You need to use Pythagoras' theorem.
d = Math.Sqrt(Math.Pow(end.x - start.x, 2) + Math.Pow(end.y - start.y, 2))
Upvotes: 18