Ejemplo n.º 1
0
        public override List <Sample3D[]> GetSamples3D(float fidelity)
        {
            List <Sample3D[]> result = new List <Sample3D[]>();

            Sample3D[] array         = new Sample3D[BlankingPadding * 2 + BrightnessPattern.Count * RepeatCount];
            int        innerPaddingI = 0;

            for (int i = 0; i < array.Length; i++)
            {
                array[i].Position = new Vector3(StepDistance * i - StepDistance * BlankingPadding, 0, 0);
                if (i < BlankingPadding || i >= array.Length - BlankingPadding)
                {
                    array[i].Brightness = 0;
                }
                else
                {
                    array[i].Brightness = BrightnessPattern[innerPaddingI];
                    innerPaddingI++;
                    if (innerPaddingI >= BrightnessPattern.Count)
                    {
                        innerPaddingI = 0;
                    }
                }
            }
            result.Add(array);
            return(result);
        }
Ejemplo n.º 2
0
        public override List <Sample3D[]> GetSamples3D(float fidelity)
        {
            List <Sample3D[]> result = new List <Sample3D[]>(1);
            int numCircles           = BlankingCircles + 1 + BlankingCircles;

            Sample3D[] array = new Sample3D[numCircles * SamplesPerCircle];
            for (int i = 0; i < array.Length; i++)
            {
                double radians   = i * (MathHelper.TwoPi / SamplesPerCircle);
                float  expansion = 1f + (i - BlankingCircles * SamplesPerCircle) * (ExpansionPerCircle / SamplesPerCircle);
                array[i].Position = new Vector3((float)Math.Sin(radians) * expansion, (float)Math.Cos(radians) * expansion, 0);

                if (i >= BlankingCircles * SamplesPerCircle && i <= (BlankingCircles + 1) * SamplesPerCircle)
                {
                    array[i].Brightness = 1f;
                }
                else
                {
                    array[i].Brightness = 0f;
                }
            }

            result.Add(array);
            return(result);
        }
Ejemplo n.º 3
0
        private float height = 1f; // scale with Transform if you want to change this.

        public override List <Sample3D[]> GetSamples3D(float fidelity)
        {
            int sampleCount = (int)Math.Round(BaseFidelity * fidelity);

            Sample3D[] samples = new Sample3D[sampleCount];
            for (int i = 0; i < sampleCount; i++)
            {
                float value        = (float)i / (sampleCount - 1);
                float valueRadians = (float)(value * Math.PI * 2 * CurlCount);
                float widthValue   = value * 2f;
                if (value > 0.5f)
                {
                    widthValue = (widthValue - 2f) * -1f;
                }

                samples[i].Position.Y = value * height;
                samples[i].Position.X = (float)Math.Sin(valueRadians) * widthValue;
                samples[i].Position.Z = (float)Math.Cos(valueRadians) * widthValue;
                samples[i].Brightness = 1f;
            }
            return(new List <Sample3D[]>(1)
            {
                samples
            });
        }
Ejemplo n.º 4
0
 private Sample3D[] CreateCorner(Sample3D[] first, Sample3D[] second, Vector3 last)
 {
     Sample3D[] result = new Sample3D[first.Length + second.Length + 1];
     first.CopyTo(result, 0);
     second.CopyTo(result, first.Length);
     result[result.Length - 1] = new Sample3D()
     {
         Position = last, Brightness = 1f
     };
     return(result);
 }
Ejemplo n.º 5
0
        public override List <Sample3D[]> GetSamples3D(float fidelity)
        {
            var samples = new List <Sample3D[]>(1);
            var array   = new Sample3D[SampleCount];

            for (int i = 0; i < SampleCount; i++)
            {
                array[i].Brightness = 1f;
            }
            samples.Add(array);
            return(samples);
        }
