/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 0 - 2 0 1 6 ĠW illiam ĠBit tle Ġ Ġhttp :// www . dyn 4 j . org / Ċ Ġ* ĠAll Ġrights Ġreserved . Ċ Ġ* ĠĊ Ġ* ĠRedistribution Ġand Ġuse Ġin Ġsource Ġand Ġbinary Ġforms , Ġwith Ġor Ġwithout Ġmodification , Ġare Ġpermitted ĠĊ Ġ* Ġprovided Ġthat Ġthe Ġfollowing Ġconditions Ġare Ġmet : Ċ Ġ* ĠĊ Ġ* ĠĠ Ġ* ĠRedistributions Ġof Ġsource Ġcode Ġmust Ġretain Ġthe Ġabove Ġcopyright Ġnotice , Ġthis Ġlist Ġof Ġconditions ĠĊ Ġ* ĠĠĠĠ Ġand Ġthe Ġfollowing Ġdisclaimer . Ċ Ġ* ĠĠ Ġ* ĠRedistributions Ġin Ġbinary Ġform Ġmust Ġreproduce Ġthe Ġabove Ġcopyright Ġnotice , Ġthis Ġlist Ġof Ġconditions ĠĊ Ġ* ĠĠĠĠ Ġand Ġthe Ġfollowing Ġdisclaimer Ġin Ġthe Ġdocumentation Ġand / or Ġother Ġmaterials Ġprovided Ġwith Ġthe ĠĊ Ġ* ĠĠĠĠ Ġdistribution . Ċ Ġ* ĠĠ Ġ* ĠNeither Ġthe Ġname Ġof Ġdyn 4 j Ġnor Ġthe Ġnames Ġof Ġits Ġcontributors Ġmay Ġbe Ġused Ġto Ġendorse Ġor ĠĊ Ġ* ĠĠĠĠ Ġpromote Ġproducts Ġderived Ġfrom Ġthis Ġsoftware Ġwithout Ġspecific Ġprior Ġwritten Ġpermission . Ċ Ġ* ĠĊ Ġ* ĠTHIS ĠSOFTWARE ĠIS ĠPROVIDED ĠBY ĠTHE ĠCOPYRIGHT ĠHOLDERS ĠAND ĠCONTRIBUTORS Ġ" AS ĠIS " ĠAND ĠANY ĠEXPRESS ĠOR ĠĊ Ġ* ĠIMPLIED ĠWARRANTIES , ĠINCLUDING , ĠBUT ĠNOT ĠLIMITED ĠTO , ĠTHE ĠIMPLIED ĠWARRANTIES ĠOF ĠMERCHANTABILITY ĠAND ĠĊ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠARE ĠDISCLAIMED . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE ĠCOPYRIGHT ĠOWNER ĠOR ĠĊ Ġ* ĠCONTRIBUTORS ĠBE ĠLIABLE ĠFOR ĠANY ĠDIRECT , ĠINDIRECT , ĠINCIDENTAL , ĠSPECIAL , ĠEXEMPLARY , ĠOR ĠCONSEQUENTIAL ĠĊ Ġ* ĠDAMAGES Ġ( INCLUDING , ĠBUT ĠNOT ĠLIMITED ĠTO , ĠPROCUREMENT ĠOF ĠSUBSTITUTE ĠGOODS ĠOR ĠSERVICES ; ĠLOSS ĠOF ĠUSE , ĠĊ Ġ* ĠDATA , ĠOR ĠPROFITS ; ĠOR ĠBUSINESS ĠINTERRUPTION ) ĠHOWEVER ĠCAUSED ĠAND ĠON ĠANY ĠTHEORY ĠOF ĠLIABILITY , ĠWHETHER ĠĊ Ġ* ĠIN ĠCONTRACT , ĠSTRICT ĠLIABILITY , ĠOR ĠTORT Ġ( INCLUDING ĠNEGLIGENCE ĠOR ĠOTHERWISE ) ĠARISING ĠIN ĠANY ĠWAY ĠOUT ĠĊ Ġ* ĠOF ĠTHE ĠUSE ĠOF ĠTHIS ĠSOFTWARE , ĠEVEN ĠIF ĠADVISED ĠOF ĠTHE ĠPOSSIBILITY ĠOF ĠSUCH ĠDAMAGE . Ċ Ġ*/ Ċ package Ġorg . dyn 4 j . collision . man ifold Ċ Ċ import Ġorg . dyn 4 j . geometry . Convex Ċ import Ġorg . dyn 4 j . geometry . Shape Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġ[ Man ifold Point Id ] Ġthat Ġuses Ġedge Ġindexing . Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠThe Ġthe Ġedge Ġand Ġvertex Ġindic ies Ġare Ġthe Ġindic ies Ġof Ġthe Ġedges Ċ Ġ* Ġand Ġvert ic ies Ġin Ġthe Ġreference Ġand Ġincident Ġ[ Convex ] Ġ[ Shape ] s Ġin Ċ Ġ* Ġthe Ġcollision . Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠThe Ġf lipped Ġflag Ġis Ġset Ġwhen Ġthe Ġdefault Ġreference Ġedge Ġis Ġsw apped Ċ Ġ* Ġto Ġbe Ġthe Ġincident Ġedge . Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠFor Ġa Ġgiven Ġ[ Convex ] Ġ[ Shape ] Ġthe Ġindic ies Ġshould Ġnot Ġchange , Ġalthough Ċ Ġ* Ġthere Ġis Ġno Ġmechanism Ġprevent ing Ġthis . ĠIn Ġthe Ġcase Ġthey Ġchange , Ġthis Ġshould Ġonly Ċ Ġ* Ġaffect Ġany Ġcaching Ġof Ġthis Ġinformation . Ċ Ġ* Ġ@ author ĠW illiam ĠBit tle Ċ Ġ* Ġ@ version Ġ 3 . 2 . 0 Ċ Ġ* Ġ@ since Ġ 1 . 0 . 0 Ċ Ġ* Ġ@ see ĠMan ifold Point Id . DISTANCE Ċ Ġ*/ Ċ class ĠIndexed Man ifold Point Id Ġconstructor ( val Ġreference Edge : ĠInt , Ġval Ġincident Edge : ĠInt , Ġval Ġincident Vertex : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis F lipped : ĠBoolean Ġ= Ġfalse ) Ġ: ĠMan ifold Point Id Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġreference Ġedge Ġindex Ġof Ġthis Ġman ifold ĊĠĠĠĠ Ġ* Ġon Ġthe Ġ[ Shape ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreference Ġedge Ġis Ġthe Ġedge Ġthat Ġis Ġmost Ġper pend icular Ġto Ġthe Ġcollision Ġnormal . ĊĠĠĠĠ Ġ* Ġ@ return Ġint ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġincident Ġedge Ġindex Ġof Ġthis Ġman ifold ĊĠĠĠĠ Ġ* Ġon Ġthe Ġother Ġ[ Shape ]. ĊĠĠĠĠ Ġ* Ġ@ return Ġint ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġindex Ġof Ġthe Ġdee pe st Ġcollision Ġpoint Ġof Ġthe Ġincident Ġedge Ġof Ġthis Ġman ifold Ġon ĊĠĠĠĠ Ġ* Ġthe Ġother Ġ[ Shape ]. ĊĠĠĠĠ Ġ* Ġ@ return Ġint ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġtrue Ġif Ġthe Ġreference Ġedge Ġand Ġincident Ġedges Ġwere Ġsw apped . ĊĠĠĠĠ Ġ* Ġ@ return Ġboolean ĊĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġ/* Ġ( non - Javadoc ) Ċĉ Ġ* Ġ@ see Ġjava . lang . Object # equals ( java . lang . Object ) Ċĉ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ== Ġnull ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ=== Ġthis ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġis ĠIndexed Man ifold Point Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġo Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġother ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( reference Edge Ġ== Ġo . reference Edge Ġ&& Ġincident Edge Ġ== Ġo . incident Edge Ġ&& Ġincident Vertex Ġ== Ġo . incident Vertex Ġ&& Ġis F lipped Ġ== Ġo . is F lipped ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* Ġ( non - Javadoc ) Ċĉ Ġ* Ġ@ see Ġjava . lang . Object # hashCode () Ċĉ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġhash Ġ= Ġreference Edge ĊĠĠĠĠĠĠĠ Ġhash Ġ= Ġ 3 7 Ġ* Ġhash Ġ+ Ġincident Edge ĊĠĠĠĠĠĠĠ Ġhash Ġ= Ġ 3 7 Ġ* Ġhash Ġ+ Ġincident Vertex ĊĠĠĠĠĠĠĠ Ġhash Ġ= Ġ 3 7 Ġ* Ġhash Ġ+ Ġif Ġ( is F lipped ) Ġ 1 2 3 1 Ġelse Ġ 1 2 3 7 ĊĠĠĠĠĠĠĠ Ġreturn Ġhash ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* Ġ( non - Javadoc ) Ċĉ Ġ* Ġ@ see Ġjava . lang . Object # toString () Ċĉ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsb : ĠStringBuilder Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġsb . append (" Indexed Man ifold Point Id [ Reference Edge =" ). append ( reference Edge ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ("| Incident Edge =" ). append ( incident Edge ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ("| Incident Vertex =" ). append ( incident Vertex ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ("| Is F lipped =" ). append ( is F lipped ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (" ]") ĊĠĠĠĠĠĠĠ Ġreturn Ġsb . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFull Ġconstructor . ĊĠĠĠĠ Ġ* Ġ@ param Ġreference Edge Ġthe Ġreference Ġedge Ġindex ĊĠĠĠĠ Ġ* Ġ@ param Ġincident Edge Ġthe Ġincident Ġedge Ġindex ĊĠĠĠĠ Ġ* Ġ@ param Ġincident Vertex Ġthe Ġincident Ġvertex Ġindex ĊĠĠĠĠ Ġ* Ġ@ param Ġis F lipped Ġwhether Ġthe Ġreference Ġand Ġincident Ġfeatures Ġf lipped ĊĠĠĠĠ Ġ*/ Ċ }