public override double GetWrapped(double x, double y, int wrap) { // Get control (0-1): double control = ControlModule.GetWrapped(x, y, wrap); int count = Sources.Length - 1; if (count == 0) { return(control); } else if (count == 1) { return(Sources[1].GetWrapped(x, y, wrap)); } // Reduce count (such that it ranges from 0->count-1): count--; // Map to being relative to the points: control *= (double)count; int index = (int)control; if (index < 0) { // Sample it: return(Sources[1].GetWrapped(x, y, wrap)); } else if (index >= count) { // Sample there: return(Sources[count + 1].GetWrapped(x, y, wrap)); } else { // Make relative: control -= (double)index; } // Control is now 0-1 relative to Sources[index+1]. // Get current: TextureNode current = Sources[index + 1]; if (control == 0) { // Just read it: return(current.GetWrapped(x, y, wrap)); } // Note that index is never equal to (actual count-1), therefore next is just: TextureNode next = Sources[index + 2]; // Blend: double a = current.GetWrapped(x, y, wrap); double b = next.GetWrapped(x, y, wrap); return(a + ((b - a) * control)); }
public override double GetWrapped(double x, double y, int wrap) { // Read coords: double lookX = (XModule == null)?0:XModule.GetWrapped(x, y, wrap); double lookY = (YModule == null)?0:YModule.GetWrapped(x, y, wrap); // Read: return(SourceModule.GetWrapped(lookX, lookY, wrap)); }
public override double GetWrapped(double x, double y, int wrap) { // Act like intensity: double sum = RedModule.GetWrapped(x, y, wrap); sum += GreenModule.GetWrapped(x, y, wrap); sum += BlueModule.GetWrapped(x, y, wrap); return(sum / 3.0); }
public override double GetWrapped(double x, double y, int wrap) { double toNearest = ToNearestModule.GetWrapped(x, y, wrap); if (toNearest == 0) { return(0); } return(toNearest * System.Math.Floor(SourceModule.GetWrapped(x, y, wrap) / toNearest)); }
public override double GetWrapped(double x, double y, int wrap) { double deg = DegreeModule.GetWrapped(x, y, wrap); if (deg == 0) { return(0); } return(System.Math.Pow(SourceModule.GetWrapped(x, y, wrap), 1.0 / deg)); }
public override double GetWrapped(double x, double y, int wrap) { if (SourceModule == null) { return(0); } double baseValue = SourceModule.GetWrapped(x, y, wrap); double sat = 1f + SaturationModule.GetWrapped(x, y, wrap); return(baseValue * sat); }
public override double GetWrapped(double x, double y, int wrap) { if (SourceModule == null) { return(0); } double baseValue = SourceModule.GetWrapped(x, y, wrap); double contrast = 1.0 + ContrastModule.GetWrapped(x, y, wrap); return(((baseValue - 0.5) * contrast) + 0.5); }
public override double GetWrapped(double x, double y, int wrap) { if (SourceModule == null) { return(0); } double baseValue = SourceModule.GetWrapped(x, y, wrap); double luminance = 1.0 + LuminanceModule.GetWrapped(x, y, wrap); return(baseValue * luminance); }
public override double GetWrapped(double x, double y, int wrap) { if (SourceModule == null) { return(0); } double baseValue = SourceModule.GetWrapped(x, y, wrap); double hue = 1f + HueModule.GetWrapped(x, y, wrap); return(baseValue * hue); }
public override double GetWrapped(double x, double y, int wrap) { if (SourceModule == null) { return(0); } double baseValue = SourceModule.GetWrapped(x, y, wrap); double brightness = BrightnessModule.GetWrapped(x, y, wrap); return(baseValue + brightness); }
public override double GetWrapped(double x, double y, int wrap) { if (SourceModule == null) { return(0); } double baseValue = SourceModule.GetWrapped(x, y, wrap); double hue = HueModule.GetWrapped(x, y, wrap); // Cycle the hue: return((baseValue + hue) % 1f); }
public override double GetWrapped(double x, double y, int wrap) { // Read value: double value = SourceModule.GetWrapped(x, y, wrap); // Read min of range: double min = BlackModule.GetWrapped(x, y, wrap); // Divide by range: value /= (WhiteModule.GetWrapped(x, y, wrap) - min); // Offset: return(value + min); }
public override double GetWrapped(double x, double y, int wrap) { double value = SourceModule.GetWrapped(x, y, wrap); double lower = LowerBound.GetWrapped(x, y, wrap); double upper = UpperBound.GetWrapped(x, y, wrap); if (value < lower) { return(lower); } else if (value > upper) { return(upper); } return(value); }
public override double GetWrapped(double x, double y, int wrap) { // Get the angle to rotate by (rad): double deltaAngle = RotationModule.GetWrapped(x, y, wrap); // rotate the point x/y deltaAngle about 0.5/0.5 x -= 0.5; y -= 0.5; // Get sin/cos: double cAngle = System.Math.Cos(deltaAngle); double sAngle = System.Math.Sin(deltaAngle); double tx = x * cAngle - y * sAngle; y = y * cAngle + x * sAngle; x = tx; x += 0.5; y += 0.5; return(SourceModule.GetWrapped(x, y, wrap)); }
public override double GetWrapped(double x, double y, int wrap) { // Act like intensity: return(LightModule.GetWrapped(x, y, wrap)); }
public override double GetWrapped(double x, double y, int wrap) { double controlValue = ControlModule.GetWrapped(x, y, wrap); double alpha; double lowerBound = LowerBound.GetWrapped(x, y, wrap); double upperBound = UpperBound.GetWrapped(x, y, wrap); double edgeFalloff = EdgeFalloff.GetWrapped(x, y, wrap); if (edgeFalloff > 0.0) { if (controlValue < (lowerBound - edgeFalloff)) { // The output value from the control module is below the selector // threshold; return the output value from the first source module. return(SourceModule1.GetWrapped(x, y, wrap)); } else if (controlValue < (lowerBound + edgeFalloff)) { // The output value from the control module is near the lower end of the // selector threshold and within the smooth curve. Interpolate between // the output values from the first and second source modules. double lowerCurve = (lowerBound - edgeFalloff); double upperCurve = (lowerBound + edgeFalloff); alpha = Loonim.Math.SCurve3((controlValue - lowerCurve) / (upperCurve - lowerCurve)); return(Loonim.Math.LinearInterpolate(SourceModule1.GetWrapped(x, y, wrap), SourceModule2.GetWrapped(x, y, wrap), alpha)); } else if (controlValue < (upperBound - edgeFalloff)) { // The output value from the control module is within the selector // threshold; return the output value from the second source module. return(SourceModule2.GetWrapped(x, y, wrap)); } else if (controlValue < (upperBound + edgeFalloff)) { // The output value from the control module is near the upper end of the // selector threshold and within the smooth curve. Interpolate between // the output values from the first and second source modules. double lowerCurve = (upperBound - edgeFalloff); double upperCurve = (upperBound + edgeFalloff); alpha = Loonim.Math.SCurve3( (controlValue - lowerCurve) / (upperCurve - lowerCurve)); return(Loonim.Math.LinearInterpolate(SourceModule2.GetWrapped(x, y, wrap), SourceModule1.GetWrapped(x, y, wrap), alpha)); } else { // Output value from the control module is above the selector threshold; // return the output value from the first source module. return(SourceModule1.GetWrapped(x, y, wrap)); } } else { if (controlValue < lowerBound || controlValue > upperBound) { return(SourceModule1.GetWrapped(x, y, wrap)); } else { return(SourceModule2.GetWrapped(x, y, wrap)); } } }
public override double GetWrapped(double x, double y, int wrap) { return(System.Math.Pow(BaseModule.GetWrapped(x, y, wrap), PowerModule.GetWrapped(x, y, wrap))); }
public override double GetWrapped(double x, double y, int wrap) { return(DividendModule.GetWrapped(x, y, wrap) % DivisorModule.GetWrapped(x, y, wrap)); }
public override double GetWrapped(double x, double y, int wrap) { return(SourceModule.GetWrapped(x, y, wrap) + AlphaModule.GetWrapped(x, y, wrap)); }
public override double GetWrapped(double x, double y, int wrap) { return(System.Math.Log(SourceModule.GetWrapped(x, y, wrap), BaseModule.GetWrapped(x, y, wrap))); }