public static Color[] createMultiGradient(Color[] colors, int steps) { if(colors.length < 2) { throw new IllegalArgumentException("Need at least 2 colors for a gradient"); } Color[] gradient = new Color[steps]; int stepsBetween = steps / (colors.length - 1); int index = 0; for (int i = 0; i < colors.length - 1; i++) { Color[] thisGradient = createGradient(colors[i], colors[i + 1], stepsBetween); System.arraycopy(thisGradient, 0, gradient, index, stepsBetween); index += stepsBetween; } for(; index < steps; index++) { gradient[index] = colors[colors.length - 1]; } return gradient; }
@Override public void run() throws Throwable { Gradient.createMultiGradient(new Color[]{Color.BLUE}, 5); } });
@Test// timeout = 30000 public void testCreateGradient() { Color[] gradient = Gradient.createGradient(Color.BLUE, Color.YELLOW, 5); assertTrue("Color[" + 0 + "] not correct: " + gradient[0], gradient[0].equals(new Color(0, 0, 255))); assertTrue("Color[" + 1 + "] not correct: " + gradient[1], gradient[1].equals(new Color(51, 51, 204))); assertTrue("Color[" + 2 + "] not correct: " + gradient[2], gradient[2].equals(new Color(102, 102, 153))); assertTrue("Color[" + 3 + "] not correct: " + gradient[3], gradient[3].equals(new Color(153, 153, 102))); assertTrue("Color[" + 4 + "] not correct: " + gradient[4], gradient[4].equals(new Color(204, 204, 51))); }
public static Color[] createRainbow(int steps) { return createMultiGradient(new Color[] { Color.magenta, Color.blue, Color.green, Color.yellow, Color.orange, Color.red }, steps); }
costColorGradient = Gradient.createGradient(Color.GREEN, Color.RED, 1000); stanceFootPitch.set(-0.2);
@Test// timeout = 30000 public void testCreateMultiGradient() { Color[] gradient = Gradient.createMultiGradient(new Color[]{Color.BLUE, Color.YELLOW}, 5); assertTrue("Color[" + 0 + "] not correct: " + gradient[0], gradient[0].equals(new Color(0, 0, 255))); assertTrue("Color[" + 1 + "] not correct: " + gradient[1], gradient[1].equals(new Color(51, 51, 204))); assertTrue("Color[" + 2 + "] not correct: " + gradient[2], gradient[2].equals(new Color(102, 102, 153))); assertTrue("Color[" + 3 + "] not correct: " + gradient[3], gradient[3].equals(new Color(153, 153, 102))); assertTrue("Color[" + 4 + "] not correct: " + gradient[4], gradient[4].equals(new Color(204, 204, 51))); Assertions.assertExceptionThrown(IllegalArgumentException.class, new RunnableThatThrows() { @Override public void run() throws Throwable { Gradient.createMultiGradient(new Color[]{Color.BLUE}, 5); } }); } }