Ejemplo n.º 6
0
        public override List <Sample3D[]> GetSamples3D(float fidelity)
        {
            List <Sample3D[]> result = new List <Sample3D[]>(1);

            //Sample3D[] sample3DArray = new Sample3D[1];
            //sample3DArray[0].Position = new Vector3(0, 0, 0);
            //sample3DArray[0].Brightness = 1f;



            //int sampleLength = 30;
            //Sample3D[] sample3DArray = new Sample3D[sampleLength];
            //for (int i = 0; i < sampleLength; i++)
            //{
            //    sample3DArray[i].Position = new Vector3(0, 0, 0);
            //    sample3DArray[i].Brightness = 1f;
            //}



            //Sample3D[] sample3DArray = new Sample3D[4];
            //sample3DArray[0].Position = new Vector3(-0.5f, 0, 0);
            //sample3DArray[0].Brightness = 1f;

            //sample3DArray[1].Position = new Vector3(-0.25f, 0f, 0);
            //sample3DArray[1].Brightness = 1f;

            //sample3DArray[2].Position = new Vector3(0.25f, -0f, 0);
            //sample3DArray[2].Brightness = 1f;

            //sample3DArray[3].Position = new Vector3(0.5f, 0, 0);
            //sample3DArray[3].Brightness = 1f;



            int sampleLength = 300;

            Sample3D[] sample3DArray = new Sample3D[sampleLength];
            Vector3    Start         = new Vector3(-0.75f, 0, 0);
            Vector3    End           = new Vector3(0.75f, 0, 0);

            for (int i = 0; i < sampleLength; i++)
            {
                var point3D = Vector3.Lerp(Start, End, (float)i / (float)(sampleLength - 1));
                sample3DArray[i].Position   = point3D;
                sample3DArray[i].Brightness = 1f;
            }

            result.Add(sample3DArray);

            return(result);
        }
Ejemplo n.º 7
0
        public override List <Sample3D[]> GetSamples3D(float fidelity)
        {
            List <Sample3D[]> result = new List <Sample3D[]>(1);
            int sampleLength         = (int)Math.Round(BaseFidelity * fidelity);

            Sample3D[] sample3DArray = new Sample3D[sampleLength];
            for (int i = 0; i < sampleLength; i++)
            {
                var point3D = Vector3.Lerp(Start, End, (float)i / (float)(sampleLength - 1));
                sample3DArray[i].Position   = point3D;
                sample3DArray[i].Brightness = 1f;
            }
            result.Add(sample3DArray);

            return(result);
        }
Ejemplo n.º 8
0
        private Sample3D[] GetLineSegment(Vector3 inclusiveStart, Vector3 exclusiveEnd, float fidelity)
        {
            int numSamples = (int)(BaseFidelity * fidelity);

            if (numSamples < 1)
            {
                numSamples = 1;
            }

            Sample3D[] result = new Sample3D[numSamples];
            for (int i = 0; i < result.Length; i++)
            {
                result[i].Position   = Vector3.Lerp(inclusiveStart, exclusiveEnd, (float)i / numSamples);
                result[i].Brightness = 1f;
            }
            return(result);
        }
Ejemplo n.º 9
0
        public override List <Sample3D[]> GetSamples3D(float fidelity)
        {
            List <Sample3D[]> result = new List <Sample3D[]>(1);
            int sampleCount          = (int)Math.Round(baseSampleCount * fidelity);

            Sample3D[] sample3DArray = new Sample3D[sampleCount];
            for (int i = 0; i < sampleCount; i++)
            {
                var value   = MathHelper.Lerp(0, (float)(Math.PI * 2), (float)i / (float)(sampleCount - 1));
                var point3D = new Vector3((float)Math.Sin(value), (float)Math.Cos(value), 0);
                sample3DArray[i].Position   = point3D;
                sample3DArray[i].Brightness = 1f;
            }
            result.Add(sample3DArray);

            return(result);
        }
Ejemplo n.º 10
0
        public override List <Sample3D[]> GetSamples3D(float fidelity)
        {
            int sampleCount  = (int)Math.Round(BaseFidelity * fidelity);
            var samplesArray = new Sample3D[sampleCount];

            for (int i = 0; i < sampleCount; i++)
            {
                var value = ((float)i / (sampleCount - 1)) * MathHelper.TwoPi;
                samplesArray[i].Brightness = 1f;
                samplesArray[i].Position.X = (float)Math.Sin(value);
                samplesArray[i].Position.Y = (float)Math.Cos(value);
            }
            var result = new List <Sample3D[]>(1);

            result.Add(samplesArray);
            return(result);
        }
Ejemplo n.º 11
0
        public override List <Sample3D[]> GetSamples3D(float fidelity)
        {
            List <Sample3D[]> result = new List <Sample3D[]>(1);
            int sampleCount          = (int)Math.Round(baseSampleCount * fidelity);

            Sample3D[] sample3DArray         = new Sample3D[sampleCount];
            int        finalSampleStartIndex = sampleCount;
            int        finalSampleCount      = 0;

            for (int i = 0; i < sampleCount; i++)
            {
                var progress = (float)i / (float)(sampleCount);
                if (progress > AnimationValue || progress < AnimationValue - DrawLength)
                {
                    continue;
                }
                if (finalSampleStartIndex > i)
                {
                    finalSampleStartIndex = i;
                }
                finalSampleCount++;
                var value   = MathHelper.Lerp(0, (float)(Math.PI * 2), progress);
                var point3D = new Vector3(progress, (float)Math.Sin(value), 0);
                sample3DArray[i].Position   = point3D;
                sample3DArray[i].Brightness = 1f;
            }

            var finalSample3DArray = new Sample3D[finalSampleCount];

            if (finalSampleCount > 0)
            {
                Array.Copy(sample3DArray, finalSampleStartIndex, finalSample3DArray, 0, finalSampleCount);
            }

            result.Add(finalSample3DArray);
            return(result);
        }
