Exemple #1
0
        public Vector2f Lerp(Vector2f target, float alpha)
        {
            Vector2f r = this.Mul(1.0f - alpha);

            r.Add(target.Tmp().Mul(alpha));
            return(r);
        }
Exemple #2
0
		public static Vector2f GetVelocity(Vector2f velocity, Vector2f force,
				float mass) {
			Vector2f acceleration = new Vector2f(force.GetX() / mass, force.GetY()
					/ mass);
			velocity.Add(acceleration);
			return velocity;
		}
Exemple #3
0
        public bool Intersects(Line other)
        {
            Vector2f lineSegmentStart = new Vector2f(other.GetX1(), other.GetY1());
            Vector2f lineSegmentEnd   = new Vector2f(other.GetX2(), other.GetY2());
            Vector2f circleCenter     = new Vector2f(GetCenterX(), GetCenterY());
            Vector2f closest;
            Vector2f segv       = lineSegmentEnd.Sub(lineSegmentStart);
            Vector2f ptv        = circleCenter.Sub(lineSegmentStart);
            float    segvLength = segv.Len();
            float    projvl     = ptv.Dot(segv) / segvLength;

            if (projvl < 0)
            {
                closest = lineSegmentStart;
            }
            else if (projvl > segvLength)
            {
                closest = lineSegmentEnd;
            }
            else
            {
                Vector2f projv = segv.Mul(projvl / segvLength);
                closest = lineSegmentStart.Add(projv);
            }
            bool intersects = circleCenter.Sub(closest).LengthSquared() <= GetRadius()
                              * GetRadius();

            return(intersects);
        }
Exemple #4
0
 public static Vector2f GetVelocity(Vector2f velocity, List<Vector2f> forces)
 {
     foreach (Vector2f v in forces)
     {
         velocity.Add(v);
     }
     return velocity;
 }
Exemple #5
0
        public static Vector2f Sum(IList <Vector2f> summands)
        {
            Vector2f result = new Vector2f(0, 0);

            for (IEnumerator <Vector2f> it = summands.GetEnumerator(); it.MoveNext();)
            {
                Vector2f v = it.Current;
                result.Add(v);
            }
            return(result);
        }
Exemple #6
0
		public bool Intersects(Line other) {
			Vector2f lineSegmentStart = new Vector2f(other.GetX1(), other.GetY1());
			Vector2f lineSegmentEnd = new Vector2f(other.GetX2(), other.GetY2());
			Vector2f circleCenter = new Vector2f(GetCenterX(), GetCenterY());
			Vector2f closest;
			Vector2f segv = lineSegmentEnd.Sub(lineSegmentStart);
			Vector2f ptv = circleCenter.Sub(lineSegmentStart);
			float segvLength = segv.Len();
			float projvl = ptv.Dot(segv) / segvLength;
			if (projvl < 0) {
				closest = lineSegmentStart;
			} else if (projvl > segvLength) {
				closest = lineSegmentEnd;
			} else {
				Vector2f projv = segv.Mul(projvl / segvLength);
				closest = lineSegmentStart.Add(projv);
			}
			bool intersects = circleCenter.Sub(closest).LengthSquared() <= GetRadius()
					* GetRadius();
			return intersects;
		}
Exemple #7
0
        public static Vector2f Sum(Vector2f a, Vector2f b)
        {
            Vector2f answer = new Vector2f(a);

            return(answer.Add(b));
        }
Exemple #8
0
		public static Vector2f Sum(Vector2f a, Vector2f b) {
			Vector2f answer = new Vector2f(a);
			return answer.Add(b);
		}
Exemple #9
0
 public static Vector2f Sum(IList<Vector2f> summands)
 {
     Vector2f result = new Vector2f(0, 0);
     for (IEnumerator<Vector2f> it = summands.GetEnumerator(); it.MoveNext(); )
     {
         Vector2f v = it.Current;
         result.Add(v);
     }
     return result;
 }
Exemple #10
0
 public static Vector2f GetVelocity(Vector2f velocity, Vector2f force)
 {
     velocity.Add(force);
     return velocity;
 }