private int partition(final Vector2Line pLine, final int pFromIndex, final int pToIndex) {
    final Vector2[] vertices = this.mVertices;

    int i = pFromIndex;
    int j = pToIndex;
    while (i <= j) {
      while (i <= j && Vector2Util.isRightOf(vertices[i], pLine)) {
        i++;
      }
      while (i <= j && !Vector2Util.isRightOf(vertices[j], pLine)) {
        j--;
      }
      if (i <= j) {
        this.swap(i++, j--);
      }
    }
    return i;
  }
 private int indexOfRightmostVertexOf(final Vector2 vector2) {
   final Vector2[] mVertices = this.mVertices;
   final int mVertexCount = this.mVertexCount;
   int n = 0;
   for (int i = 1; i < mVertexCount; ++i) {
     final Vector2 set = Vector2Pool.obtain().set(mVertices[i]);
     final Vector2 set2 = Vector2Pool.obtain().set(mVertices[n]);
     if (Vector2Util.isLess(set.sub(vector2), set2.sub(vector2))) {
       n = i;
     }
     Vector2Pool.recycle(set);
     Vector2Pool.recycle(set2);
   }
   return n;
 }
  private int indexOfFurthestVertex(
      final Vector2Line pLine, final int pFromIndex, final int pToIndex) {
    final Vector2[] vertices = this.mVertices;

    int f = pFromIndex;
    float mx = 0;
    for (int i = pFromIndex; i <= pToIndex; i++) {
      final float d = -Vector2Util.area2(vertices[i], pLine);
      if (d > mx || d == mx && vertices[i].x > vertices[f].y) {
        mx = d;
        f = i;
      }
    }
    return f;
  }
Example #4
0
  private int indexOfRightmostVertexOf(final Vector2 pVector) {
    final Vector2[] vertices = this.mVertices;
    final int vertexCount = this.mVertexCount;

    int i = 0;
    for (int j = 1; j < vertexCount; j++) {

      final Vector2 vector2A = Vector2Pool.obtain().set(vertices[j]);
      final Vector2 vector2B = Vector2Pool.obtain().set(vertices[i]);
      if (Vector2Util.isLess(vector2A.sub(pVector), vector2B.sub(pVector))) {
        i = j;
      }
      Vector2Pool.recycle(vector2A);
      Vector2Pool.recycle(vector2B);
    }
    return i;
  }