示例#1
0
        public void UpdateEdge(int edgeIndex)
        {
            Vector2 vector = (this._edges[edgeIndex].Point1 = this._vertices[(edgeIndex + 1) % this._vertices.Length]) - (this._edges[edgeIndex].Point0 = this._vertices[edgeIndex]);

            this._edges[edgeIndex].Length    = Vector2ex.Normalize(ref vector, 1E-05f);
            this._edges[edgeIndex].Direction = vector;
            this._edges[edgeIndex].Normal    = vector.Perp();
        }
示例#2
0
        public void UpdateEdges()
        {
            int num  = this._vertices.Length;
            int num2 = num - 1;

            for (int i = 0; i < num; i++)
            {
                Vector2 vector = (this._edges[num2].Point1 = this._vertices[i]) - (this._edges[num2].Point0 = this._vertices[num2]);
                this._edges[num2].Length    = Vector2ex.Normalize(ref vector, 1E-05f);
                this._edges[num2].Direction = vector;
                this._edges[num2].Normal    = vector.Perp();
                num2 = i;
            }
        }
        public static float AngleRad(this Vector2 vector, Vector2 target)
        {
            Vector2ex.Normalize(ref vector, 1E-05f);
            Vector2ex.Normalize(ref target, 1E-05f);
            float num = vector.x * target.x + vector.y * target.y;

            if (num > 1f)
            {
                num = 1f;
            }
            else if (num < -1f)
            {
                num = -1f;
            }
            return(Mathf.Acos(num));
        }