From 19aa168a3c2a9aa894fa9641bb1bbdb11efd215f Mon Sep 17 00:00:00 2001 From: davpapp Date: Mon, 19 Feb 2018 16:25:11 -0500 Subject: [PATCH] Began work on generating parabola for randomization --- src/Cursor.java | 3 +-- src/CursorPath.java | 26 ++++++++++++++++++++------ src/CursorPoint.java | 6 ++++++ src/Randomizer.java | 4 ++-- target/classes/Cursor.class | Bin 8326 -> 8326 bytes target/classes/CursorPath.class | Bin 5684 -> 6124 bytes target/classes/CursorPoint.class | Bin 1881 -> 2067 bytes target/classes/Randomizer.class | Bin 2154 -> 2158 bytes target/classes/RandomizerTest.class | Bin 1175 -> 1059 bytes 9 files changed, 29 insertions(+), 10 deletions(-) diff --git a/src/Cursor.java b/src/Cursor.java index 45d0f33..bccc2f7 100644 --- a/src/Cursor.java +++ b/src/Cursor.java @@ -67,7 +67,6 @@ public class Cursor { this.cursorPathsByDistance.get(cursorPath.getCursorPathDistance()).add(cursorPath); } - // TODO: make sure these are reasonable private int getRandomClickLength() { return randomizer.nextGaussianWithinRange(MINIMUM_CLICK_LENGTH, MAXIMUM_CLICK_LENGTH); @@ -76,7 +75,7 @@ public class Cursor { private int getRandomClickReleaseLength() { return randomizer.nextGaussianWithinRange(MINIMUM_CLICK_LENGTH + 5, MAXIMUM_CLICK_LENGTH + 10); } - + // END public void leftClickCursor() throws InterruptedException { robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); diff --git a/src/CursorPath.java b/src/CursorPath.java index 9242347..56ec307 100644 --- a/src/CursorPath.java +++ b/src/CursorPath.java @@ -3,6 +3,7 @@ */ import java.util.ArrayList; +import java.util.Random; public class CursorPath { @@ -10,6 +11,7 @@ public class CursorPath { private double theta; private int distance; private int timespan; + Randomizer randomizer; public CursorPath(ArrayList cursorPoints) { @@ -17,8 +19,10 @@ public class CursorPath { this.distance = calculateCursorPathDistance(); this.theta = calculateCursorPathTheta(); this.timespan = calculateCursorPathTimespan(); + this.randomizer = new Randomizer(); } + // TODO: refactor public CursorPath(ArrayList cursorPoints, boolean setInitializiationOff) { this.cursorPoints = cursorPoints; @@ -54,20 +58,30 @@ public class CursorPath { } public CursorPath getScaledCopyOfCursorPath(double factorToScaleBy) { - ArrayList scaledCursorPath = new ArrayList(); + ArrayList scaledCursorPoints= new ArrayList(); for (CursorPoint cursorPoint : this.cursorPoints) { - scaledCursorPath.add(cursorPoint.getCursorPointScaledBy(factorToScaleBy)); + scaledCursorPoints.add(cursorPoint.getCursorPointScaledBy(factorToScaleBy)); } - return new CursorPath(scaledCursorPath, true); + return new CursorPath(scaledCursorPoints, true); } public CursorPath getRotatedCopyOfCursorPath(double angleToRotateTo) { - ArrayList rotatedCursorPath = new ArrayList(); + ArrayList rotatedCursorPoints = new ArrayList(); double angleToRotateBy = this.theta - angleToRotateTo; for (CursorPoint cursorPoint : this.cursorPoints) { - rotatedCursorPath.add(cursorPoint.getCursorPointRotatedBy(angleToRotateBy)); + rotatedCursorPoints.add(cursorPoint.getCursorPointRotatedBy(angleToRotateBy)); } - return new CursorPath(rotatedCursorPath, true); + return new CursorPath(rotatedCursorPoints, true); + } + + public CursorPath getCopyOfCursorPathTransformedByParabola() { + double[] parabolaEquation = randomizer.generateParabolaEquation(this.getCursorPathDistance()); + ArrayList transformedCursorPoints = new ArrayList(); + for (CursorPoint cursorPoint : this.cursorPoints) { + transformedCursorPoints.add(cursorPoint.getCursorPointTransformedBy(parabolaEquation);) + } + return new CursorPath(transformedCursorPoints, true); + } private int calculateCursorPathTimespan() { diff --git a/src/CursorPoint.java b/src/CursorPoint.java index 4a57d96..594eb66 100644 --- a/src/CursorPoint.java +++ b/src/CursorPoint.java @@ -34,6 +34,12 @@ public class CursorPoint { return (new CursorPoint(rotatedX, rotatedY, delay)); } + public CursorPoint getCursorPointTransformedBy(double[] parabolaEquation) { + int rotatedX = (int) 5; + int rotatedY = (int) 5; + return (new CursorPoint(rotatedX, rotatedY, delay)); + } + public CursorPoint getCursorPointWithNewDelay(int delay) { return (new CursorPoint(this.x, this.y, delay)); } diff --git a/src/Randomizer.java b/src/Randomizer.java index 1b5c768..4fa7a8a 100644 --- a/src/Randomizer.java +++ b/src/Randomizer.java @@ -21,7 +21,6 @@ public class Randomizer { } return (int) result; } - public Point generatePeakForTransformationParabola(int pathDistance) { double maxTransformationScale = 0.2; int peakX = nextGaussianWithinRange(0, pathDistance); @@ -29,7 +28,8 @@ public class Randomizer { return new Point(peakX, peakY); } - public double[] generateParabolaEquation(int pathDistance, Point peakPoint) { + public double[] generateParabolaEquation(int pathDistance) { + Point peakPoint = generatePeakForTransformationParabola(pathDistance); double[][] lhsMatrix = {{0, 0, 1}, {peakPoint.x * peakPoint.x, peakPoint.x, 1}, {pathDistance * pathDistance, pathDistance, 1}}; double[][] rhsMatrix = {{0, peakPoint.y, 0}}; diff --git a/target/classes/Cursor.class b/target/classes/Cursor.class index 8f2edb554d85562747c8e79a43929ad0c2b59772..eedc53bcab8672775101396995d5c961d25522dc 100644 GIT binary patch delta 406 zcmWNM%`4<_9LHb3GV-&c(TthF&e+J3(uU;X>0mw0#Z#WP5T>jHdq6_jl_{e1`#5+k zTZB*;l!pV^C>Ixpb>KkcpHM!x@9X=1_xXHY!Qx=??vleOlVwMV;g@Gez+Ocp)x=Um zBDJJYCr!>SdxQQq;-m>5&3xsD+&L@F7HqU)(k5wfb!LZBr&2)4Cu?y9W|z`WV(7Nq z`I7D`GJE($FLr)O&|NCWt^%`9EB#s-u-qf&kjBFrk7&I5<+slJLlk2;7{^Tz4-+IY zNjg(}V_GUbOU8`6dD@Lx@yD+?=WsDk77OIDND*^Xuq;Nxlx;;<{1q!5otmeE;0|=K?|CM$s3tP zzF#_6D@ru_K{A{bmL814z)Ocb=s^z)>z@$(-oBsj^YA=8cEV2Nb8aIkFWikrs}$WC zSDM4Lag25XbZ~-B>GE86UDR(E9=Zu}iBt5*A5Y4aj9Oc3TF5gu`t$CC2rj4Ao=ziK>{mhxAgX}mn6hUe6hqk(D8^HPk8N%OT<%!pI* zz(2=9-srx!oa7y6cuzGSImdh<7N|Co3ml-pAr>j+la_s^iZ5ziRNGf#e4~kFlC038 ze1TQ^_|70dbj43@v&LP1F~+)lI4;I-sSl=&4RL}Qb5oaY$zJe@xvkfZIHA0&s1yGZ OrAVAzP5vis;pjeV17>6Z diff --git a/target/classes/CursorPath.class b/target/classes/CursorPath.class index f352f91674db1029ee87dfce72042372574213f3..d872513944ed6cbd740253083afd5d7d44698ec3 100644 GIT binary patch literal 6124 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 JCXy=r<-f6hX+8h| literal 5684 zcmb7I>3dXn6@G7KCNl{)WM3wMCag&&Nh1_WNzzbAKmtiXl7djFTr!j7!el1S+_a?D zS}Mi8b+=SSTdQ%wZo#?aDg`^(ecV82$xp==MbbZ#jK(VAL%oT$XfWXG z>ONix15GBH(PChoShKCT{X|Tna%9%yHR<=3v^3aV(zOcWwwef_Tr8|Ju^#srXq&O( zGfQ#HiRFVonqyCY#ze2f#2T2Qx6#BVY$pE_deb_BR2mhfttKi^DN0=?y6%9dyMrQeyi83i+&OGb!^Y$_C8Ud)Pz zOGoRJWTLC&x8j^B(Z+Pl8Ox@{wj4W|I5IoSN;zfV(EkKeGC#$(DzOW@gLuF|eTf=3 zF#vM)&BfRhja_3dq^DN~gLu%u8c)GUCia+k2zw2*Q*ko0VhN8iw}pY%5JJ4hqon#n zI^lwh_HDF3Yt67UrjtruiKn&k+@YtL9!omXlf^!X2cIzUlz7lw=z*&tnAJQiIUkey z)pXK8ZOX;-m?@MJy|(nyf}AkfX*^-a<90eWlT1X@!s3#NXK|UirRDvJXmO`jvsgW` zRpI)KiOg`MilQh(sMF)Y*~$tfR~txpOKs*=g4l{XG`5 z(#eFJ3F76KOnh02^&YQCmQtbUS518F4$-Weg`(du@l6qJ_oDK2I;xhCyeubmJ}>l5 ze`mI`oqWfdvbFS=;z6Thm?xceQ%5fU-aUWoqjq|cE#yfEb2xxH4vg6TM zDukb~^7IMbk(}*VRG}KE#0suSKm4p{JJ+&CJfp4{>KEK5dONc59q0(*Z7!1pm(6CNL%jQ?K>tdd z;)J*heb)a9er@7i{6@CNq&8DL(_Mcm@jLuJi1)GwePNtU{6V4>T$Iqq6CwPGTgFp& z{ilP?DFK&W?zpQ|{sU*@A{Xze(LQVzRW#l}IKrp48)%p7h8x%- z*UlS=yg^AHdimQ*n;@PaHCzvC(TF&Ou!7cb;4K_6*c3wp{=TrkH-m>WIC(-|pEmH~?SJ$M z8^6kVlk$2iEq5~4UHrEb+Y#|F+L2=<45cb*6P98WBF0(8Xg&XKnc+LlNLPx;3nMKh zjH1+SMcHiZGEf=SR0oqm1vLQS-Q&K1fgMf~pe-tKg@Dab2EouVX5Z^(FUES*gVm73dJbn?tZ7~aE6fAy`75aB z7r0^4VESvtX>(vUMAIl>wmx6?TE6d_&iy9=JKX79^cwp_!gWYPP?E zYPqR3dS5QW*9n;S;5HZHvdv`8c5x57xQ&Eszp7B%YeO%TMvZ$=8w*kEiNlTDMV)X_ zTiv)`MXh^R(^VRJ(F5ID2;D-^7jT7;dUJVE4Yz*2m4E~UxHw;q2QA>D8TeMNfW6A? z#l?G}r1H0O#oO}n~1^Ew`fCst6~o9*gx9ynL|q+0r4 zZ{nq!SUFku<5m3Bja~+?*1eg*bw09lUaecz_w923mcHMT!OaZb$>6utulpmf#ar7& z*4;DQjV^K)qM2A+t@Q9jf9(q#!fZ< z$a}@BB&qMSvcPJtIvgk5okA5H^a(C)Sc}|&#hY7XMD>hxf}@KZKN`smRv38Tr4!K@ z#1QDUaH1b7MF(mTCZ$kz7!i4<_OOtARNIOpn-Q%tXFLWG(i2|;MD>&;4QwPxA-z#$8Bu%_TuU!bd=Ph!P_ zf<8dsAn3Bs5k1SB=;oZ?dHEmyhekd^;`{f@8-N*H^u<|@-f_jTc`Wi+Ac$NUT_fKz z+RePyyK&8H2}@X}U!1J35G4LgUB_xSm5$YFn2vxo0ztK{wp*0bA{1;$7($sKp051Y zlrlAcV@tv|DzqNRhIa@^&hM#yZ;##w3Q3JX%;e;T*)n=X*&pf>YB;2yfr(TdCp?Y` zV!yX7JFhY`uI4(X!3>|GOjE%s5gzSem!mqLA(Ql$AMcb90>LnQ{SrY&K;Z#%uTbjI z)n}|{pAh!28LfKQWjx~Z{(xhQJsfyA>N6FGIEy07Ko--O!YCtYa1jY4Sw(QhB8T%I DY|T<7 diff --git a/target/classes/Randomizer.class b/target/classes/Randomizer.class index a4fbe739d0fa3b394b16c4e1d883568881569e59..cfba3b35626ace184b7f8db813b23678eb7fc30b 100644 GIT binary patch delta 444 zcmXAlyG|QH7=^#}?#?V`u^>>eKmjNq8$qbjY?Hc?P*pF>PLc&U@#qQZ><)hToHX3NBm5%bO8fqTKp-yUD_qA7;O{*v7%b#>d zEa<-_SUJgLtq{u7x~n*!HPxfenz7pOn_Swl%!F?}kk1a>vFh6)c~*$ZvprSeyRWMr zPn%|ipW^hiRU_Nec9nd`b1tPqgeEz=r4V$Y=prL(laCbWp|nFUr^LA+!3TLVQ|nDL zEuv%tCYh4&RGhQTABoGbzz(~Z5|WgVUD>{X&mQ~Olo;edNJ(lhheBGiO;X}=B8JgpM*4NFTy0FH3K`9+B2>uq@rHE=pCyHA1=R$s z95iKxoh%eGsl}kR?XbhH!aAt!G>eKvGWW35u9^ekA~lCS_CH^nGok1cOr8=Y!7$I- zzwFuQG-3KA^GExRmG-1g#MZ{YuvWTS$eRJQ-|3NymAqm9(0L=)YrdDE6JuR?Zi6hV@)L?vF@-q$4}4`@WB>pF diff --git a/target/classes/RandomizerTest.class b/target/classes/RandomizerTest.class index 3e125a35ba2b99b96ca5d1b98ca03344eab89db8..7eba454027bc3fc2a07b8340fe9ca96ca27e1c84 100644 GIT binary patch literal 1059 zcmd^8O>Yx15PeS5Y`O_)n^K@3fccUVgxCvQ2tukzBOyglwIveD$=R61W!GN3PF46< zoQgn#J3k6B-a=C({sEU6&-%@KW6j$iKfinf@EG?3lo%TOLXSGv%a> zM5ZD?cPBuTrkD@DYptjAbI z_`kQlljqVF&Zy%CZZgzG@x|{eA)-pF*XwzSsyxZa!*a|}8g}VI#Eu{g;enaiSoV~+ z>)L#q-cJwxwBR7a)6aq;lF_LSsEQ~v%8U0;QT;@R5<-gp8U(0Ote*iWU!n?V&}|9J zbn>Vb%AV*E5&NF-D^}k$*G{qiovMp$jSFnyIomaCP@iXbK@5JxpjNAW#^!vOkZ6ES dlG`dM_!;b+BB0mZD#Qcarc;T|cM9>lzW{gx4X6MB delta 698 zcmZXR-)qxQ6vw|eX_7XHUFy=carGBcZQ9Jb*7>6yOmGtlooGNI4wTFWtju=SOvgaF zM@1hTdGHU|lY)pZn>carKK8{o@n7&&L_E#rMEh{>`QF3leDAsUtVdtQcT))|FjWcj_(+or2@}hU!_ZqhMU}?dp z^Z;5KpeXY{m1&g+u(FIYCM28=-f~&~49*5$xNN}qXI*AOM3nw>Z3_u!6T|g_*4TpX zXeE9VBO5Sg#gCH1$89GCE_gHq zkJ(O_3@cK8%-TRUZwN*tjFKTzd`DezkZC^&g?5GdjKjbXOlX*-5njc9co@bC4R{qv zJi!QFAQjT~&a0qeAJs