示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }