public static int Vector3FarthestFromEdge(Vector2 a, Vector2 b, Vector2[] p, int n)
{
var vector = b - a;
var vector2 = new Vector2(-vector.Y, vector.X);
var num = -1;
var minValue = Single.MinValue;
var num3 = Single.MinValue;
for (var i = 1; i < n; i++)
{
var num5 = Vector2.Dot(p[i] - a, vector2);
var num6 = Vector2.Dot(p[i] - a, vector);
if ((num5 <= minValue) && ((num5 != minValue) || (num6 <= num3))) continue;
num = i;
minValue = num5;
num3 = num6;
}
return num;
}