public ExponentialNotation GetIntensityAtDistance(Vector3 orbitingObjectPosition)
    {
        //todo convert Vector3 into real distance
        ExponentialNotation actualDistance = ConvertVector3ToAU(orbitingObjectPosition);

        return(IntensityCalculator.IntensityAtDistance(this.IntenstityAtSurface, this.Radius, actualDistance));
    }
Example #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);
        }
Example #3
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);
        }
    public void Initialize(ExponentialNotation mass, ExponentialNotation radius)
    {
        this.Mass   = mass;
        this.Radius = radius;
        this.IntenstityAtSurface = IntensityCalculator.IntensityAtSurface(this.Mass, this.Radius);

        ExponentialNotation radiusAsAU = DistanceConverter.Convert(this.Radius, SIUnit.AstronomicalUnits);

        float scaledValue = radiusAsAU.GetNormalizedValue();

        this.gameObject.transform.localScale = new Vector3(
            x: scaledValue,
            y: scaledValue,
            z: scaledValue
            );
    }