private float SignedDoubleArea()
{
uint index, nextIndex;
uint n = (uint)_vertices.Count;
Vector2 point, next;
float signedDoubleArea = 0;
for (index = 0; index < n; ++index)
{
nextIndex = (index + 1) % n;
point = _vertices[(int)index];
next = _vertices[(int)nextIndex];
signedDoubleArea += point.x * next.y - next.x * point.y;
}
return signedDoubleArea;
}