コード例 #1
0
ファイル: VectorMath.cs プロジェクト: Tassadar2499/BadGuys
        /// <summary>
        /// Получение единичного вектора из текущего вектора
        /// </summary>
        public static Vector2f GetUnitVector(this Vector2f vector)
        {
            if (vector.Equals(new Vector2f()))
            {
                return(vector);
            }

            return(vector / vector.GetLength());
        }
コード例 #2
0
ファイル: User.cs プロジェクト: aoltra/Galaga-SFML.Net
        public Symmetric(CurvePath curve, Vector2f [] axis)
        {
            Debug.Assert((axis[0].X == axis[1].X || axis[0].Y == axis[1].Y) &&
                         (axis[0].X != axis[1].X || axis[0].Y != axis[1].Y), 
                         "Simetría con respecto a ejes no ortogonales no soportada");

            Debug.Assert(axis.GetLength(0) == 2, "Eje mal expresado");

            _coef = new float [2*curve.NumSegments,5];
            for (int seg = 0; seg < curve.NumSegments; seg++)
            {
                // simetría vertical
                if (axis[0].X == axis[1].X)
                {    
                    _coef[2 * seg, 0] = 2*axis[0].X - curve.Coefficients[2 * seg, 0];
                    _coef[2 * seg + 1, 0] = curve.Coefficients[2 * seg + 1, 0];
                } 
                else 
                {
                    _coef[2 * seg, 0] = curve.Coefficients[2 * seg, 0];
                    _coef[2 * seg + 1, 0] = 2 * axis[0].Y - curve.Coefficients[2 * seg + 1, 0]; ;
                }

                // copio la longitud
                _coef[2 * seg + 1, 4] = _coef[2 * seg, 4] = curve.Coefficients[2 * seg, 4];

                for (int grade=1;grade<4;grade++)
                {
                    // simetría vertical
                    if (axis[0].X == axis[1].X)
                    {
                        _coef[2 * seg, grade] = -1 * curve.Coefficients[2 * seg, grade];
                        _coef[2 * seg + 1, grade] = curve.Coefficients[2 * seg + 1, grade];
                    }
                    else // simetría horizontal
                    {
                        _coef[2 * seg, grade] = curve.Coefficients[2 * seg, grade];
                        _coef[2 * seg + 1, grade] = -1 * curve.Coefficients[2 * seg + 1, grade];
                    }
                }
            }

            _totalLength = curve.Length;
        }
コード例 #3
0
        /// <summary>
        /// Returns the normal of the vector
        /// </summary>
        /// <param name="self"></param>
        /// <returns>The normal of this vector</returns>
        public static Vector2f Normalize(this Vector2f self)
        {
            float length = self.GetLength();

            return(new Vector2f(self.X / length, self.Y / length));
        }