이미지 색상을 deg 로 조절하는 효과입니다.
그런데 이 효과의 알고리즘이 어디서 따온건지 해석을 못하겠네요
혹시 이 알고리즘이 어떤 알고리즘에서 나온건지
혹은 이 알고리즘 해석 좀 해주실분~~ ㅠㅠㅠ




 public Bitmap TintThePicture(int deg, int wid, int hei, Bitmap mBitmap) {

  int[] pix = new int[wid*hei];

  mBitmap.getPixels(pix, 0, wid, 0, 0, wid, hei);
  
  //mBitmap.getPixels(pixel 저장할 배열 저장소, 배열 저장 첫 주소값
  //     , 뭔지 모르겠지만 >=width, 시작 장소 x 좌표, 시작장소 y 좌표
  //     , width, height)

  int RY, GY, BY, RYY, GYY, BYY, R, G, B, Y;
  double angle = (3.14159d * (double)deg) / 180.0d;
  int S = (int)(256.0d * Math.sin(angle));
  int C = (int)(256.0d * Math.cos(angle));

  for (int y = 0; y < hei; y++)
   for (int x = 0; x < wid; x++)
   {
    int index = y * wid + x;
    int r = (pix[index] >> 16) & 0xff;
    int g = (pix[index] >> 8) & 0xff;
    int b = pix[index] & 0xff;
    RY = ( 70 * r - 59 * g - 11 * b) / 100;
    GY = (-30 * r + 41 * g - 11 * b) / 100;
    BY = (-30 * r - 59 * g + 89 * b) / 100;
    Y  = ( 30 * r + 59 * g + 11 * b) / 100;
    RYY = (S * BY + C * RY) / 256;
    BYY = (C * BY - S * RY) / 256;
    GYY = (-51 * RYY - 19 * BYY) / 100;
    R = Y + RYY;
    R = (R < 0) ? 0 : ((R > 255) ? 255 : R);
    G = Y + GYY;
    G = (G < 0) ? 0 : ((G > 255) ? 255 : G);
    B = Y + BYY;
    B = (B < 0) ? 0 : ((B > 255) ? 255 : B);
    pix[index] = 0xff000000 | (R << 16) | (G << 8) | B;
   }

  Bitmap bm = Bitmap.createBitmap(wid, hei, Bitmap.Config.ARGB_8888);
  bm.setPixels(pix, 0, wid, 0, 0, wid, hei);

  return bm;

 }