/**
* Линия вида y = a * (x - x0) + y0
* (можно обойтись без y0, но с ним удобнее;
* будем считать, что линия всегда наклонная)
*/
public class Line {
public double x0;
public double y0;
public double a;
public Line(double x0, double y0, double a) {
this.x0 = x0;
this.y0 = y0;
this.a = a;
}
}
/**
* Проверяет, находится ли точка (x, y) выше линии
*/
public boolean isPointAboveLine(double x, double y) {
return y > a * (x - x0) + y0;
}
«Горизонтальная» парабола:
/**
* "Горизонтальная" парабола вида x = a * (y - y0) + x0
*/
public class HorizontalParabola {
public double x0;
public double y0;
public double a;
public HorizontalParabola(double x0, double y0, double a) {
this.x0 = x0;
this.y0 = y0;
this.a = a;
}
/**
* Проверяет, находится ли точка (x, y) справа}
* (сверху, если повернуть изобюражение на 90 градусов
* против часовой стрелки)
* от параболы
*/
public boolean isPointRightOfParabola(double x, double y) {
return x > a * Math.pow(y - y0, 2) + x0;
}
/** Окружность вида:
* (x – x0)^2 + (y – y0)^2 = R^2
*/
public class Circle {
public double x0;
public double y0;
public double r;
public Circle(double x0, double y0, double r){
this.x0 = x0;
this.y0 = y0;
this.r = r;
}
public boolean isCircleTrue(double x, double y){
return Math.pow(r, 2) == Math.pow((x - x0), 2) + Math.pow((y - y0), 2);
}
}