Ejemplo n.º 12
0
        public override List <Sample3D[]> GetSamples3D(float fidelity)
        {
            List <Sample3D[]> result = new List <Sample3D[]>(1);
            int sampleCount          = (int)Math.Round(baseSampleCount * fidelity);

            Sample3D[] sample3DArray = new Sample3D[sampleCount];
            for (int i = 0; i < sampleCount; i++)
            {
                var progress = (float)i / (float)(sampleCount - 1);
                progress = Tween.EaseOutPower(progress, 3) + AnimationOffset;

                var value   = MathHelper.Lerp(0, (float)(Math.PI * 2), progress);
                var point3D = new Vector3((float)Math.Sin(value), (float)Math.Cos(value), 0);

                var secondValue       = MathHelper.Lerp(0, (float)(Math.PI * 2), progress * CurlCount);
                var secondCirclePoint = CurlSize * new Vector3((float)Math.Sin(secondValue), (float)Math.Cos(secondValue), 0);
                point3D += secondCirclePoint;

                sample3DArray[i].Position   = point3D;
                sample3DArray[i].Brightness = 1f;
            }
            result.Add(sample3DArray);
            return(result);
        }
Ejemplo n.º 13
0
        public override List <Sample3D[]> GetSamples3D(float fidelity)
        {
            List <Sample3D[]> blankedPoints = new List <Sample3D[]>();

            List <Vector3> points        = new List <Vector3>();
            Vector3        point         = new Vector3(FrameOutput.DisplayProfile.AspectRatio * -1f, 1f, 0);
            ScanningState  state         = ScanningState.FirstUpper;
            bool           scanningRight = true;

            while (true)
            {
                points.Add(point);
                switch (state)
                {
                case ScanningState.FirstUpper:
                    state    = ScanningState.SecondUpper;
                    point.X += scanningRight ? StepSize : -1f * StepSize;
                    break;

                case ScanningState.SecondUpper:
                    state    = ScanningState.FirstBottom;
                    point.Y -= StepSize;
                    break;

                case ScanningState.FirstBottom:
                    state    = ScanningState.SecondBottom;
                    point.X += scanningRight ? StepSize : -1f * StepSize;
                    break;

                case ScanningState.SecondBottom:
                    state    = ScanningState.FirstUpper;
                    point.Y += StepSize;
                    break;
                }
                if (point.X > FrameOutput.DisplayProfile.AspectRatio || point.X < FrameOutput.DisplayProfile.AspectRatio * -1f)
                {
                    if (scanningRight)
                    {
                        point.X = FrameOutput.DisplayProfile.AspectRatio;
                    }
                    else
                    {
                        point.X = FrameOutput.DisplayProfile.AspectRatio * -1f;
                    }
                    scanningRight = !scanningRight;
                    points.Add(point);
                    point.Y -= StepSize;
                    points.Add(point);
                    if (state == ScanningState.FirstUpper || state == ScanningState.SecondUpper)
                    {
                        point.Y -= StepSize;
                        points.Add(point);
                    }
                    point.Y -= StepSize;
                }
                if (point.Y < -1f)
                {
                    point.Y = -1f;
                    points.Add(point);
                    break;
                }
            }

            for (int i = 0; i < points.Count() - 1; i++)
            {
                blankedPoints.Add(GetLineSegment(points[i], points[i + 1], fidelity));
            }

            List <Sample3D[]> result;

            if (BlankLineSegments)
            {
                result = blankedPoints;
            }
            else
            {
                result = new List <Sample3D[]>(0);
                int        lineSegmentLength = blankedPoints[0].Length;
                Sample3D[] bigArray          = new Sample3D[blankedPoints.Count() * lineSegmentLength];
                for (int i = 0; i < blankedPoints.Count(); i++)
                {
                    blankedPoints[i].CopyTo(bigArray, i * lineSegmentLength);
                }
                result.Add(bigArray);
            }
            return(result);
        }