public void Hsb2rgbTestWhite() { var rgb = ColorSystems.Hsb2rgb(0, 0, 1); var expected = Vector3.One; //white Assert.AreEqual(expected, rgb); }
public void Hsb2rgb(float h, float s, float b, Color expectedColor) { var rgb = ColorSystems.Hsb2rgb(h, s, b); var expected = expectedColor.ToVector3(); Assert.AreEqual(expected, rgb); }
public void Hsb2rgbBlue() { var rgb = ColorSystems.Hsb2rgb(4.0f / 6.0f, 1, 1); var expected = new Vector3(0, 0, 1); Assert.AreEqual(expected, rgb); }
public void Hsb2rgbMagenta() { var rgb = ColorSystems.Hsb2rgb(5.0f / 6.0f, 1, 1); var expected = new Vector3(1, 0, 1); Assert.AreEqual(expected, rgb); }
public void Hsb2rgbTestGreen() { var rgb = ColorSystems.Hsb2rgb(2.0f / 6.0f, 1, 1); var expected = Vector3.UnitY; Assert.AreEqual(expected, rgb); }
public void Hsb2rgbTestBlack1() { var rgb = ColorSystems.Hsb2rgb(0, 0, 0); var expected = Vector3.Zero; //black Assert.AreEqual(expected, rgb); }
public void Hsb2rgbTestRed() { var rgb = ColorSystems.Hsb2rgb(0, 1, 1); var expected = Vector3.UnitX; //red Assert.AreEqual(expected, rgb); }
public void Hsb2rgbTestYellow() { var rgb = ColorSystems.Hsb2rgb(1.0f / 6.0f, 1, 1); var expected = new Vector3(1, 1, 0); Assert.AreEqual(expected, rgb); }
public void Hsb2rgbTestColor() { var rgb = ColorSystems.Hsb2rgb(0, 0.2f, 1); var expected = new Vector3(1, 0.8f, 0.8f); Assert.AreEqual(expected, rgb); }
public Collider(float x, float y, float sizeX, float sizeY) { Box = new Box2D(x, y, sizeX, sizeY); //make a hsb color sweep in polar coordinates var polar = MathHelper.ToPolar(new Vector2(x, y)); var rgb = ColorSystems.Hsb2rgb(polar.X / MathHelper.TWO_PI + 0.5f, polar.Y, 1); Color = ColorSystems.ToSystemColor(rgb); Velocity = Vector2.Zero; }
public static Func <Bitmap, Dictionary <string, int[]> > GetHistoDataMethod(ColorSystems cs) { switch (cs) { case ColorSystems.RGB: return(RGB_GetHistoData); case ColorSystems.HSL: default: return(HSL_GetHistoData); } }
public override void Render() { GL.Clear(ClearBufferMask.ColorBufferBit); const int count = 16; var boxSize = 1.9f / count; for (int xI = 0; xI < count; ++xI) { float x = xI * 2f / count - 1f; float brightness = xI / (float)count; for (int yI = 0; yI < count; ++yI) { float y = yI * 2f / count - 1f; float saturation = yI / (float)count; var color = ColorSystems.Hsb2rgb(Hue, saturation, brightness); DrawRect(new Box2D(x, y, boxSize, boxSize), color); } } }
public static Bitmap GetStretch(Bitmap image_original, int margin, ColorSystems cs) { // Get data var stretch = new Bitmap(image_original); var histoData = ColorSystem.GetHistoDataMethod(cs)(image_original); var minsAndMaxs = GetHistoMinMax(histoData, margin); var stretchPix = ColorSystem.GetStretchPixelMethod(cs); // Stretch for (int i = 0; i < image_original.Width; i++) { for (int j = 0; j < image_original.Height; j++) { stretch.SetPixel(i, j, stretchPix(image_original.GetPixel(i, j), minsAndMaxs)); } } // Return it return(stretch); }
private void InitParticles() { var rnd = new Random(12); Func <float> Rnd01 = () => (float)rnd.NextDouble(); Func <float> RndCoord = () => (Rnd01() - 0.5f) * 2.0f; Func <float> RndSpeed = () => (Rnd01() - 0.5f) * 0.1f; bufferParticles = new BufferObject(BufferTarget.ShaderStorageBuffer); var data = new Particle[particelCount]; for (int i = 0; i < particelCount; ++i) { data[i].position = new Vector2(RndCoord(), RndCoord()); data[i].velocity = new Vector2(RndSpeed(), RndSpeed()); var polar = MathHelper.ToPolar(data[i].position); var color = ColorSystems.Hsb2rgb(polar.X / MathHelper.TWO_PI + 0.5f, polar.Y, 1); var byteColor = ColorSystems.ToSystemColor(color); data[i].color = color; data[i].size = (Rnd01() + 1) * 10; } bufferParticles.Set(data, BufferUsageHint.StaticCopy); }
public Bitmap GetStretchImage(ColorSystems cs, int margin) { StretchImage = Histogram.GetStretch(Data.Image_Original, margin, cs); return(StretchImage); }
public static Func <Color, Dictionary <string, int[]>, Color> GetStretchPixelMethod(ColorSystems cs) { switch (cs) { case ColorSystems.RGB: return(RGB_StretchPixel); case ColorSystems.HSL: default: return(HSL_StretchPixel); } }
public static Bitmap GetHistogram(Bitmap image, int margin, bool showMargin, bool showMinMax, ColorSystems cs) { // Get data var histoData = ColorSystem.GetHistoDataMethod(cs)(image); var minsAndMaxs = GetHistoMinMax(histoData, margin); var histo = new Bitmap(256, 100); int histoDataMax = 0; foreach (var kvp in histoData) { int max = kvp.Value.Max(); if (histoDataMax < max) { histoDataMax = max; } } // Draw histogram using (Graphics g = Graphics.FromImage(histo)) { // Clear it g.Clear(Color.White); // Draw the parts foreach (var kvp in histoData) { // Data Conversion var vals = new PointF[256]; for (int i = 0; i < 256; i++) { vals[i] = new PointF(i, ((kvp.Value[i] * 100) / histoDataMax)); } // Make sure there is a start/end point var list = vals.ToList(); list.Insert(0, new PointF(0, 0)); list.Add(new PointF(255, 0)); vals = list.ToArray(); g.FillPolygon(new SolidBrush(Color.FromArgb(TRANSPARENCY, Color.FromName(kvp.Key))), vals); } // Draw MinMax if (showMinMax) { foreach (var kvp in minsAndMaxs) { var dashpen = new Pen(Color.FromName(kvp.Key), 1f) { DashPattern = new float[] { 4, 2 } }; g.DrawLine(dashpen, new Point(kvp.Value[0], 0), new Point(kvp.Value[0], 255)); dashpen.DashPattern = new float[] { 1, 1 }; g.DrawLine(dashpen, new Point(kvp.Value[1], 0), new Point(kvp.Value[1], 255)); } } // Draw Margin if (showMargin) { var dashpen = new Pen(Color.Black, 1f) { DashPattern = new float[] { 4, 2, 2, 2 } }; g.DrawLine(dashpen, new Point(0, ((margin * 100) / histoDataMax)), new Point(255, ((margin * 100) / histoDataMax))); } } return(histo); }
public Bitmap GetOriginalHistogram(ColorSystems cs, int margin, bool showMargin, bool showMinMax) { OriginalHisto = Histogram.GetHistogram(Data.Image_Original, margin, showMargin, showMinMax, cs); OriginalHisto.RotateFlip(RotateFlipType.Rotate180FlipX); return(OriginalHisto); }
public Bitmap GetStretchHistogram(ColorSystems cs) { StretchHisto = Histogram.GetHistogram(StretchImage, 0, false, false, cs); StretchHisto.RotateFlip(RotateFlipType.Rotate180FlipX); return(StretchHisto); }