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); }
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); }
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 }); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }