public ExponentialNotation GetIntensityAtDistance(Vector3 orbitingObjectPosition) { //todo convert Vector3 into real distance ExponentialNotation actualDistance = ConvertVector3ToAU(orbitingObjectPosition); return(IntensityCalculator.IntensityAtDistance(this.IntenstityAtSurface, this.Radius, actualDistance)); }
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 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 ); }