private float[] applyCurveXEffect(float offset){
  for (int i=0; i < 6; i++)   for (int j=0; j < 51; j++) {
    if (mDirection == TouchDisableView.DIRECTION_RIGHT) {
      meshVerts[i * 102 + 2 * j]=originVerts[i * 102 + 2 * j];
      meshVerts[i * 102 + 2 * j + 1]=originVerts[i * 102 + 2 * j + 1] + (float)(SIN_A * (1 - offset) * Math.sin(originVerts[i * 102 + 2 * j] * originVerts[i * 102 + 2 * j] / SIN_lENGTH_FACTOR));
    }
 else {
      meshVerts[i * 102 + 2 * j]=originVerts[i * 102 + 2 * j];
      meshVerts[i * 102 + 2 * j + 1]=originVerts[i * 102 + 2 * j + 1] + (float)(SIN_A * (1 - offset) * Math.sin(originVerts[i * 102 + 2 * j] * originVerts[i * 102 + 2 * j] / SIN_lENGTH_FACTOR));
    }
  }
  return meshVerts;
}

private float [ ] applyCurveXEffect ( float offset ) { for ( int i = 0 ; i < 6 ; i ++ ) for ( int j = 0 ; j < 51 ; j ++ ) { if ( mDirection == TouchDisableView . DIRECTION_RIGHT ) { meshVerts [ i * 102 + 2 * j ] = originVerts [ i * 102 + 2 * j ] ; meshVerts [ i * 102 + 2 * j + 1 ] = originVerts [ i * 102 + 2 * j + 1 ] + ( float ) ( SIN_A * ( 1 - offset ) * Math . sin ( originVerts [ i * 102 + 2 * j ] * originVerts [ i * 102 + 2 * j ] / SIN_lENGTH_FACTOR ) ) ; } else { meshVerts [ i * 102 + 2 * j ] = originVerts [ i * 102 + 2 * j ] ; meshVerts [ i * 102 + 2 * j + 1 ] = originVerts [ i * 102 + 2 * j + 1 ] + ( float ) ( SIN_A * ( 1 - offset ) * Math . sin ( originVerts [ i * 102 + 2 * j ] * originVerts [ i * 102 + 2 * j ] / SIN_lENGTH_FACTOR ) ) ; } } return meshVerts ; }
f ( x ) = sin_a * ( 1 - offset ) * sin ( x * x / sin_length_factor ) < p / > notice : when x is in 0 ~ 720 , it works well . you can see the graph through this link . https : / / www . google . com / ? gws_rd = ssl # newwindow = 1 & q = y % 3d64 + sin ( x * x % 2f20000 ) + < p / > for other screen resolution , may be need other function
