From f3f5a87685d1a5be6a9f838efdeb946fdc7688d2 Mon Sep 17 00:00:00 2001 From: Mark Slee Date: Sat, 1 Jun 2013 22:55:53 -0500 Subject: [PATCH] Import the projection libraries and add TestProjectionPattern to illustrate usage --- MarkSlee.pde | 1 + SugarCubes.pde | 2 ++ TestPatterns.pde | 33 +++++++++++++++++++++++++++++++++ _Internals.pde | 5 +++-- code/GLucose.jar | Bin 13396 -> 15121 bytes 5 files changed, 39 insertions(+), 2 deletions(-) diff --git a/MarkSlee.pde b/MarkSlee.pde index b0bae2f..97df3a0 100644 --- a/MarkSlee.pde +++ b/MarkSlee.pde @@ -583,3 +583,4 @@ class ShiftingPlane extends SCPattern { } } } + diff --git a/SugarCubes.pde b/SugarCubes.pde index 9b1f51e..5504001 100644 --- a/SugarCubes.pde +++ b/SugarCubes.pde @@ -40,6 +40,8 @@ LXPattern[] patterns(GLucose glucose) { // new TestXPattern(glucose), // new TestYPattern(glucose), // new TestZPattern(glucose), +// new TestProjectionPattern(glucose), + }; } diff --git a/TestPatterns.pde b/TestPatterns.pde index 82aeea4..516c3e4 100644 --- a/TestPatterns.pde +++ b/TestPatterns.pde @@ -59,3 +59,36 @@ class TestZPattern extends SCPattern { } } } + +class TestProjectionPattern extends SCPattern { + + final Projection projection; + final SawLFO angle = new SawLFO(0, TWO_PI, 9000); + final SinLFO yPos = new SinLFO(-20, 40, 5000); + + TestProjectionPattern(GLucose glucose) { + super(glucose); + projection = new Projection(model); + addModulator(angle).trigger(); + addModulator(yPos).trigger(); + } + + public void run(int deltaMs) { + // Note: logically, you typically apply the transformations in reverse order + projection.reset(model) + .translate(-model.xMax/2., -model.yMax/2. + yPos.getValuef(), -model.zMax/2.) + .rotate(angle.getValuef(), 1, 0, 0) + .scale(1, 1.5, 1); + + for (Coord c : projection) { + float d = sqrt(c.x*c.x + c.y*c.y + c.z*c.z); // distance from origin + // d = abs(d-60) + max(0, abs(c.z) - 20); // life saver / ring thing + d = max(0, abs(c.y) - 10 + .3*abs(c.z) + .08*abs(c.x)); // plane / spear thing + colors[c.index] = color( + (lx.getBaseHuef() + .6*abs(c.x) + abs(c.z)) % 360, + 100, + constrain(140 - 10*d, 0, 100) + ); + } + } +} diff --git a/_Internals.pde b/_Internals.pde index a458052..7fe3209 100644 --- a/_Internals.pde +++ b/_Internals.pde @@ -7,14 +7,15 @@ import glucose.*; import glucose.control.*; import glucose.effect.*; +import glucose.model.*; import glucose.pattern.*; +import glucose.transform.*; import glucose.transition.*; -import glucose.model.*; import heronarts.lx.*; import heronarts.lx.control.*; import heronarts.lx.effect.*; -import heronarts.lx.pattern.*; import heronarts.lx.modulator.*; +import heronarts.lx.pattern.*; import heronarts.lx.transition.*; import ddf.minim.*; import ddf.minim.analysis.*; diff --git a/code/GLucose.jar b/code/GLucose.jar index 6b9970869157de0ebfe012bdf458387745751680..ecd95efeb9945f9c40f5b0ed98dcfbc5ad7ba43e 100644 GIT binary patch delta 2398 zcmZuz3pkY78=o=8Wial!OolNtxy4{|ty~84G$_`ktS;_h8pbe0$snQsit=ft8pNnv zQvPleU1(gBp=D{?6+Kd;)-4j-%6>++%l19b_x#@PocH~`=e*}U@9!H7I~OP8?gA4< zKp+wjh-yRYIT>A;3J8|ju(hvlEg}4gg-JKG0t!$AA=*Lpg%|fC$c$AYVKR zpdCt!4Wh?{5SY;ckuitq(Gi5Nasi!CBVqg!bjw3~F>2>DWDV^%uJ)U4jp`+X} z`EI$kWwRjVq;<9-bMs|?UW&tIg-dN}KVT}ZOI~ETm7P}UBkLD5!O9f;+}ZK;LR7-s zlM{&rqC78mfeB~Mt*J$|mvtIm<0$^Otv`vI9QR=9fWhsd3q|is-baK*PEISN-?M96 zg--fa`3LK|_ewia^-ek+?D4;kwY|S_ViIe&gY-683~wq5fsnx4qW#?px<}KgAwkS= zdgOW;*PT>HKJJp7NcWWXuT%w@!HcPe9dHLNEjC+f%{3WkYe_y6!(TQ2vSpvh_cgIlx^1L+G^>E+L(fcudR?YWqm&3(d zAV1&D)SloaEPS9Oj)>s>kIapuZ#2KDxxi_+Kks)-|T*AqYPf~}{j^ptm}7bfP_y!I$;-M;TYwd!JpQ{rmPJ)Vxp8F%$qu8-bR ztn{_q<4KKrtQadZ!%6p<9S;6{^XMWsl)Z=vZ&!Uq1FtP)q4t3q`ORHD)cJ`)Z_n2m z$gs2)1CepoUOqX?Rr~|E20FBZOJIdWZ-2ICE`;aLF_nRGpc91`otcbN{;!5u}EhNb;>Po-q@apCp`BB>*xju z!ZJM!B44mHIw@jFJ=c3*48KmX=<;EtRlhtQCHL`y%u)4e8n^ORN6Y^gswe^M3$fia zx!T871Ks8kPa1=j{d`0@xX$C9l6UrU(9L?pL!6n@kbuXEKffUrshyAaRpLfn#IbSY z&|Vv5smVuiY9p@lu zEM+Kv&Kbr!rJuVroXu0W$}%f9xFkWta0&HvOdTPXhH-_DjIPwrv>wt>Kd@>CEajMx zn{cdSD1l2<=^4Ic0j5;&kYC)n^E!Dj^A-B9SbPaGn9El&m(MycF%;my2y{TA_T=G; zos(IcA<`}HMD4R}IzB#tdlattWxlj2xt$aCQKxMmqdL1QNvqA1$?qI5b1Vr)IO*bv zQ}XDk=4MO79iuj+SL`}<6>5mKJpS`2)247Bxe*~T8<6IG1oo<%l1>18&1zCFYxPP^tmt0$^5WXaga zyI!D&-c|2nYGIl7Y{dwCLV8+bu=AF!iFsE`Bj+t>z5|=I_H!ep%xP1*_h-`Bc1>~` z(MqJW3Dq<~9yaqAiF;PYsXbAvXXfkXMjiS)nvpAAJT=){Ki%wS+z~%=r}XBE)K{&i z)>g-IT?&rrdWfy{b)e74a!soM1i@DL?Mg5fB8xy2$_mXG1@sfNg!VkaT8PHRR-fj! z%l}8R0Io4w>61=DMU-Iwsv=NfjDo%fI*hf2!EcOF)+mwB`W71w3fo4&dZToa#U`b} zAdqWf5Qy>@vdBqs1nf+3T5HXedV^v#3eqHja)$lN=K~yg1;+#BCelL3t~VmD+&C$LI-g7Y`4{2~iT-xm->TDRsuJDrQE7fFR^Jc;HETOF r1o%Ya`hm@OUsVSWbR4`Gs10%uIVo;N0A?E=sR~y6N6?{U+uH0u_pz#; delta 653 zcmbPOb|r&1z?+$ci-CcIfkAZN-if>#%pyR_q7O`+RA3eY^4=(esL4W%+F;s&Q437x zGHQb9nNacXjCx?c29p{{_vS#REzDpB2b(N}p~30N2o@>fTFuM{RO2+=YHgh@E6{qb z$@N^Ko1ORqSiuUW3cuh2GaBUPLG&sronZotd{C)@FcftyAg0CW1+g&$T|arFi3Lc> z&trLA8xGBBj)lqTmFr|Oqx>IZl;GKnyQ0*-?LJT28QKqz<^{xfF+G0 zOp_Cs#3xso^MKvdX)eulnsu@`o9g7#P@!8uq1POfzng2zgNzcN_${geXw)xYxJV#O zVp!5>KH1Si9c)Urg*4Ms-pPi1Qv7HxnY__LnlWPXSqlvXkYVRqc5r0@4O<8_OcKQ~ zXSvD!a?+CxEFtc)x0GgjqBz+=Nm>WZM5ov#FF!glF)&PIVPKF)F=MmJVVEVpa(J&09FsYqW}N^ -- 2.34.1