public void RaysPhase_Test() { var microphone = new List <MicrophoneSphere>() { new MicrophoneSphere(new System.Numerics.Vector3(2, 1.6f, 1.7f), 0.1f) }; var rayGeometryGenerator = new RayGeometry(new Vector3(0, 0.5f, 0), microphone, 1000, 3, 200); rayGeometryGenerator.GenerateRays(); var rays = rayGeometryGenerator.GetIntersectedRays(microphone[0]); rays.Sort((first, second) => first.GetDistance().CompareTo(second.GetDistance())); var myRays = new Dictionary <int, List <AcousticRay> >(); myRays.Add(microphone[0].Id, rays); var intensityCalculator = new IntensityCalculator(myRays, microphone, 1); intensityCalculator.ComputePower(); var phaseCalculator = new PhaseCalculator(myRays, microphone, intensityCalculator.Intensities); phaseCalculator.ComputePhase(1000); double epsilon = 1e-4; Assert.IsTrue(Math.Abs(phaseCalculator.EchogramMagnitudePhase[microphone[0].Id][0].Real + 0.002589105375) < epsilon); }
public void ComputeIntensityForDirectRay_Test() { var microphone = new List <MicrophoneSphere>() { new MicrophoneSphere(new System.Numerics.Vector3(0, 0, 1.976f), 0.1f) }; var rayGeometryGenerator = new RayGeometry(new Vector3(0, 0, 0), microphone, 3, 3, 200); rayGeometryGenerator.GenerateRays(); var rays = rayGeometryGenerator.GetIntersectedRays(microphone[0]); rays.Sort((first, second) => first.GetDistance().CompareTo(second.GetDistance())); var myRays = new Dictionary <int, List <AcousticRay> >(); myRays.Add(microphone[0].Id, rays); var intensityCalculator = new IntensityCalculator(myRays, microphone, 1); intensityCalculator.ComputePower(); Assert.IsTrue(Math.Abs(intensityCalculator.Intensities[microphone[0].Id][0] - 0.02038056768) < 1e-3); }
public void ZeroIntersectedRaysWithCollision_Test() { var microphone = new List <MicrophoneSphere>() { new MicrophoneSphere(new System.Numerics.Vector3(2, 1.3f, 1.7f), 0.1f) }; var rayGeometryGenerator = new RayGeometry(new Vector3(0, 0, 0), microphone, 2, 3, 200); rayGeometryGenerator.GenerateRays(); var newRays = rayGeometryGenerator.GetIntersectedRays(microphone[0]); newRays.Sort((first, second) => first.GetDistance().CompareTo(second.GetDistance())); Assert.IsTrue(newRays.Count == 1); }