Archive Browser
Download SliceRectangleSample.zip, last updated 10/02/2013 (23.18 KB)
Download- md5: 1e8ccdf10305cc43789e4fa28c96006b
using System;
using System.Drawing;
namespace SliceRectangleSample
{
internal static class Intersection
{
#region Class Members
public static Point FindLineIntersection(Point start1, Point end1, Point start2, Point end2)
{
float denom;
int x;
int y;
// http://stackoverflow.com/a/1120126/148962
denom = ((end1.X - start1.X) * (end2.Y - start2.Y)) - ((end1.Y - start1.Y) * (end2.X - start2.X));
x = 0;
y = 0;
// ReSharper disable CompareOfFloatsByEqualityOperator
if (denom != 0) // ReSharper restore CompareOfFloatsByEqualityOperator
{
float numer;
float r;
float numer2;
float s;
numer = ((start1.Y - start2.Y) * (end2.X - start2.X)) - ((start1.X - start2.X) * (end2.Y - start2.Y));
r = numer / denom;
numer2 = ((start1.Y - start2.Y) * (end1.X - start1.X)) - ((start1.X - start2.X) * (end1.Y - start1.Y));
s = numer2 / denom;
if (r >= 0 && r <= 1 && s >= 0 && s <= 1)
{
x = Convert.ToInt32(start1.X + (r * (end1.X - start1.X)));
y = Convert.ToInt32(start1.Y + (r * (end1.Y - start1.Y)));
}
}
return new Point(x, y);
}
#endregion
}
}
Donate
This software may be used free of charge, but as with all free software there are costs involved to develop and maintain.
If this site or its services have saved you time, please consider a donation to help with running costs and timely updates.
Donate