/// <summary>
        /// Finds the electric field at a position relating to a charged physical object.
        /// </summary>
        /// <param name="p">Physics Object</param>
        /// <param name="position">Spacial position for measurement</param>
        /// <returns></returns>
        public static Vector ElectricFieldAtPoint(this PhysicsObjectBase p, Vector position)
        {
            /// F =  k * (p q / r^2) r_hat
            ///
            ///r_hat <==== unit vector in direction pq

            return((Constants.Common.K_Coulomb * p.Charge / Math.Pow(p.Position.DistanceTo(position), 2)) * (position - p.Position).Normalised());
        }
        public static Vector ElectricForce(this List <PointCharge> charges, PhysicsObjectBase q)
        {
            Vector force = new Vector();

            foreach (PhysicsObjectBase p in charges)
            {
                force += p.ElectricForceOn(q);
            }

            return(force);
        }
 public static Vector ElectricForceOn(this PhysicsObjectBase p, PhysicsObjectBase q)
 {
     return(p.ElectricFieldAtPoint(q.Position) * q.Charge);
 }
Пример #4
0
 /// <summary>
 /// Calculates the distance in metres between two physical objects
 /// </summary>
 /// <returns>Distance in metres</returns>
 public static double DistanceTo(this PhysicsObjectBase obj, PhysicsObjectBase obj2)
 {
     return((obj.Position - obj2.Position).Abs());
 }