public class org.apache.commons.math3.geometry.euclidean.threed.OutlineExtractor
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.commons.math3.geometry.euclidean.threed.OutlineExtractor
  super_class: java.lang.Object
{
  private org.apache.commons.math3.geometry.euclidean.threed.Vector3D u;
    descriptor: Lorg/apache/commons/math3/geometry/euclidean/threed/Vector3D;
    flags: (0x0002) ACC_PRIVATE

  private org.apache.commons.math3.geometry.euclidean.threed.Vector3D v;
    descriptor: Lorg/apache/commons/math3/geometry/euclidean/threed/Vector3D;
    flags: (0x0002) ACC_PRIVATE

  private org.apache.commons.math3.geometry.euclidean.threed.Vector3D w;
    descriptor: Lorg/apache/commons/math3/geometry/euclidean/threed/Vector3D;
    flags: (0x0002) ACC_PRIVATE

  public void <init>(org.apache.commons.math3.geometry.euclidean.threed.Vector3D, org.apache.commons.math3.geometry.euclidean.threed.Vector3D);
    descriptor: (Lorg/apache/commons/math3/geometry/euclidean/threed/Vector3D;Lorg/apache/commons/math3/geometry/euclidean/threed/Vector3D;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.apache.commons.math3.geometry.euclidean.threed.OutlineExtractor this
        start local 1 // org.apache.commons.math3.geometry.euclidean.threed.Vector3D u
        start local 2 // org.apache.commons.math3.geometry.euclidean.threed.Vector3D v
         0: .line 53
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 54
            aload 0 /* this */
            aload 1 /* u */
            putfield org.apache.commons.math3.geometry.euclidean.threed.OutlineExtractor.u:Lorg/apache/commons/math3/geometry/euclidean/threed/Vector3D;
         2: .line 55
            aload 0 /* this */
            aload 2 /* v */
            putfield org.apache.commons.math3.geometry.euclidean.threed.OutlineExtractor.v:Lorg/apache/commons/math3/geometry/euclidean/threed/Vector3D;
         3: .line 56
            aload 0 /* this */
            aload 1 /* u */
            aload 2 /* v */
            invokestatic org.apache.commons.math3.geometry.euclidean.threed.Vector3D.crossProduct:(Lorg/apache/commons/math3/geometry/euclidean/threed/Vector3D;Lorg/apache/commons/math3/geometry/euclidean/threed/Vector3D;)Lorg/apache/commons/math3/geometry/euclidean/threed/Vector3D;
            putfield org.apache.commons.math3.geometry.euclidean.threed.OutlineExtractor.w:Lorg/apache/commons/math3/geometry/euclidean/threed/Vector3D;
         4: .line 57
            return
        end local 2 // org.apache.commons.math3.geometry.euclidean.threed.Vector3D v
        end local 1 // org.apache.commons.math3.geometry.euclidean.threed.Vector3D u
        end local 0 // org.apache.commons.math3.geometry.euclidean.threed.OutlineExtractor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/apache/commons/math3/geometry/euclidean/threed/OutlineExtractor;
            0    5     1     u  Lorg/apache/commons/math3/geometry/euclidean/threed/Vector3D;
            0    5     2     v  Lorg/apache/commons/math3/geometry/euclidean/threed/Vector3D;
    MethodParameters:
      Name  Flags
      u     final
      v     final

  public org.apache.commons.math3.geometry.euclidean.twod.Vector2D[][] getOutline(org.apache.commons.math3.geometry.euclidean.threed.PolyhedronsSet);
    descriptor: (Lorg/apache/commons/math3/geometry/euclidean/threed/PolyhedronsSet;)[[Lorg/apache/commons/math3/geometry/euclidean/twod/Vector2D;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=10, args_size=2
        start local 0 // org.apache.commons.math3.geometry.euclidean.threed.OutlineExtractor this
        start local 1 // org.apache.commons.math3.geometry.euclidean.threed.PolyhedronsSet polyhedronsSet
         0: .line 66
            new org.apache.commons.math3.geometry.euclidean.threed.OutlineExtractor$BoundaryProjector
            dup
            aload 0 /* this */
            aload 1 /* polyhedronsSet */
            invokevirtual org.apache.commons.math3.geometry.euclidean.threed.PolyhedronsSet.getTolerance:()D
            invokespecial org.apache.commons.math3.geometry.euclidean.threed.OutlineExtractor$BoundaryProjector.<init>:(Lorg/apache/commons/math3/geometry/euclidean/threed/OutlineExtractor;D)V
            astore 2 /* projector */
        start local 2 // org.apache.commons.math3.geometry.euclidean.threed.OutlineExtractor$BoundaryProjector projector
         1: .line 67
            aload 1 /* polyhedronsSet */
            iconst_1
            invokevirtual org.apache.commons.math3.geometry.euclidean.threed.PolyhedronsSet.getTree:(Z)Lorg/apache/commons/math3/geometry/partitioning/BSPTree;
            aload 2 /* projector */
            invokevirtual org.apache.commons.math3.geometry.partitioning.BSPTree.visit:(Lorg/apache/commons/math3/geometry/partitioning/BSPTreeVisitor;)V
         2: .line 68
            aload 2 /* projector */
            invokevirtual org.apache.commons.math3.geometry.euclidean.threed.OutlineExtractor$BoundaryProjector.getProjected:()Lorg/apache/commons/math3/geometry/euclidean/twod/PolygonsSet;
            astore 3 /* projected */
        start local 3 // org.apache.commons.math3.geometry.euclidean.twod.PolygonsSet projected
         3: .line 71
            aload 3 /* projected */
            invokevirtual org.apache.commons.math3.geometry.euclidean.twod.PolygonsSet.getVertices:()[[Lorg/apache/commons/math3/geometry/euclidean/twod/Vector2D;
            astore 4 /* outline */
        start local 4 // org.apache.commons.math3.geometry.euclidean.twod.Vector2D[][] outline
         4: .line 72
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         5: goto 24
         6: .line 73
      StackMap locals: org.apache.commons.math3.geometry.euclidean.threed.OutlineExtractor org.apache.commons.math3.geometry.euclidean.threed.PolyhedronsSet org.apache.commons.math3.geometry.euclidean.threed.OutlineExtractor$BoundaryProjector org.apache.commons.math3.geometry.euclidean.twod.PolygonsSet org.apache.commons.math3.geometry.euclidean.twod.Vector2D[][] int
      StackMap stack:
            aload 4 /* outline */
            iload 5 /* i */
            aaload
            astore 6 /* rawLoop */
        start local 6 // org.apache.commons.math3.geometry.euclidean.twod.Vector2D[] rawLoop
         7: .line 74
            aload 6 /* rawLoop */
            arraylength
            istore 7 /* end */
        start local 7 // int end
         8: .line 75
            iconst_0
            istore 8 /* j */
        start local 8 // int j
         9: .line 76
            goto 19
        10: .line 77
      StackMap locals: org.apache.commons.math3.geometry.euclidean.twod.Vector2D[] int int
      StackMap stack:
            aload 0 /* this */
            aload 6 /* rawLoop */
            iload 7 /* end */
            iload 8 /* j */
            invokevirtual org.apache.commons.math3.geometry.euclidean.threed.OutlineExtractor.pointIsBetween:([Lorg/apache/commons/math3/geometry/euclidean/twod/Vector2D;II)Z
            ifeq 18
        11: .line 79
            iload 8 /* j */
            istore 9 /* k */
        start local 9 // int k
        12: goto 15
        13: .line 80
      StackMap locals: int
      StackMap stack:
            aload 6 /* rawLoop */
            iload 9 /* k */
            aload 6 /* rawLoop */
            iload 9 /* k */
            iconst_1
            iadd
            aaload
            aastore
        14: .line 79
            iinc 9 /* k */ 1
      StackMap locals:
      StackMap stack:
        15: iload 9 /* k */
            iload 7 /* end */
            iconst_1
            isub
            if_icmplt 13
        end local 9 // int k
        16: .line 82
            iinc 7 /* end */ -1
        17: .line 83
            goto 19
        18: .line 85
      StackMap locals:
      StackMap stack:
            iinc 8 /* j */ 1
        19: .line 76
      StackMap locals:
      StackMap stack:
            iload 8 /* j */
            iload 7 /* end */
            if_icmplt 10
        20: .line 88
            iload 7 /* end */
            aload 6 /* rawLoop */
            arraylength
            if_icmpeq 23
        21: .line 90
            aload 4 /* outline */
            iload 5 /* i */
            iload 7 /* end */
            anewarray org.apache.commons.math3.geometry.euclidean.twod.Vector2D
            aastore
        22: .line 91
            aload 6 /* rawLoop */
            iconst_0
            aload 4 /* outline */
            iload 5 /* i */
            aaload
            iconst_0
            iload 7 /* end */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        end local 8 // int j
        end local 7 // int end
        end local 6 // org.apache.commons.math3.geometry.euclidean.twod.Vector2D[] rawLoop
        23: .line 72
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        24: iload 5 /* i */
            aload 4 /* outline */
            arraylength
            if_icmplt 6
        end local 5 // int i
        25: .line 95
            aload 4 /* outline */
            areturn
        end local 4 // org.apache.commons.math3.geometry.euclidean.twod.Vector2D[][] outline
        end local 3 // org.apache.commons.math3.geometry.euclidean.twod.PolygonsSet projected
        end local 2 // org.apache.commons.math3.geometry.euclidean.threed.OutlineExtractor$BoundaryProjector projector
        end local 1 // org.apache.commons.math3.geometry.euclidean.threed.PolyhedronsSet polyhedronsSet
        end local 0 // org.apache.commons.math3.geometry.euclidean.threed.OutlineExtractor this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   26     0            this  Lorg/apache/commons/math3/geometry/euclidean/threed/OutlineExtractor;
            0   26     1  polyhedronsSet  Lorg/apache/commons/math3/geometry/euclidean/threed/PolyhedronsSet;
            1   26     2       projector  Lorg/apache/commons/math3/geometry/euclidean/threed/OutlineExtractor$BoundaryProjector;
            3   26     3       projected  Lorg/apache/commons/math3/geometry/euclidean/twod/PolygonsSet;
            4   26     4         outline  [[Lorg/apache/commons/math3/geometry/euclidean/twod/Vector2D;
            5   25     5               i  I
            7   23     6         rawLoop  [Lorg/apache/commons/math3/geometry/euclidean/twod/Vector2D;
            8   23     7             end  I
            9   23     8               j  I
           12   16     9               k  I
    MethodParameters:
                Name  Flags
      polyhedronsSet  final

  private boolean pointIsBetween(org.apache.commons.math3.geometry.euclidean.twod.Vector2D[], int, int);
    descriptor: ([Lorg/apache/commons/math3/geometry/euclidean/twod/Vector2D;II)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=21, args_size=4
        start local 0 // org.apache.commons.math3.geometry.euclidean.threed.OutlineExtractor this
        start local 1 // org.apache.commons.math3.geometry.euclidean.twod.Vector2D[] loop
        start local 2 // int n
        start local 3 // int i
         0: .line 108
            aload 1 /* loop */
            iload 3 /* i */
            iload 2 /* n */
            iadd
            iconst_1
            isub
            iload 2 /* n */
            irem
            aaload
            astore 4 /* previous */
        start local 4 // org.apache.commons.math3.geometry.euclidean.twod.Vector2D previous
         1: .line 109
            aload 1 /* loop */
            iload 3 /* i */
            aaload
            astore 5 /* current */
        start local 5 // org.apache.commons.math3.geometry.euclidean.twod.Vector2D current
         2: .line 110
            aload 1 /* loop */
            iload 3 /* i */
            iconst_1
            iadd
            iload 2 /* n */
            irem
            aaload
            astore 6 /* next */
        start local 6 // org.apache.commons.math3.geometry.euclidean.twod.Vector2D next
         3: .line 111
            aload 5 /* current */
            invokevirtual org.apache.commons.math3.geometry.euclidean.twod.Vector2D.getX:()D
            aload 4 /* previous */
            invokevirtual org.apache.commons.math3.geometry.euclidean.twod.Vector2D.getX:()D
            dsub
            dstore 7 /* dx1 */
        start local 7 // double dx1
         4: .line 112
            aload 5 /* current */
            invokevirtual org.apache.commons.math3.geometry.euclidean.twod.Vector2D.getY:()D
            aload 4 /* previous */
            invokevirtual org.apache.commons.math3.geometry.euclidean.twod.Vector2D.getY:()D
            dsub
            dstore 9 /* dy1 */
        start local 9 // double dy1
         5: .line 113
            aload 6 /* next */
            invokevirtual org.apache.commons.math3.geometry.euclidean.twod.Vector2D.getX:()D
            aload 5 /* current */
            invokevirtual org.apache.commons.math3.geometry.euclidean.twod.Vector2D.getX:()D
            dsub
            dstore 11 /* dx2 */
        start local 11 // double dx2
         6: .line 114
            aload 6 /* next */
            invokevirtual org.apache.commons.math3.geometry.euclidean.twod.Vector2D.getY:()D
            aload 5 /* current */
            invokevirtual org.apache.commons.math3.geometry.euclidean.twod.Vector2D.getY:()D
            dsub
            dstore 13 /* dy2 */
        start local 13 // double dy2
         7: .line 115
            dload 7 /* dx1 */
            dload 13 /* dy2 */
            dmul
            dload 11 /* dx2 */
            dload 9 /* dy1 */
            dmul
            dsub
            dstore 15 /* cross */
        start local 15 // double cross
         8: .line 116
            dload 7 /* dx1 */
            dload 11 /* dx2 */
            dmul
            dload 9 /* dy1 */
            dload 13 /* dy2 */
            dmul
            dadd
            dstore 17 /* dot */
        start local 17 // double dot
         9: .line 117
            dload 7 /* dx1 */
            dload 7 /* dx1 */
            dmul
            dload 9 /* dy1 */
            dload 9 /* dy1 */
            dmul
            dadd
            dload 11 /* dx2 */
            dload 11 /* dx2 */
            dmul
            dload 13 /* dy2 */
            dload 13 /* dy2 */
            dmul
            dadd
            dmul
            invokestatic org.apache.commons.math3.util.FastMath.sqrt:(D)D
            dstore 19 /* d1d2 */
        start local 19 // double d1d2
        10: .line 118
            dload 15 /* cross */
            invokestatic org.apache.commons.math3.util.FastMath.abs:(D)D
            ldc 1.0E-6
            dload 19 /* d1d2 */
            dmul
            dcmpg
            ifgt 11
            dload 17 /* dot */
            dconst_0
            dcmpl
            iflt 11
            iconst_1
            ireturn
      StackMap locals: org.apache.commons.math3.geometry.euclidean.threed.OutlineExtractor org.apache.commons.math3.geometry.euclidean.twod.Vector2D[] int int org.apache.commons.math3.geometry.euclidean.twod.Vector2D org.apache.commons.math3.geometry.euclidean.twod.Vector2D org.apache.commons.math3.geometry.euclidean.twod.Vector2D double double double double double double double
      StackMap stack:
        11: iconst_0
            ireturn
        end local 19 // double d1d2
        end local 17 // double dot
        end local 15 // double cross
        end local 13 // double dy2
        end local 11 // double dx2
        end local 9 // double dy1
        end local 7 // double dx1
        end local 6 // org.apache.commons.math3.geometry.euclidean.twod.Vector2D next
        end local 5 // org.apache.commons.math3.geometry.euclidean.twod.Vector2D current
        end local 4 // org.apache.commons.math3.geometry.euclidean.twod.Vector2D previous
        end local 3 // int i
        end local 2 // int n
        end local 1 // org.apache.commons.math3.geometry.euclidean.twod.Vector2D[] loop
        end local 0 // org.apache.commons.math3.geometry.euclidean.threed.OutlineExtractor this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   12     0      this  Lorg/apache/commons/math3/geometry/euclidean/threed/OutlineExtractor;
            0   12     1      loop  [Lorg/apache/commons/math3/geometry/euclidean/twod/Vector2D;
            0   12     2         n  I
            0   12     3         i  I
            1   12     4  previous  Lorg/apache/commons/math3/geometry/euclidean/twod/Vector2D;
            2   12     5   current  Lorg/apache/commons/math3/geometry/euclidean/twod/Vector2D;
            3   12     6      next  Lorg/apache/commons/math3/geometry/euclidean/twod/Vector2D;
            4   12     7       dx1  D
            5   12     9       dy1  D
            6   12    11       dx2  D
            7   12    13       dy2  D
            8   12    15     cross  D
            9   12    17       dot  D
           10   12    19      d1d2  D
    MethodParameters:
      Name  Flags
      loop  final
      n     final
      i     final
}
SourceFile: "OutlineExtractor.java"
NestMembers:
  org.apache.commons.math3.geometry.euclidean.threed.OutlineExtractor$BoundaryProjector
InnerClasses:
  private BoundaryProjector = org.apache.commons.math3.geometry.euclidean.threed.OutlineExtractor$BoundaryProjector of org.apache.commons.math3.geometry.euclidean.threed.OutlineExtractor