fork(1) download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10. public static void main (String[] args) throws java.lang.Exception
  11. {
  12. hslToRgb(240.0 / 360.0, 1.0, 0.5);
  13. // expected result: [0, 0, 255]
  14. }
  15.  
  16. public static double[] hslToRgb(double h, double s, double l){
  17.  
  18. System.out.println("HSL: " + h + ", " + s + ", " + l);
  19.  
  20. double r = -1;
  21. double b = -1;
  22. double g = -1;
  23.  
  24. if(s == 0){
  25.  
  26. r = l;
  27. b = l;
  28. g = l;
  29.  
  30. }else{
  31.  
  32. double q = l < 0.5 ? l * (1 + s) : l + s - l * s;
  33. double p = 2 * l - q;
  34.  
  35. r = hueToRgb(p, q, h + (1.0 / 3));
  36. g = hueToRgb(p, q, h);
  37. b = hueToRgb(p, q, h - (1.0 / 3));
  38. }
  39.  
  40. r = Math.round(r * 255);
  41. b = Math.round(b * 255);
  42. g = Math.round(g * 255);
  43.  
  44. System.out.println("RGB: " + r + ", " + g + ", " + b);
  45. double[] rgb = {r, g, b};
  46.  
  47. return rgb;
  48. }
  49.  
  50. private static double hueToRgb(double p, double q, double t){
  51.  
  52. if(t < 0){
  53.  
  54. t++;
  55. }
  56.  
  57. if(t > 1){
  58.  
  59. t--;
  60. }
  61.  
  62. if(t < 1.0 / 6){
  63.  
  64. return p + (q - p) * 6 * t;
  65. }
  66.  
  67. if(t < 1.0 / 2){
  68.  
  69. return q;
  70. }
  71.  
  72. if(t < 2.0 / 3){
  73.  
  74. return p + (q - p) * ((2.0 / 3) - t) * 6;
  75. }
  76.  
  77. return p;
  78. }
  79. }
Success #stdin #stdout 0.1s 320576KB
stdin
Standard input is empty
stdout
HSL: 0.6666666666666666, 1.0, 0.5
RGB: 0.0, 0.0, 255.0