/******************************************************************************* * Copyright (c) 2013 Luigi Sgro. All rights reserved. This * program and the accompanying materials are made available under the terms of * the Eclipse Public License v1.0 which accompanies this distribution, and is * available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Luigi Sgro - initial API and implementation ******************************************************************************/ package com.quantcomponents.core.utils; public class MathUtils { public static class LineParameters { double slope; double intercept; } public static LineParameters lineParametersFromSegment(double x_a, double y_a, double x_b, double y_b) { LineParameters params = new LineParameters(); params.slope = (y_b - y_a) / (x_b - x_a); params.intercept = y_a - params.slope * x_a; return params; } public static double signedDistanceFromLine(LineParameters lineParameters, double x, double y) { return (y - lineParameters.slope * x - lineParameters.intercept) / Math.sqrt(lineParameters.slope * lineParameters.slope + 1); } public static double distanceFromLine(LineParameters lineParameters, double x, double y) { return Math.abs(signedDistanceFromLine(lineParameters, x, y)); } }