changed the way color location is calculated
This commit is contained in:
parent
21ac830896
commit
c84d9b138a
|
@ -49,19 +49,25 @@ public class AttributeViewModel implements ViewModel {
|
|||
|
||||
private Color getBackgroundColor(int x, int y, Graphics2D g) {
|
||||
if (!LolcatAction.getInstance().isLolcatEnabled()) return BACKGROUND_COLOR;
|
||||
Point offset = g.getClipBounds().getLocation();
|
||||
g.translate(offset.x, offset.y);
|
||||
Dimension viewportSize = g.getClipBounds().getSize();
|
||||
g.drawRect(0, 0, viewportSize.width, viewportSize.height);
|
||||
g.fillRect(-5, -5, 10, 10);
|
||||
|
||||
double dx = viewportSize.width;
|
||||
double dy = viewportSize.height;
|
||||
double mag = Math.sqrt(dx * dx + dy * dy);
|
||||
dx /= mag;
|
||||
dy /= mag;
|
||||
double diagonal_slope = (double) viewportSize.width / (double) viewportSize.height;
|
||||
double perp_slope = -1f / diagonal_slope;
|
||||
|
||||
double lambda = (dx * x + dy * y);
|
||||
double diag_val = Math.sqrt(Math.pow(dx * lambda, 2) + Math.pow(dy * lambda, 2)) / mag;
|
||||
System.out.println(diag_val);
|
||||
double perp_offset = y - perp_slope * x;
|
||||
|
||||
return Color.getHSBColor((float) diag_val, LOLCAT_SAT, LOLCAT_BRIGHT);
|
||||
double x_intersect = perp_offset / (diagonal_slope - perp_slope);
|
||||
double y_intersect = diagonal_slope * (perp_offset / (diagonal_slope - perp_slope));
|
||||
|
||||
double total_dist = Math.sqrt(viewportSize.height * viewportSize.height + viewportSize.width * viewportSize.width);
|
||||
double dist_frac = Math.sqrt(x_intersect * x_intersect + y_intersect * y_intersect) / total_dist;
|
||||
|
||||
g.translate(-offset.x, -offset.y);
|
||||
return Color.getHSBColor((float) dist_frac, LOLCAT_SAT, LOLCAT_BRIGHT);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Reference in New Issue