Example #1
0
        public bool point_in_poly2D(Vector3 point, Sidedness side)
        {
            var prevIdx = 0;

            for (var i = NumPoints - 1; i >= 0; i--)
            {
                var prevVertex = Vertices[prevIdx];
                var vertex     = Vertices[i];

                var diff = vertex - prevVertex;

                // 2d cross product difference?
                var diffCross = -(diff.Y * vertex.X) - (diff.X * vertex.Y) + (diff.X * point.Y) + (diff.Y * point.X);

                if (side != Sidedness.Positive)
                {
                    if (diffCross < 0.0f)
                    {
                        return(false);
                    }
                }
                else
                {
                    if (diffCross > 0.0f)
                    {
                        return(false);
                    }
                }
                prevIdx = i;
            }
            return(true);
        }
Example #2
0
 public PString(string value, int index, int endIndex, Pos pos, Pos defPos, Sidedness side, Option<object> userState)
 {
     Value = value;
     Index = index;
     EndIndex = endIndex;
     Pos = pos;
     DefPos = defPos;
     Side = side;
     UserState = userState;
 }
Example #3
0
 public PString(T[] value, int index, int endIndex, Pos pos, Pos defPos, Sidedness side, Option <object> userState)
 {
     Value     = value;
     Index     = index;
     EndIndex  = endIndex;
     Pos       = pos;
     DefPos    = defPos;
     Side      = side;
     UserState = userState;
 }
Example #4
0
 public PString(string value, int index, int endIndex, Pos pos, Pos defPos, Sidedness side, Option <object> userState)
 {
     Value     = value ?? throw new ArgumentNullException(nameof(value));
     Value     = value;
     Index     = index;
     EndIndex  = endIndex;
     Pos       = pos;
     DefPos    = defPos;
     Side      = side;
     UserState = userState;
 }
Example #5
0
 public PString SetSide(Sidedness side) =>
     new PString(Value, Index, EndIndex, Pos, DefPos, side, UserState);
Example #6
0
 public PString <T> SetSide(Sidedness side) =>
 new PString <T>(Value, Index, EndIndex, Pos, DefPos, side, UserState);