47 lines
1007 B
C#
47 lines
1007 B
C#
|
#if GRIFFIN
|
||
|
using UnityEngine;
|
||
|
using System.Collections;
|
||
|
using System.Collections.Generic;
|
||
|
using Unity.Mathematics;
|
||
|
|
||
|
namespace Pinwheel.Griffin
|
||
|
{
|
||
|
public struct GQuad2D
|
||
|
{
|
||
|
public float2 p0, p1, p2, p3;
|
||
|
|
||
|
public GQuad2D(float2 p0, float2 p1, float2 p2, float2 p3)
|
||
|
{
|
||
|
this.p0 = p0;
|
||
|
this.p1 = p1;
|
||
|
this.p2 = p2;
|
||
|
this.p3 = p3;
|
||
|
}
|
||
|
|
||
|
public bool Contains(float2 point)
|
||
|
{
|
||
|
Vector2 d0, d1;
|
||
|
float c0, c1, c2, c3;
|
||
|
|
||
|
d0 = p1 - p0;
|
||
|
d1 = point - p0;
|
||
|
c0 = GMath.Float2Cross(d0, d1);
|
||
|
|
||
|
d0 = p2 - p1;
|
||
|
d1 = point - p1;
|
||
|
c1 = GMath.Float2Cross(d0, d1);
|
||
|
|
||
|
d0 = p3 - p2;
|
||
|
d1 = point - p2;
|
||
|
c2 = GMath.Float2Cross(d0, d1);
|
||
|
|
||
|
d0 = p0 - p3;
|
||
|
d1 = point - p3;
|
||
|
c3 = GMath.Float2Cross(d0, d1);
|
||
|
|
||
|
return c0 > 0 && c1 > 0 && c2 > 0 && c3 > 0;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
#endif
|