Package gov.nih.mipav.model.structures
Class GenericPolygonClipper
java.lang.Object
gov.nih.mipav.model.structures.GenericPolygonClipper
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate classprivate static enumprivate classstatic enumprivate classprivate classprivate classprivate classprivate classprivate classprivate classprivate class -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final intprivate static final intprivate static final intprivate static final intprivate static final intprivate boolean[]private static final doubleProject: Generic Polygon Clipper A new algorithm for calculating the difference, intersection, exclusive-or or union of arbitrary polygon sets.private static final intprivate static final intprivate static final intprivate static final intprivate static final intprivate static final intprivate static final doubleprivate static final intprivate static final intprivate static final intprivate static final intprivate static final intprivate static final intprivate static final int(package private) int[][]private static final intprivate static final intprivate static final intprivate static final intprivate static final intprivate boolean[]private static final intprivate static final int -
Constructor Summary
ConstructorsConstructorDescriptionGenericPolygonClipper(GenericPolygonClipper.gpc_op op, VOI subj, VOI clip, VOI result) -
Method Summary
Modifier and TypeMethodDescriptionprivate voidadd_edge_to_aet(GenericPolygonClipper.edge_node[] aet, GenericPolygonClipper.edge_node edge, GenericPolygonClipper.edge_node prev) private voidadd_intersection(GenericPolygonClipper.it_node[] it, GenericPolygonClipper.edge_node edge0, GenericPolygonClipper.edge_node edge1, double x, double y) private voidadd_left(GenericPolygonClipper.polygon_node p, double x, double y) private voidadd_local_min(GenericPolygonClipper.polygon_node[] p, GenericPolygonClipper.edge_node edge, double x, double y) private voidadd_right(GenericPolygonClipper.polygon_node p, double x, double y) private voidadd_st_edge(GenericPolygonClipper.st_node[] st, GenericPolygonClipper.it_node[] it, GenericPolygonClipper.edge_node edge, double dy) private voidadd_to_sbtree(int[] entries, GenericPolygonClipper.sb_tree[] sbtree, double y) private GenericPolygonClipper.edge_node[]bound_list(GenericPolygonClipper.lmt_node[] lmt, double y) private voidbuild_intersection_table(GenericPolygonClipper.it_node[] it, GenericPolygonClipper.edge_node aet, double dy) private GenericPolygonClipper.edge_node[]build_lmt(GenericPolygonClipper.lmt_node[] lmt, GenericPolygonClipper.sb_tree[] sbtree, int[] sbt_entries, VOIBaseVector p, int type, GenericPolygonClipper.gpc_op op) private voidbuild_sbt(int[] entries, double[] sbt, GenericPolygonClipper.sb_tree sbtree) private intprivate intprivate GenericPolygonClipper.bbox[]private booleanEQ(double a, double b) private voidfree_sbtree(GenericPolygonClipper.sb_tree[] sbtree) private booleanFWD_MIN(GenericPolygonClipper.edge_node[] v, int i, int n) private voidinsert_bound(GenericPolygonClipper.edge_node[] b, GenericPolygonClipper.edge_node[] e, int index) private voidmerge_left(GenericPolygonClipper.polygon_node p, GenericPolygonClipper.polygon_node q, GenericPolygonClipper.polygon_node list) private voidmerge_right(GenericPolygonClipper.polygon_node p, GenericPolygonClipper.polygon_node q, GenericPolygonClipper.polygon_node list) private voidminimax_test(VOIBaseVector subj, VOIBaseVector clip, GenericPolygonClipper.gpc_op op) private intNEXT_INDEX(int i, int n) private booleanNOT_FMAX(GenericPolygonClipper.edge_node[] v, int i, int n) private booleanNOT_RMAX(GenericPolygonClipper.edge_node[] v, int i, int n) private booleanOPTIMAL(GenericPolygonClipper.gpc_vertex[] v, int i, int n) private intPREV_INDEX(int i, int n) private voidprivate voidprivate booleanREV_MIN(GenericPolygonClipper.edge_node[] v, int i, int n) voidselfTest(int testNum) void
-
Field Details
-
DBL_EPSILON
private static final double DBL_EPSILONProject: Generic Polygon Clipper A new algorithm for calculating the difference, intersection, exclusive-or or union of arbitrary polygon sets. File: gpc.c Author: Alan Murta (email: gpc@cs.man.ac.uk) Version: 2.32 Date: 17th December 2004 Copyright: (C) Advanced Interfaces Group, University of Manchester. This software is free for non-commercial use. It may be copied, modified, and redistributed provided that this copyright notice is preserved on all copies. The intellectual property rights of the algorithms used reside with the University of Manchester Advanced Interfaces Group. You may not use this software, in whole or in part, in support of any commercial product without the express consent of the author. There is no warranty or other guarantee of fitness of this software for any purpose. It is provided solely "as is".- See Also:
-
GPC_EPSILON
private static final double GPC_EPSILON- See Also:
-
LEFT
private static final int LEFT- See Also:
-
RIGHT
private static final int RIGHT- See Also:
-
ABOVE
private static final int ABOVE- See Also:
-
BELOW
private static final int BELOW- See Also:
-
CLIP
private static final int CLIP- See Also:
-
SUBJ
private static final int SUBJ- See Also:
-
NUL
private static final int NUL- See Also:
-
EMX
private static final int EMX- See Also:
-
ELI
private static final int ELI- See Also:
-
TED
private static final int TED- See Also:
-
ERI
private static final int ERI- See Also:
-
RED
private static final int RED- See Also:
-
IMM
private static final int IMM- See Also:
-
IMN
private static final int IMN- See Also:
-
EMN
private static final int EMN- See Also:
-
EMM
private static final int EMM- See Also:
-
LED
private static final int LED- See Also:
-
ILI
private static final int ILI- See Also:
-
BED
private static final int BED- See Also:
-
IRI
private static final int IRI- See Also:
-
IMX
private static final int IMX- See Also:
-
FUL
private static final int FUL- See Also:
-
NH
private static final int NH- See Also:
-
BH
private static final int BH- See Also:
-
TH
private static final int TH- See Also:
-
next_h_state
int[][] next_h_state -
clipContributingStatus
private boolean[] clipContributingStatus -
subjContributingStatus
private boolean[] subjContributingStatus
-
-
Constructor Details
-
GenericPolygonClipper
-
GenericPolygonClipper
public GenericPolygonClipper()
-
-
Method Details
-
EQ
private boolean EQ(double a, double b) -
PREV_INDEX
private int PREV_INDEX(int i, int n) -
NEXT_INDEX
private int NEXT_INDEX(int i, int n) -
OPTIMAL
-
FWD_MIN
-
NOT_FMAX
-
REV_MIN
-
NOT_RMAX
-
reset_it
-
reset_lmt
-
insert_bound
private void insert_bound(GenericPolygonClipper.edge_node[] b, GenericPolygonClipper.edge_node[] e, int index) -
bound_list
private GenericPolygonClipper.edge_node[] bound_list(GenericPolygonClipper.lmt_node[] lmt, double y) -
add_to_sbtree
-
build_sbt
-
free_sbtree
-
count_optimal_vertices
-
build_lmt
private GenericPolygonClipper.edge_node[] build_lmt(GenericPolygonClipper.lmt_node[] lmt, GenericPolygonClipper.sb_tree[] sbtree, int[] sbt_entries, VOIBaseVector p, int type, GenericPolygonClipper.gpc_op op) -
add_edge_to_aet
private void add_edge_to_aet(GenericPolygonClipper.edge_node[] aet, GenericPolygonClipper.edge_node edge, GenericPolygonClipper.edge_node prev) -
add_intersection
private void add_intersection(GenericPolygonClipper.it_node[] it, GenericPolygonClipper.edge_node edge0, GenericPolygonClipper.edge_node edge1, double x, double y) -
add_st_edge
private void add_st_edge(GenericPolygonClipper.st_node[] st, GenericPolygonClipper.it_node[] it, GenericPolygonClipper.edge_node edge, double dy) -
build_intersection_table
private void build_intersection_table(GenericPolygonClipper.it_node[] it, GenericPolygonClipper.edge_node aet, double dy) -
count_contours
-
add_left
-
merge_left
private void merge_left(GenericPolygonClipper.polygon_node p, GenericPolygonClipper.polygon_node q, GenericPolygonClipper.polygon_node list) -
add_right
-
merge_right
private void merge_right(GenericPolygonClipper.polygon_node p, GenericPolygonClipper.polygon_node q, GenericPolygonClipper.polygon_node list) -
add_local_min
private void add_local_min(GenericPolygonClipper.polygon_node[] p, GenericPolygonClipper.edge_node edge, double x, double y) -
create_contour_bboxes
-
minimax_test
-
selfTest
public void selfTest(int testNum) -
selfTest2
public void selfTest2()
-