/* Ċ Ġ* ĠCopyright Ġ 2 0 1 7 ĠThe ĠE uk lid ĠAuthors Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ ĊĊĊ Ċ package Ġe uk lid . f Ċ Ċ import Ġe uk lid . util . Non invert ible Transform Exception Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġge ometric Ġtransform . ĠSpecial ized Ġimplementations Ġexist Ġfor Ġidentity , Ġrigid Ġbody , Ċ Ġ* Ġuniform , Ġnon - uniform , Ġand Ġaffine Ġtransforms . Ċ Ġ*/ Ċ interface ĠTransform Ġ{ ĊĠĠĠ Ġ/** ĠReturns Ġthe Ġuniform Ġscale Ġapplied Ġby Ġthis Ġtransform . ĠThe Ġuniform Ġscale Ġwill Ġbe Ġapprox imated ĊĠĠĠĠ Ġ* Ġfor Ġnon - uniform Ġtransforms . Ġ Ġ*/ ĊĠĠĠ Ġval Ġuniform Scale : ĠFloat ĊĊĠĠĠ Ġ/** ĠReturns Ġthe Ġscale Ġvector Ġfor Ġthis Ġtransform . Ġ Ġ*/ ĊĠĠĠ Ġval Ġscale : ĠVector ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠVector ( scale X , Ġscale Y ) ĊĊĠĠĠ Ġ/** ĠReturns Ġthe Ġx - component Ġof Ġthe Ġscale Ġapplied Ġby Ġthis Ġtransform . ĠNote Ġthat Ġthis Ġwill Ġbe ĊĠĠĠĠ Ġ* Ġextracted Ġand Ġtherefore Ġapproximate Ġfor Ġaffine Ġtransforms . Ġ Ġ*/ ĊĠĠĠ Ġval Ġscale X : ĠFloat ĊĊĠĠĠ Ġ/** ĠReturns Ġthe Ġy - component Ġof Ġthe Ġscale Ġapplied Ġby Ġthis Ġtransform . ĠNote Ġthat Ġthis Ġwill Ġbe ĊĠĠĠĠ Ġ* Ġextracted Ġand Ġtherefore Ġapproximate Ġfor Ġaffine Ġtransforms . Ġ Ġ*/ ĊĠĠĠ Ġval Ġscale Y : ĠFloat ĊĊĠĠĠ Ġ/** ĠReturns Ġthe Ġrotation Ġapplied Ġby Ġthis Ġtransform . ĠNote Ġthat Ġthe Ġrotation Ġis Ġextracted Ġand ĊĠĠĠĠ Ġ* Ġtherefore Ġapproximate Ġfor Ġaffine Ġtransforms . ĊĠĠĠĠ Ġ* Ġ@ throws ĠNon invert ible Transform Exception Ġif Ġthe Ġtransform Ġis Ġnot Ġinvert ible . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġrotation : ĠFloat ĊĊĠĠĠ Ġ/** ĠReturns Ġthe Ġtranslation Ġvector Ġfor Ġthis Ġtransform . Ġ Ġ*/ ĊĠĠĠ Ġval Ġtranslation : ĠVector ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠVector ( tx , Ġty ) ĊĊĠĠĠ Ġ/** ĠReturns Ġthe Ġx - coordinate Ġof Ġthe Ġtranslation Ġcomponent . Ġ Ġ*/ ĊĠĠĠ Ġval Ġtx : ĠFloat ĊĊĠĠĠ Ġ/** ĠReturns Ġthe Ġy - coordinate Ġof Ġthe Ġtranslation Ġcomponent . Ġ Ġ*/ ĊĠĠĠ Ġval Ġty : ĠFloat ĊĊĠĠĠ Ġ/** ĠCop ies Ġthe Ġaffine Ġtransform Ġmatrix Ġinto Ġthe Ġsupplied Ġarray . ĊĠĠĠĠ Ġ* Ġ@ param Ġmatrix Ġthe Ġarray Ġwhich Ġreceives Ġ` m 0 0 , Ġm 0 1 , Ġm 1 0 , Ġm 1 1 , Ġtx , Ġty `. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget ( matrix : ĠFloat Array ) ĊĊĠĠĠ Ġ/** ĠSets Ġthe Ġuniform Ġscale Ġof Ġthis Ġtransform . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis Ġinstance , Ġfor Ġchaining . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġif Ġthe Ġsupplied Ġscale Ġis Ġzero . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠUnsupportedOperationException Ġif Ġthe Ġtransform Ġis Ġnot Ġuniform Ġor Ġgreater . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Uniform Scale ( scale : ĠFloat ): ĠTransform ĊĊĠĠĠ Ġ/** ĠSets Ġthe Ġx Ġand Ġy Ġscale Ġof Ġthis Ġtransform . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis Ġinstance , Ġfor Ġchaining . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġif Ġeither Ġsupplied Ġscale Ġis Ġzero . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠUnsupportedOperationException Ġif Ġthe Ġtransform Ġis Ġnot Ġnon - uniform Ġor Ġgreater . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Scale ( scale X : ĠFloat , Ġscale Y : ĠFloat ): ĠTransform Ġ{ ĊĠĠĠĠĠĠĠ Ġset Scale X ( scale X ) ĊĠĠĠĠĠĠĠ Ġset Scale Y ( scale Y ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠSets Ġthe Ġx Ġscale Ġof Ġthis Ġtransform . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis Ġinstance , Ġfor Ġchaining . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġif Ġthe Ġsupplied Ġscale Ġis Ġzero . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠUnsupportedOperationException Ġif Ġthe Ġtransform Ġis Ġnot Ġnon - uniform Ġor Ġgreater . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Scale X ( scale X : ĠFloat ): ĠTransform ĊĊĠĠĠ Ġ/** ĠSets Ġthe Ġy Ġscale Ġof Ġthis Ġtransform . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis Ġinstance , Ġfor Ġchaining . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġif Ġthe Ġsupplied Ġscale Ġis Ġzero . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠUnsupportedOperationException Ġif Ġthe Ġtransform Ġis Ġnot Ġnon - uniform Ġor Ġgreater . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Scale Y ( scale Y : ĠFloat ): ĠTransform ĊĊĠĠĠ Ġ/** ĠSets Ġthe Ġrotation Ġcomponent Ġof Ġthis Ġtransform . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis Ġinstance , Ġfor Ġchaining . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠUnsupportedOperationException Ġif Ġthe Ġtransform Ġis Ġnot Ġrigid Ġbody Ġor Ġgreater . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Rotation ( angle : ĠFloat ): ĠTransform ĊĊĠĠĠ Ġ/** ĠSets Ġthe Ġtranslation Ġcomponent Ġof Ġthis Ġtransform . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis Ġinstance , Ġfor Ġchaining . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠUnsupportedOperationException Ġif Ġthe Ġtransform Ġis Ġnot Ġrigid Ġbody Ġor Ġgreater . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Translation ( tx : ĠFloat , Ġty : ĠFloat ): ĠTransform Ġ{ ĊĠĠĠĠĠĠĠ Ġset Tx ( tx ) ĊĠĠĠĠĠĠĠ Ġset Ty ( ty ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠSets Ġthe Ġx - component Ġof Ġthis Ġtransform 's Ġtranslation . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis Ġinstance , Ġfor Ġchaining . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠUnsupportedOperationException Ġif Ġthe Ġtransform Ġis Ġnot Ġrigid Ġbody Ġor Ġgreater . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Tx ( tx : ĠFloat ): ĠTransform ĊĊĠĠĠ Ġ/** ĠSets Ġthe Ġy - component Ġof Ġthis Ġtransform 's Ġtranslation . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis Ġinstance , Ġfor Ġchaining . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠUnsupportedOperationException Ġif Ġthe Ġtransform Ġis Ġnot Ġrigid Ġbody Ġor Ġgreater . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Ty ( ty : ĠFloat ): ĠTransform ĊĊĠĠĠ Ġ/** ĠSets Ġthe Ġaffine Ġtransform Ġmatrix . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis Ġinstance , Ġfor Ġchaining . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠUnsupportedOperationException Ġif Ġthe Ġtransform Ġis Ġnot Ġaffine Ġor Ġgreater . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Transform ( m 0 0 : ĠFloat , Ġm 0 1 : ĠFloat , Ġm 1 0 : ĠFloat , Ġm 1 1 : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtx : ĠFloat , Ġty : ĠFloat ): ĠTransform ĊĊĠĠĠ Ġ/** ĠSca les Ġthis Ġtransform Ġin Ġa Ġuniform Ġmanner Ġby Ġthe Ġspecified Ġamount . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis Ġinstance , Ġfor Ġchaining . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġif Ġthe Ġsupplied Ġscale Ġis Ġzero . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠUnsupportedOperationException Ġif Ġthe Ġtransform Ġis Ġnot Ġuniform Ġor Ġgreater . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġuniform Scale ( scale : ĠFloat ): ĠTransform ĊĊĠĠĠ Ġ/** ĠSca les Ġthis Ġtransform Ġby Ġthe Ġspecified Ġamount Ġin Ġthe Ġx Ġand Ġy Ġdimensions . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis Ġinstance , Ġfor Ġchaining . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġif Ġeither Ġsupplied Ġscale Ġis Ġzero . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠUnsupportedOperationException Ġif Ġthe Ġtransform Ġis Ġnot Ġnon - uniform Ġor Ġgreater . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġscale ( scale X : ĠFloat , Ġscale Y : ĠFloat ): ĠTransform Ġ{ ĊĠĠĠĠĠĠĠ Ġscale X ( scale X ) ĊĠĠĠĠĠĠĠ Ġscale Y ( scale Y ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠSca les Ġthis Ġtransform Ġby Ġthe Ġspecified Ġamount Ġin Ġthe Ġx Ġdimension . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis Ġinstance , Ġfor Ġchaining . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġif Ġthe Ġsupplied Ġscale Ġis Ġzero . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠUnsupportedOperationException Ġif Ġthe Ġtransform Ġis Ġnot Ġnon - uniform Ġor Ġgreater . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġscale X ( scale X : ĠFloat ): ĠTransform ĊĊĠĠĠ Ġ/** ĠSca les Ġthis Ġtransform Ġby Ġthe Ġspecified Ġamount Ġin Ġthe Ġy Ġdimension . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis Ġinstance , Ġfor Ġchaining . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġif Ġthe Ġsupplied Ġscale Ġis Ġzero . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠUnsupportedOperationException Ġif Ġthe Ġtransform Ġis Ġnot Ġnon - uniform Ġor Ġgreater . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġscale Y ( scale Y : ĠFloat ): ĠTransform ĊĊĠĠĠ Ġ/** ĠRot ates Ġthis Ġtransform . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis Ġinstance , Ġfor Ġchaining . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠUnsupportedOperationException Ġif Ġthe Ġtransform Ġis Ġnot Ġrigid Ġbody Ġor Ġgreater . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġrotate ( angle : ĠFloat ): ĠTransform ĊĊĠĠĠ Ġ/** ĠTrans lates Ġthis Ġtransform . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis Ġinstance , Ġfor Ġchaining . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠUnsupportedOperationException Ġif Ġthe Ġtransform Ġis Ġnot Ġrigid Ġbody Ġor Ġgreater . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġtranslate ( tx : ĠFloat , Ġty : ĠFloat ): ĠTransform Ġ{ ĊĠĠĠĠĠĠĠ ĠtranslateX ( tx ) ĊĠĠĠĠĠĠĠ ĠtranslateY ( ty ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠTrans lates Ġthis Ġtransform Ġin Ġthe Ġx Ġdimension . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis Ġinstance , Ġfor Ġchaining . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠUnsupportedOperationException Ġif Ġthe Ġtransform Ġis Ġnot Ġrigid Ġbody Ġor Ġgreater . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠtranslateX ( tx : ĠFloat ): ĠTransform ĊĊĠĠĠ Ġ/** ĠTrans lates Ġthis Ġtransform Ġin Ġthe Ġy Ġdimension . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis Ġinstance , Ġfor Ġchaining . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠUnsupportedOperationException Ġif Ġthe Ġtransform Ġis Ġnot Ġrigid Ġbody Ġor Ġgreater . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠtranslateY ( ty : ĠFloat ): ĠTransform ĊĊĠĠĠ Ġ/** ĠShe ars Ġthis Ġtransform . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis Ġinstance , Ġfor Ġchaining . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠUnsupportedOperationException Ġif Ġthe Ġtransform Ġis Ġnot Ġaffine Ġor Ġgreater . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġshe ar ( sx : ĠFloat , Ġsy : ĠFloat ): ĠTransform Ġ{ ĊĠĠĠĠĠĠĠ Ġshe ar X ( sx ) ĊĠĠĠĠĠĠĠ Ġshe ar Y ( sy ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠShe ars Ġthis Ġtransform Ġin Ġthe Ġx Ġdimension . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis Ġinstance , Ġfor Ġchaining . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠUnsupportedOperationException Ġif Ġthe Ġtransform Ġis Ġnot Ġaffine Ġor Ġgreater . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġshe ar X ( sx : ĠFloat ): ĠTransform ĊĊĠĠĠ Ġ/** ĠShe ars Ġthis Ġtransform Ġin Ġthe Ġy Ġdimension . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis Ġinstance , Ġfor Ġchaining . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠUnsupportedOperationException Ġif Ġthe Ġtransform Ġis Ġnot Ġaffine Ġor Ġgreater . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġshe ar Y ( sy : ĠFloat ): ĠTransform ĊĊĠĠĠ Ġ/** ĠReturns Ġa Ġnew Ġtransform Ġthat Ġrepresents Ġthe Ġinverse Ġof Ġthis Ġtransform . ĊĠĠĠĠ Ġ* Ġ@ throws ĠNon invert ible Transform Exception Ġif Ġthe Ġtransform Ġis Ġnot Ġinvert ible . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinvert (): ĠTransform ĊĊĠĠĠ Ġ/** ĠReturns Ġa Ġnew Ġtransform Ġcompri sed Ġof Ġthe Ġconcat enation Ġof Ġ` other ` Ġto Ġthis Ġtransform ĊĠĠĠĠ Ġ* Ġ( i . e . Ġ` this Ġx Ġother `). Ġ Ġ*/ ĊĠĠĠ Ġfun Ġconcatenate ( other : ĠTransform ): ĠTransform ĊĊĠĠĠ Ġ/** ĠReturns Ġa Ġnew Ġtransform Ġcompri sed Ġof Ġthe Ġconcat enation Ġof Ġthis Ġtransform Ġto Ġ` other ` ĊĠĠĠĠ Ġ* Ġ( i . e . Ġ` other Ġx Ġthis `). Ġ Ġ*/ ĊĠĠĠ Ġfun Ġpre Concat enate ( other : ĠTransform ): ĠTransform ĊĊĠĠĠ Ġ/** ĠReturns Ġa Ġnew Ġtransform Ġcompri sed Ġof Ġthe Ġlinear Ġinterpolation Ġbetween Ġthis Ġtransform Ġand ĊĠĠĠĠ Ġ* Ġthe Ġspecified Ġother . Ġ Ġ*/ ĊĠĠĠ Ġfun Ġl erp ( other : ĠTransform , Ġt : ĠFloat ): ĠTransform ĊĊĠĠĠ Ġ/** ĠTrans forms Ġthe Ġsupplied Ġpoint , Ġwriting Ġthe Ġresult Ġinto Ġ` into `. ĊĠĠĠĠ Ġ* Ġ@ param Ġinto Ġa Ġpoint Ġinto Ġwhich Ġto Ġstore Ġthe Ġresult , Ġmay Ġbe Ġthe Ġsame Ġobject Ġas Ġ` p `. ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġ` into ` Ġfor Ġchaining . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġtransform ( p : ĠI Point , Ġinto : ĠPoint ): ĠPoint ĊĊĠĠĠ Ġ/** ĠTrans forms Ġthe Ġsupplied Ġpoints . ĊĠĠĠĠ Ġ* Ġ@ param Ġsrc Ġthe Ġpoints Ġto Ġbe Ġtransformed . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġsrc Off Ġthe Ġoffset Ġinto Ġthe Ġ` src ` Ġarray Ġat Ġwhich Ġto Ġstart . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġdst Ġthe Ġpoints Ġinto Ġwhich Ġto Ġstore Ġthe Ġtransformed Ġpoints . ĠMay Ġbe Ġ` src `. ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġdst Off Ġthe Ġoffset Ġinto Ġthe Ġ` dst ` Ġarray Ġat Ġwhich Ġto Ġstart . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcount Ġthe Ġnumber Ġof Ġpoints Ġto Ġtransform . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġtransform ( src : ĠArray < I Point >, Ġsrc Off : ĠInt , Ġdst : ĠArray < Point >, Ġdst Off : ĠInt , Ġcount : ĠInt ) ĊĊĠĠĠ Ġ/** ĠTrans forms Ġthe Ġsupplied Ġpoints . ĊĠĠĠĠ Ġ* Ġ@ param Ġsrc Ġthe Ġpoints Ġto Ġbe Ġtransformed Ġ( as Ġ`[ x , Ġy , Ġx , Ġy , Ġ...] `). ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġsrc Off Ġthe Ġoffset Ġinto Ġthe Ġ` src ` Ġarray Ġat Ġwhich Ġto Ġstart . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġdst Ġthe Ġpoints Ġinto Ġwhich Ġto Ġstore Ġthe Ġtransformed Ġpoints . ĠMay Ġbe Ġ` src `. ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġdst Off Ġthe Ġoffset Ġinto Ġthe Ġ` dst ` Ġarray Ġat Ġwhich Ġto Ġstart . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcount Ġthe Ġnumber Ġof Ġpoints Ġto Ġtransform . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġtransform ( src : ĠFloat Array , Ġsrc Off : ĠInt , Ġdst : ĠFloat Array , Ġdst Off : ĠInt , Ġcount : ĠInt ) ĊĊĠĠĠ Ġ/** ĠIn verse Ġtransforms Ġthe Ġsupplied Ġpoint , Ġwriting Ġthe Ġresult Ġinto Ġ` into `. ĊĠĠĠĠ Ġ* Ġ@ param Ġinto Ġa Ġpoint Ġinto Ġwhich Ġto Ġstore Ġthe Ġresult , Ġmay Ġbe Ġthe Ġsame Ġobject Ġas Ġ` p `. ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġ` into `, Ġfor Ġchaining . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠNon invert ible Transform Exception Ġif Ġthe Ġtransform Ġis Ġnot Ġinvert ible . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinverse Transform ( p : ĠI Point , Ġinto : ĠPoint ): ĠPoint ĊĊĠĠĠ Ġ/** ĠTrans forms Ġthe Ġsupplied Ġvector Ġas Ġa Ġpoint Ġ( accounting Ġfor Ġtranslation ), Ġwriting Ġthe Ġresult ĊĠĠĠĠ Ġ* Ġinto Ġ` into `. ĊĠĠĠĠ Ġ* Ġ@ param Ġinto Ġa Ġvector Ġinto Ġwhich Ġto Ġstore Ġthe Ġresult , Ġmay Ġbe Ġthe Ġsame Ġobject Ġas Ġ` v `. ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġ` into `, Ġfor Ġchaining . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġtransform Point ( v : ĠI Vector , Ġinto : ĠVector ): ĠVector ĊĊĠĠĠ Ġ/** ĠTrans forms Ġthe Ġsupplied Ġvector , Ġwriting Ġthe Ġresult Ġinto Ġ` into `. ĊĠĠĠĠ Ġ* Ġ@ param Ġinto Ġa Ġvector Ġinto Ġwhich Ġto Ġstore Ġthe Ġresult , Ġmay Ġbe Ġthe Ġsame Ġobject Ġas Ġ` v `. ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġ` into `, Ġfor Ġchaining . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġtransform ( v : ĠI Vector , Ġinto : ĠVector ): ĠVector ĊĊĠĠĠ Ġ/** ĠIn verse Ġtransforms Ġthe Ġsupplied Ġvector , Ġwriting Ġthe Ġresult Ġinto Ġ` into `. ĊĠĠĠĠ Ġ* Ġ@ param Ġinto Ġa Ġvector Ġinto Ġwhich Ġto Ġstore Ġthe Ġresult , Ġmay Ġbe Ġthe Ġsame Ġobject Ġas Ġ` v `. ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġ` into `, Ġfor Ġchaining . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws ĠNon invert ible Transform Exception Ġif Ġthe Ġtransform Ġis Ġnot Ġinvert ible . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinverse Transform ( v : ĠI Vector , Ġinto : ĠVector ): ĠVector ĊĊĠĠĠ Ġ/** ĠReturns Ġa Ġcopy Ġof Ġthis Ġtransform . Ġ Ġ*/ ĊĠĠĠ Ġfun Ġcopy (): ĠTransform ĊĊĠĠĠ Ġ/** ĠReturns Ġan Ġinteger Ġthat Ġincreases Ġmon oton ically Ġwith Ġthe Ġgener ality Ġof Ġthe Ġtransform ĊĠĠĠĠ Ġ* Ġimplementation . ĠUsed Ġinternally Ġwhen Ġcombining Ġtransforms . Ġ Ġ*/ ĊĠĠĠ Ġfun Ġgener ality (): ĠInt Ċ } Ċ