package nbtool.gui.logviews.images; public class GradientCalculator { public static double[] calculateGrad(int[] input) { double[] grad = new double[2]; grad[0] = -1*input[0] + 1*input[2] - 2*input[3] + 2*input[5] - 1*input[6] + 1*input[8]; // X grad[1] = -1*input[0] - 2*input[1] - 1*input[2] + 1*input[6] + 2*input[7] + 1*input[8]; // Y return grad; } public static double calculateGradDir(double[] grad) { double gradX = grad[0]; double gradY = grad[1]; if (gradX == 0 & gradY == 0) return Double.NaN; if (gradX == 0) return (gradY > 0 ? 90.0 : -90.0); double angle = java.lang.Math.toDegrees(java.lang.Math.atan(java.lang.Math.abs(gradY / gradX))); if (gradX >= 0 && gradY >= 0) return angle; else if (gradX <= 0 && gradY <= 0) return angle + 180; else if (gradX <= 0) return 180 - angle; else return -1*angle; } public static double calculateGradMagn(double[] grad) { double gradX = grad[0]; double gradY = grad[1]; return java.lang.Math.sqrt(gradX*gradX + gradY*gradY); } }