using System;
using Microsoft.Research.DynamicDataDisplay.Common.Auxiliary;
using System.Windows;
namespace Microsoft.Research.DynamicDataDisplay.Charts.Isolines
{
///
/// Represents quadrangle; its points are arranged by round in one direction.
///
internal sealed class Quad
{
private readonly Point v00;
public Point V00
{
get { return v00; }
}
private readonly Point v01;
public Point V01
{
get { return v01; }
}
private readonly Point v10;
public Point V10
{
get { return v10; }
}
private readonly Point v11;
public Point V11
{
get { return v11; }
}
public Quad(Point v00, Point v01, Point v11, Point v10)
{
DebugVerify.IsNotNaN(v00);
DebugVerify.IsNotNaN(v01);
DebugVerify.IsNotNaN(v11);
DebugVerify.IsNotNaN(v10);
this.v00 = v00;
this.v01 = v01;
this.v10 = v10;
this.v11 = v11;
}
///
/// Determines whether this quad contains the specified point.
///
/// The point
///
/// true if quad contains the specified point; otherwise, false.
///
public bool Contains(Point pt)
{
// breaking quad into 2 triangles,
// points contains in quad, if it contains in at least one half-triangle of it.
return TriangleMath.TriangleContains(v00, v01, v11, pt) || TriangleMath.TriangleContains(v00, v10, v11, pt);
}
}
}