using System; namespace Science.Physics.GeneralPhysics { /// /// SimpleHarmonicMotion /// public class SimpleHarmonicMotion { public SimpleHarmonicMotion() { } private double A, omega, phi, T, f, k, m; public double Amplitude { get{return A;} set{A=value;} } public double AngularFrequency { get{return omega;} set{omega=value;} } public double PhaseConstant { get{return phi;} set{phi=value;} } public double Period { get{return T;} set{T=value;} } public double Frequency { get{return f;} set{f=value;} } public void FindFrequencyFromPeriod() { f = 1.0/T; } public void FindFrequencyFromAngularFrequency() { f = omega/2.0/Math.PI; } public void FindPeriodFromFrequency() { T = 1.0/f; } public void FindPeriodFromAngularFrequency() { T = 2.0*Math.PI/omega; } public void FindAngularFrequencyFromPeriod() { omega = 2.0*Math.PI/T; } public void FindAngularFrequencyFromFrequency() { omega = f*2.0*Math.PI; } public void FindAngularFrequencyOfMassSpringSystem() { omega = Math.Sqrt(k/m); } public void FindSpringForceConstant() { k = omega*omega*m; } public double Position(Time t) { return A*Math.Cos(omega*t.s+phi); } public double Velocity(Time t) { return -A*omega*Math.Sin(omega*t.s+phi); } public double Acceleration(Time t) { return -A*omega*omega*Math.Cos(omega*t.s+phi); } public double VelocityMaximum { get{return A*omega;} } public double AccelerationMaximum { get{return A*omega*omega;} } public double SpringForceConstant { get{return k;} set{k=value;} } public double Mass { get{return m;} set{m=value;} } public double TotalEnergy { get{return 0.5*k*A*A;} } public double KineticEnergy(Time t) { return 0.5*m*Velocity(t)*Velocity(t); } public double PotentialEnergy(Time t) { return 0.5*k*Position(t)*Position(t); } } }