Геометрия прямоугольника по данным RectF не включает центр RectF

Я не могу преобразовать RectF в геометрию, а затем обнаружить точку в ней:

public static Geometry RectFtoGeometry(RectF r) {
    GeometricShapeFactory gsf = new GeometricShapeFactory();
    gsf.setBase(new Coordinate(r.left, r.bottom));
    gsf.setNumPoints(4);
    gsf.setWidth(r.width());
    gsf.setHeight(r.height());

    Geometry rect = gsf.createRectangle(), 
        point = new GeometryFactory().createPoint(new Coordinate(r.centerX(), r.centerY()));

    if(!rect.contains(point))
        throw new IllegalArgumentException();//This gets thrown

    return gsf.createRectangle();
}

Как я могу создать геометрию из RectF, которая "может содержать" свои точки?

Заранее спасибо!

1 ответ

Решение

Код в GeometricShapeFactory.java создает конверт с помощью:

public Envelope getEnvelope() {
  if (base != null) {
    return new Envelope(base.x, base.x + width, base.y, base.y + height);
  }
  ...
}

Android имеет начало координат (0,0) в левом верхнем углу; Вы должны сложить верхнюю часть RectF с его высотой, чтобы получить нижнюю часть RectF. Так что база должна быть:

gsf.setBase(new Coordinate(r.left, r.top));
Другие вопросы по тегам