# Project 2 – Particle System Tracking

For this project, I wanted to work with particle systems and attractors within it.

First, I used a few objects from the computer vision package to track a face from the incoming camera and get points from it with edge detection. I did this with cv.jit.faces to get the bounding box of a face to track, then used cv.jit.canny to extract binary edges, then cv.jit.features2track to collect the easiest points in the window to track. This works best with binary edges because of the contrast between black and white pixels.

I then separated the points into two lists: x-coordinates and y-coordinates, normalized them, and sent them to the particle system subpatcher. There are three modes the user can choose from:

0: the system as a whole attracts to several different points. For example, if there are 50 attractor points, 1/5 of the particles will attract to each point.

1: all particles jump between attractors at banged intervals.

2: particles follow the center of mass of the tracked face.

Once the list of x and y coordinates are sent, I filled a 250-cell (number of particles) matrix with the coordinates (repeatedly, so that an even number of cells has each coordinate). These were then used as another input into the jit.gen objects which calculated the force. A jit.gen object basically transforms every cell in the incoming matrices simultaneously. So a cell in the particle system (inlet 1) could take the corresponding x,y coordinate of it’s attractor in the second matrix (inlet 2).

I used the Amazing Max Stuff Particle System method of calculating new positions through f=m*a. I definitely spent a lot of time trying to understand how jit.gen works, since it is much more efficient at manipulating matrices. I had a lot of trouble figuring out how to use the x,y coordinate matrix of point positions in jit.gen. After understanding that the jit.gen object basically works on every cell of each input matrix, it became much simpler to just gibe the position matrix as another input. Before figuring that out, I tried a lot of different things using swiz and vec that involved pulling the matrices apart in the jit.gen object and trying to put them back together afterwards. This, of course, was very tedious and didn’t work well. I had to find a way to use jit.gen because before that, the patch used way too much processing power and the particles were not moving smoothly. I also attempted some javascript, but found it to be difficult to integrate with max objects.

You can also change a lot of parameters such as speed, level of attraction, rate of position change, etc. throughout the patch.

I originally wanted to have the particles attract to facial points so that you could actually recognize a face, but I think this would take outside hardware or more sophisticated algorithms for facial point detection. Even so, I definitely enjoyed the finished product.

Below I’ve uploaded three videos, one for each mode. When you first open the patch, the video and facial detection automatically start. To start the particle system, you toggle it on manually. For all modes, you can change rate at which the particles attract/retract in the particle system subpatcher. It is set automatically on a metronome.

Mode 0:

In this mode, you can see the particle system as it attracts towards the facial points. Moving your face also moves the system as a whole.

Mode 1:

In this mode, the system jumps between facial points on a metronome.

Mode 2:

In this mode, the system follows the center of mass of the facial points. You can see how they follow my face as I move.

Here’s the code for the patch:

``` ----------begin_max5_patcher---------- 11451.3oc68ktjiiqbt+dlmB3JlaD1yoFcvNHOw0N5q+ieFbLiiJTIwtZMiJ o5Jop2b32cCfDjhThK.bSKM6yYppH0BQ9gDIRf7KS7e+y+zCOu8qI6e.8OP+ N5m9o+6e9m9I6sL23mbW+SO757utX878121CK195qIaN7vivqcH4qGf6ud0h +Bc3Sq1iNr8kWVmn+EZ+g46NnuYB5M8erZg9t6+19CIul9wWuZSxhsuuw9cP c27s4GV7oUad4ocIKN.sMINdF9QDCa9IQRrWDMCi9ubelMu+5pMqSNXajD2M Wsz1z197e9aQOb7Mt88CouSr6t6O7s0I12b566ia2bX+puauIgOCat6+yO+y le7nmP0ljunezmgTKSVO+aHAF+P0xKQvlQEOhnXlQTEfbGWk.SOWfokKvjJE X3Mc3auk.MgGdd9lWd.8e0BAuJcDcS44jcnseD8w4KR1iVlbPKwIKqAHnR4L goKOxh.DaOOQEPOux6d9dTR2krO4.54ugrCKzhTc80Dks6kF65k41qvAHizn toeSak9ckcya285705uazhsa2sb0l4Gzc1y2rDsOQ+CscgSrFfrnRxtPsJvh EFnRYzGLZE1ewXAAbxK.v8Zx98yeI4LfqNKBBsBgRXr5gOZQfJCwhPDqy1Dd H6oU.Fj8o8wuuFsKotALJpwjfJhk1cGpowHR4.AM.f3QKXLhRMU0UoFe8I0+ 4pCyVt50Wm+F5Cq174Ds2BDTcCCnLv3nd5f33XkTCB3Flbrrg8JUmwBcS+oW meX2pu16nxqIG1ssAODnBvinnXiZgfDt9fL9JzEgEuuam99nW2tLoNqgQQfz a66UwgOio7ZZFS5+.8wsqWu8KnE5W9nKRnWMexpgANEz8E7YhzgCwpvACw0D XP9Gn+78WeC8bxgujjrA811U5mkGn.EbCfQaA.Huh..7+.M+vgcyWbv3qzqu u9vp2z9JUDG70GIG3DEmCaByEIA+BfMUXY7MzhOsc69jmZv9.Su3PNQJERiz ZEZkH7oIDUrJJt+lHWY5fO8WGciJ0yW.IbPgFAWsNQOa39Ua2jqs8SOL+s2x c6eJ2Gwfe+4V6Wj5wrasZCbKV1s1k74UoedQ1cmuSiflEi89NPd9ZliwluFM Xuay6qrME3l5dxeN8KLynLnigsqeQxs5c7nbiC0c5urd6h+JYYN8GMl8VxlU adyrloMGlev03xd4kIebtdLvSmpUU1qaLZV4Gdy7WAg6+2tUyWmJdO7xtUK2 twzHJ.0lam93LKHGLzlWXruiMyeqjOrV6QCKU7h60B466ed9NSOwyfBDM8EO rc65huT1macxGO3d42VsYyIn3gsuU8Kta0KeplO6ya0u3q08caek8O89F3Ue ROP8vS6m+4hn8g4qW6F4V7q+qy2rR6rTxgUPW.Em8hIalqEzOsewN8LfEjW3 U9bIuxRsR7hjurZ4gOYeP4UFzu8UukpD8PVu7xUujr+Pw6cX9K6KdmyFPqu0 6O6Fj9jdopusVKEEeCE1Bs7iHyaiqv8OwVGXyHa3VEVzHQoSxIR2HLV9wVUY PqpMFpZK5UfDl6lNk0o2e0lkIVQkmdOq8dmkhgDWHQvlARxsAgsBWHCJtv5Q bo31GTbBxegz.d41JQraKmLJSTZcvEsB0HlnZ.izHfU1NKLRPDtADRqPY1nE RTmgHJ4NEhn5IB6GHhDemBQDdbeAQpaTHhznoaqmh8ADItWgHhruzhXWwPDD wP+TWzS7X+EO8mg6AD4DXemdgAGz92ANbd5L9cFqLK56B.WfpSO.W33e.fKW .U5AzRcaiVcwbky4xtasBeMaspvdSUDf1mrFgQDD0OfhQrPDr1k5QJdUHUM9 XxCGor6n+im+69EAshkWPDG66x5vU.P7d2CyPV2GYrWOL.ace4vTAdPWP7nC Lt4C6CjYX2p.ZIHywMczru+UraSVg175kCY6299tEopwYCMPEAfkI6OXHrga +y98bK127N8pSK31Q52dysCi0tSdma2sD1+bxktwc1660UKcAsIc+wM9xqcq vPsKFrSdvkkKQ3gQhnDekHBoIYJl.7TyPADSzUXyRu5JUjvwAJRT6upQjFH8 NRb+IRTJ3VqKJFohjXj6kBPjTdKRVYAFZcA5jT82PIBD+rzNozgRidmjp+5j JJRocRhwtSRzicRGsvIJXuSLTSNZ13l9xNPNiYhBl1FtVuuFlICoCFXuM7HF 11g2isLdeOfsCV+MF+noWQd6vClFE16o5oDO8HSxrQ7wMwOb4nZy0JSTurP0 7X7X5rHFiQiNJYtIKuTRFwKIS4i0KhT+O9QIyMCy0celHr9LNHYvbKvki57k AzmwBqOyIYv7NWJIyO6dLesc.xT9q7Wjb1HSIS0CFB0r7If7POY3.3pme+.r b+7rCKHRt7x5sOOesiBKYTfpNFubjVL+7w1aOkhCjl4woVqxt2LwmtG7MSoY dzPkgC7dMQOn0QsYbrcDCUdDJ3s.JX2FPA1SVb1AnfEecAEUxs0WRN7jMkop isyLJLymThyH8srgzAgeNpPTrNysUafAdLKsPtGozJvcXCYNLTHVALIlQm3z 5DmVm3zZMgjoXtMbZBPq0dVpspg1twlb3lAiOZr9gRVoudGZ8p8G1aRBFvgK z1cHSfHQZKPnU5O5mWs784q0e7j84eBExIBV8gChCYPjyUTWvFUsHbPh3fiF zXG5Kla+2frmtCg9ZfiIHaziIHj2bcGX3widHAGTfQx6IbI5lIHx9vIAm9BU D0QVIvk8JoDb4g4kZrlOPmiRUXQWQN1kF4niCUhJjP3MXYmJoGIKSqXbEuFK 6zVvRlGGQRWoQp0a29Wu+VSfEyEuC6nWXLbq.KV7UNXUGG9T3Y5kPJn7J8bh 1.Cihr5bbQ9BQQqfQ0sII+7UeS.wllAYjcWz2DW6CNsE1GOgCmu17lgiJbpf waOCaaIbkqPGL75W1Ah5UA0TJlvgj5lA6LFTTrpGPEU.nzdkCooI4r6+5cFJ 6k1lCbnRkuVopRaibeqsYrlkrwSzDl5jE2ZSYznqbSYds7HtvUV1DckKopal rws17BPuPQULsncjP7ofxkm4SASzF8Kw8sOETBte7ofxtG7oHEND7NZkmRm7 oHOfBghsC9TTWh8dq5Sga2Kbq1tCZajnIeJPjXR+3SAQbSu2EMuKORQNWY6v l7PH2x.0LulfLpm1iGxM7FhALIvDnrEECPV0aJFwvlfGQQsW4ZHSytSnTPQX oRpETE8BN4iWFMCpfpAUS2flobPUzNn.0CNk9A.gCnfkRWI0RJNYkFkSAAOn gfOTQnQ5H3IkDpgVB9QMgFnmPiTTnQZJz.UEZltBMRYAOnsfOTWHD5KTCEFZ jFC0Skg5oyP8TZnVZMTE0FJmdCUaToYZNTNUGN07voFjO60aHZXU5MIElcRT ylHTaXwNK57Ob9Grbqv0.Z9Ekr519gJhVVgo8JN0WWQ7yIaRw4CMLKwMangT Il4J9FhfO7obEn7S+vUs6EM3MK3wgiOI4qylMt9fyhHW88l3p6MGAD+LmOJB 3lx5792VsdsGCCfh2aLr+Orxb+HHXiUOrQa+ffSbga.Q2y1CxpWPJrRTfES9 ZBoFzi1Zkt1XafLBXouViA0PNsmrESFLaw4p63syhL4xae3yIe8scneYEA8q HhGcNjHfeCJ9wckJOamC2JAav5eNuWIum0wyvWd3+u6EnmVU0sKLDJlOMi4z pwbY7fg4v1Ad4g8S2Dw5gVhzVAHfHg2I0Yo77GZs6oX+OyX4tHN98AmGlpSB UEhhXHNRfjHEJBEqcDDQH5k7hHLDgq8cS2wfHJsQGcmhV+GQ0eFJhxPTt1ac DUhnJDMROlPOGAhQPL8WICw3Hl.wjHlBwhPrXDGi3D8bJZ+Zz8xHt.wkZiXH dDhGiDXjfnm6FIXHgtAIPBodE+ZWHQhXjDqsygjTjjoW3udQ+HoDIUHYDRFi TXjhfTTjhgTbjRfTZwQgTQZcKTDFEQPQTTDCEwQQBTjDEok1HTTLJFihInXJ Jlgh4nXg14KTrBEqACCZngCrFOvZ.AyLkya8+owDrFTvZTAqgEr98YgM86y. bDVstOyZdDAG1DXl0XivcJezEqMB5OxV3+9ZzK61VXyRqbtU3zSxsGSBOmas NjmLztfesi9u+8Ud.7RWprAkkJd2wcb83Nqiq+OW0f6ZY91FGDTLJTMLcLrS 3fqlcpmn.qNttFATb6TOqXhcdORY4XcI8Kmkq0xyJTA0jt0hyx37JRg+fTlF mlNtz2bVSmdk2zqA0IiaSWFPSOUNG0VnfFPKjwtDsPRHc+Tn6ebag3SqZFMY VXzwvPgvwtAxXAzBuHMvPZepKPCjpBwTi7BzBCYbbyFZx8h4izbSkajSCydq BXW8kej5hd2Ikgjhx0vRfhxheQMzh1QdhxidgWDBSc6R1DewJhTzOX00Nau7 JaHk.Mk5b1PdoSFR90GilDz9gPSb9Dil5cFMovxIFMMwnoIFMMwnoIFMMwno IFMMwnoIFMMwnoIFMMwnoIFMMwnoIFMMwnoaAFMQBkRSDJwcDnLQooIJMMQo oIJMMQooIJMMQooIJMMQooIJMMQooIJMMQooIJMMvzz48MuMewegXdQfhXaj KTj1WR050B.VtMI9w5uZ7YyCIpWHyCoW4aRE6pd6Jp9Cx4OtuGJmr3A7rvTE RifT2ABGONB1Q4X64yDKhe7xxOR3nWVIR3oDQwP0UTxytZLOoE89LSMZrOa3 89bEl0DRSTVr0nyXO6wEQGubLwZekHONRKU77iFbAcotQCW19HB1y9nTIhvt Piu4ReGfSarSBHIICCUVPX3t8pwToyaAxiC+1TARBmCwwYWMl5bFli5uRWsB jjjWmKVjWkaXZ69dzPyarsyfCGcWbPn7rqFUkKekmlO62cxivphAFCrWLppV XOEGQycOPOBKlmq+wd0PoZ4YSuQOsnJXbf1uayrkbXzNb4npa46PEtuRDECG A45Ebkc4XpdwhCYzOYfTTX9Nos4DjodfUPEP5l.7rI2Uiohh2BDswCA8TABl XfKoYWMp5I7PVjwPYPoDGbpnUvGxVAID+w3drfKF3rrfiytZfZ6krloJZ6jA DAod6yQiN.5b4iCqUMMYyLWMpGz79JPzFWCdp.4N3qijWDCXTZHK0cvzSNCr p1AhZ0RTQyhX5+IMKiiXmxkwgYfsWNp5JdJTpfDJvOhzsjhgGYOi7UcQ345e XJvuH2RvsWdMJOkrxuZEn7WMlJcDe8yiRGvwyjnPV3Oudyj7bybRAbcHm4j3 8FKEMjHnu9dvGzVANj0XOTqZvWnnZM5iQ4vFikJByQVD+9SWH.w3bQtwvS4D sZYIAo4gWee8gU4MRUlXm80CAy6ee86I4iLTZhoVNnLewB8Cew10PZ996H7L FQI4JsHOSJ3wXp4uhM2hn6JJtV+ASH9O1kjroSRA1zrElo2Xl+hHijT03I.+ mIqWu8K9KA4Yu1uaS9XQLFGUP6rDoLhJH1tJUDIhX9C8mSvE8lf59NR+BZJb 4NIpxvjWVHxaH73kD9xSCKNLhz9Snqw1LxEuVnYUSnuOF16WSNraKRfSIRZo D0FCGy4QVOsOmtvkRRxBAtklpXTdXaOWlqLgTGWImwhlwIRoP1EwWcIkds95 gsapSFgCsK2QADO8mkKcjyktqw910amuDHtbkhMQvfPIBogZT88pkH2wWwpz XzGlu3vpOmjk1WUUjUxPf33vGViuVg.huP.mCaQtFyZIHHuVw.puXfxEfi1h .hqODXO5aOYSz+80Y3KJxFzvHnvKI3AaBfDWwH.74xdeJbesYgK07VDPPs1H bQwW.gCxS3+4+4e4iDzeG8Kej9uf9Uj18v+Ezuo8wC8g8Klud9NSQ0oVc5r9 VlZFWOPfxeLMkhCyDWVdt0ds6dUy1QQQLpN2VbDRRZ1c23X8hYzJ.hvU.vpx kcp+xt6XI83wQZfnPwb6rP88vt7glG.vfJIFKb6Zwpqqt9dZnQlkgNNzHRdg fGCSce6Kq1rb6WpaL.CNLP4oozdZQZweG7H0q9WehZ8P9RvUt1kao5m0nZid R9jOuTLHF5VY4N8mCxDvwo.pI6xau0gSN2c66U1j4bWjpkqsIKihuD91Tisu MlRxVsS+GIbhNTsXBdzMqWFc6doRxUw9wjHT1CMfwSOu88MK8ARf5NDnRTMj vJARpvQWl+PxIDwun8hhU7vzsVphJcXYU4vz8WqjpaXIU1vxqpg0WQCKqZFl sYa4OWVgpTTrHWQLjGkmy+kV.Can3E1TgKr1hVnGErvJJVgMWnBqoHEVaAJr 1hSXMElv5KJg0VPBanXD1TgHz2hPXEEfvZK9fUW3AqtnCVcAGLr8j8rhLXYa CaSEWvyKrfglLMmWV6JVR6N7ojbEvt8nOtcGRqnq0gQG1oWWf1hGxZHb9tuk +KopRaW461K8XgYqhxZWWqCw3xSWmdLsjNqfpU5pDSqJOw9lYRUHprfE0PR3 H1XW7kwVh7xwcLesnWG4q0XCetJWF9pJa25gbbqsXVA+zqTmSIyQLgycU26g hD4fTyuGmjPcex5BEpsZPJBrSsPALoU0uahj1qUJ9zJEyngV+aHrmXkJ87xS zVrRD2qZUG2Pr9BlNsPzUGb.0eHAt0otLgGW7QUaomqeNDBF0Ah6zMgDTgkY 2DnB7PUoZ+3Qt319TtPurwlz.Y.UBnL0w4HaoFXMl4YsDr5c.67RS3QDSDMy rJRswIp9GZaSU5vNqYEPqSFPFO.U013Vn.RU8sKGiit2hOOyn9YGrNa4t4eo oxQ.Epyobaw3Ll05YELYGvP4g63Cc9gZDX+yjxVOzkQ5UybW7haAfKc1ee1U xxkni8pvc.nIyJEcaU3C6xvIiMv3Lryw3tBL7AEXniUAQw+7YibMjOaieA2f Q7LYYr9Z1PoBHR.SLRgfUJ.C94uhfiRS5pzqtzXNo4LLgvfp1B05CJifytZT yXFuyrvAMiwTWCYHJMjATCV5QH4AlDxCTyvWzHqAOP4uSr2siAMGn3dWFrp1 ZK9B2zJCLG5LXi6cBXwiGz9ufFVcoS9oZ7b39M2PphoITyICPVMFuznHVG8C gHk6100PHeBUbcw7t8HCiDNTG4RHQQyjXLNNxTza.+1UsfysWB9DmKnCMKat CdJYvLJhR6LaROIBC8jV9uv7U3IwpiZzgwiXV70kJMrA25Vx9DukdXOeTpvY Qc2IRb661aeJBEofrBRZ+kLb5SRnxqS9C1.2ocYDhRktUxAmueWYTm1m7Ai. zwkIZcmc7UXm89jMKAtRiVsbchc.eCV6Ab.T50dQFduOCec06a1g6WVOag1c pcyQexjpxTzGda69UFmxL4RAhWmY.scOiMPl5nwuVL0NizYifl8z8k0OYDLC 6LasIwCae4k00Z.fRyD4HRVRjzBFTSx1V6.nPNIrDLou0U9x1cqWlom7w8ym qWVxGL1LM4InY+XQe.FSkoCYS3PyAo0G9n1VyACO7zeDs519jmrYvtUKCaxQ ey23qIad+446pMIdx2GPnrrNAdTKRkGFqybWN+gATO6csMgEqylD1r6bN4mH Nl2JMkL1kBE7KfO1ugzZ+GVsXcxS6+19CIuZIsdy9dPY.MLwrVHnBuEz6PJn KADCRCHBKx96XhZhC5SbPehC5sis.KSVO+aFzpg.WJcGv81UNnhK6vUyK9UT W.caOUNer7xPStCQsgkyEmrXjF.QHakvMigUcJiHuYwvBto1.Lovkmhe9iSr 1ynwqABfVWpi7wcaeExaj8OhVrKYtYqerbCwlAIa+Hxr80yWbPegMRo1amLe wmxbaosjSifU4WNITGB3p1v3OB9RlPI0gufG9KSzSutbORubfOmncrX0guYf 1FQPZSIoBA1LFZWSHmiIz+UGBlAXupaQqda8pFYRJAxoY2tSQbzRnUnh3ZEU biJMKv7v1uLWO7EYJIZI1grEx.9f0pjQL3Lnk0csJ90J98uoWwsCC+iM+e0W j75pCn1BYJrLW1z2MHidCoxAbmAkaRj1ifLHgf6J.FGeIwOuRnImeIzitjzR GS3W64yTHvAQD2U3.e6ldWYqexyEPQfyXvyqcO9yP836wUPAE3rH+wQHqSDx 1ii3aVbrtbPQaAFKaJcVcz3vkXIj1meShq3zKoNT52zvDwSMMGW1IsVSifGv 798Rok4I5QE4NnPa2NFcSBdeb8Vca8Aub+zcVz0gj2TDcoxcyBf4tWmakL4H oEZV4zNKO8P+RS5iBHFatUG4BESar4IjWyoTmO4LLgQDomQFcSuiqtGxYXuv LrK+H5Nlwtyyy5SKTqUmjXPxPAwyS5QVVWUZ1ciljq6NspuVEREK5IfRdaBT 1xCooFoRaBnnQ4LxKZuQ95RC3qrDZsFb66qQqS13oksn3iA3qcXVL81sXG7l 1pkwQhFsYAqVJcZ.RGPKxnjbvmP.jhvSkDAoJxfbxGuLRgTAwPplbHMSPjpH IRAhhbBYQXtxDKAJE9vJdkxSBSU4DFwCRi3CwQZj7HdRfjZHQheDIoAxjzHg RZjTIMPrjlIWRiDLwCRl3CQSBgrI0P3jFIcR8DOodxmTOATpkDJUQDkxIiR0 lWZlTJkSLkSMObpg4yd8lxg9JyGoHag9PxjUWhFp0i7yLGSd37OY4gfnFXql bquhBOPgY1JN6VWAyyls6bmpbLF.l5yM8AhfrDdkQQeX4pWMm2292gHfxSMU TpaDA0iHquCg5cGh+diMfcFmEQkl.RVMQUIHbjWONRZONdxxJurpxZGYVehh rSM1ePmCIIioXp0UsWxfo8Nd5rMf55UWnsMfdY212eyGL1soSQjiIhTyPLsF S1X1c.H6sgAWw6.pUS8fcAJld+aY38uuxyIvbvqoRhjkgbcT8DWO9x5H9lK4 MJR8vADtOmmImPD1jMub3SVNxATLY8p893OGKFpLMtMY0s8pcwgNhJt0dzcU Xa05q3qyeKfouHVXSI5rtKQcOXZ87PGcRVhS7QyTYwVJPYyxq2rAhsjAyt6H Yy8z.lTI1QgJ.MIdlggLDZUANIrQ1Rw4O6ZihR+q.e0LAGbBR8KqHn+O5eRK 8HipduxjPknCHcaDt61Nj2552mVhHqNNphlJp90FZlyC5.cHQtq08ovW31YM oGga10FbSqAtKtatmUBFOuWnr5oTI8EmUWkjmVWkR2xwxJvSmTakBRMosMPd .MP4En8YUr7tEZmN6BzFogzMiK+ceZYXDJsDQTnX5jcwYetyKTZWgBs0IXuE ZVD3qCTGIrWUsXiGWwFGl93kXLcUZXUoOhuHsQySk5cajcAZiUozVQesOJ3N UZtjlSA2d0nKajf0iIicaTJBxDiW8.L2QBiPNyTURvRiAFUwaM5xIIXSojF0 zbUhNkqrMwxtZrkt.jMdiixy8h4YqPSUaxSopQqB5a8Uex5h.7IUgxhx0PSF mu5CYbbr8pG3hSjXhKNCHWbL02mimyDDrqJRHilHiyDYblHiysOYbhf50Adh LNcmLNesOHiCTdSYtSlKwDYbZKYbfCa8HwDYbBlLNes0jwA.cXidmHiy.RFG J8Xj4lXjSaYjCYhQNCIibDSLx4RvHG3XalDymXjyDibtJYjCchQNskQNzIF4 LwHm6QF4vSOYhlXjyDiblXjyDib9QmQNvw9COGibLWbmyHGNvAGUAF4nlXjy DibtQXjyDuZFSd0HImwqlraMwqlId0buvqF+pGPtpCmqd.09Znj8PH9Vsd.s qv4CakK.BGMiEq+G2Xx.3EYqqNW7q3hy0oqHrzMtPu1uTvfDU8RB8BLF5i3j JV7WIqydnqgkqSl2DQ2bmIZJxLSARFy5zvRJ8JVOq15X+hEIqS1Ymm.829WM GnIKR9iMYmyD5ak+s7GaxNJ+zuR565O1T3q4W+WQ3JK887FF7KsqpRRfdGnS R1lyqhK5QGPC0cOW36Swum1tdY.1AjPY51cls0tZaK8dnT7YOvRS1f9vgU5F TFbF.TJf3fRnsmmqhZJ4brtBkmArSDeEQHfdO3KkdAEL3n+hcJePSVtxbBi9 zyuXO3gfOMdV7i49AYhsrSrkchsrWorksgnB9qlwv9DAKW7rinGO4x6TrYiu wC8WS7awbr1YsYt+QzNzKnm8IDqLaprwhw8E2V3xaXps7O8adEXZBre5Ln.d Qi5rpISbqS6hlXBvB3DB2GvkCDFBNnL7s7IxpAb422fqtUgnA.r.agXpNq01 gjS3JvboFUOdTVVbAyn+FRu3txVZRkXKX.URT4yyfNYGkeCaG0nR5igToHGp 0CZjDwsrFYdUvGQ+466Of9J5anue5GnpSkvJUNgcd.NkZiJ8fILHTN5VFjSG T+3eroGQX2wYctShsNgvpa3w9V+6U9XyTBG5uvIPDm14Q+24NQsZiW1TcmUa 4B6PyfJt0YLzc.nR8WWMtuPU58Mp927VOkB0Lndf65rKDjNZbeLN.JCvJmiH WHRdETKmWeKebYkWHTsgcAHCDSDJzRG6VH+ZmxtgPJs3qogUAwlNw0zvpP3S 4kfAxj.G1G.6rtliWMiQyBxJOBJQMTZ6iWM9lId09cH0xOFB5HuqzRUc3W9i 4AU6xCMe.0lCmcTJoCj7geMeRO5kZGGNCGSOaj6fJG4GRUNCuWmuvtutMp5k h0c9rQlEe6d.i5l3HkzXdLwAgQxFxpz3UZF0Rb0Bh1nsRhuaX6z5YZ8yOg9T x50aonOLeygUyWuZ9d8xE9vxcy+xS1Th0UUB9f82OY3Bh40sQzU+Gl+GdlB8 A8P0MKQyWtz8mtgu1uqj2N7ozqwm9Ms+0sa0u79OMeot2ybmOtU+K7r.5bif HDGK8neMth90n6PVr89aKMjqvefTBg9fP5.qxUCKPNwZMjD79k.mkeRnrtIw zIRqMQZsIRqcOQZMeXKPpCQdcJdAtramlLh08JFD+VNlqe8wu832sEdIis6s uuuRnL3.uBLAGHP.A28XaSH2CA21GMTL8H40DcWC8VthVYWJLZ4AiwNFyqhZ ECp217bk8ttDOP08c7.+UevTfpeDYbOEPP4TLVIB9LkEGY8DnNwwhB3pbhkE 8HKKROrzkSrrnOYYYp1JG10ldfmkCh2niFQJTAVilF6f5KCL5nic6Szq0thK azkkW4QWVbMFc4cnWSNraaSa2oPMivcUAgbYre4kYSupEBD4saTU1rc09DDK 6TLvTjxKV9mKcYZPA2GpEOlL3n0gSgeGts61BeP.YNNGpGlDEalzUlipGLYU .lzosdef25cJy0U41ZGnR1EKm168o8deZu2+gZu2yQfiCa+x7cK2iVne+dUl uUtMmyU8U5iDb9VdChe07F8Yyggkf61d8d.0n2xYzjWYxHblv5Vbc22nM9c9 Ns8a9CpDfJp8Anxm19RiQQli7IzdZi13r6abEBPDLoi2Ex.ghjCkIjtGkH9T Ziklps79yPK4GEc2c1R.qwqRrzCjNBBmdp9Ki1c8W7OBPcN2UwyHLuXKBD2C PmtBRyFDRyhmB8QdqEwrdJxGrnaXGY+aZERgOwgSBDow8qdn9FcuyuADcV.3 pizuwcGWkSwM9HtlVp35t+r260iq+t+lNYw80gKGMZhjSofZuwGG5c9D8+Sd opp34F+2G0Rh6bGUMNBfoAfrb6hW47tOiEYxHPJn51QfdPc8NeeAfStW+QVG GR4rtqtxl1EV2bVDVesKrrocgEpoTvoKSuUSoT28vpWalBENttoyHFVen5Gr UNUfdy.XXCAiYY.bOTjdo249Er+Kq9Nxq7xQXqRuh9ZFLJ6G.f8qdkyNTKKn 6OjUbmWP4skFUaZ6Ypi.9n6BSk0aTsffuoK0rAjunT2bTDaoy.SRqhrciyE2 1zzmGDOyI9b7OJgx3ImZswRThrqF6iI5PpJd7KQIPiGR0kyJNicZHvog1BGc LLn5HWzknEhCUObzqvkAU7Pw9XEfiirqgENDXIwvtwbANDXYgjIRlsO2iC3V YLbzjHyYgyd0XKagjESo.wUbsS8RjnPAU6TYrqpZSZPk80XuNL6gSYR2QVT9 qtVJqorPlyjQulpHqg2zIWMpZg3G.6hTggIgNG1n2BwgNbcr8CfFG5bkidZm FE55UF8VnJzpE9n2KGhWCzqqZZcPM8qpIqohVTi1avOzX5LpI5FZOOM6Rbzi oaLe1cFaUKVnBYiNayjVBElWF4WVYjz8SZgSkwzvonWIgSHctdc7VWwU+7.J hs4STXJiUCUb8JgquaJessKw0yilcO60G+ZFaVS77s37H9V13zbnbyGDJUcZ Mb1D0mYekEOKJUY0sQFbbwaU3ye9rh0p4LXR1YNqWxjd8ZKKxyVVbQGx501f zy1PT0fC4h1vH7PTHEPbfhsSSXtXL6uE91gKjMISJhkgFLf4KBPdrWMP5IBY 6GFcRaOs05x+4b8N1aMTB.MDKbjgpUP7UEfNfC5Em4CYUXgQikU6fq3il1iH 1s1kGKlQU7i2ZnjBruXIY.6Q49NnlKGvdTtr2l+Nhk0gJ41vQje5a6sFJgf6 oPvFRjz2QnrgbZYtu51zAsUzZmCNcoZDUlFD3RXdy9isGg7dy0h7xEvrWmqE lKFSWKXw81zybnzFvTJHJF4ldVoFrw9mGvwJU3IMIADZj06HWVtqWQX5UioV l2RDgG6qDA5XDFENTmGakLo28QMpkECTLVBSvfI7zqtNEnHgmBDXcKloRuXT U4X9JOC4Ln91H3MNPV5hjZrETcFlrWMPM8xTbqnwyZbLqSolPg8.I+kioRt+ xDnkSBPnhANcTiLQFHYh3sL0nH4lefRr+JVIytZvzx7UIiOfCSKylV8wrrFi ef8tTHL2UCViOD+cndz14XErqD7rqFp1tuy5vFRqzTumq.OjsBZX6AZMyU3F DGcbmlyuQzY2ubyTzKqzIn9IdBBaVLFiomHdGu+nZE1awC6m3w0N.lFYFS7J SEui2eTm3z20fSFxQHDuWYWzP1J7dwLC49QPj8k0BhTNS5p.3TrrbaFY2eLG T4sL17fp7BoqxtjeTk8Vi4.JhuNbHZzgiHJrxfH6BhcQCwd0Po5w81oM0XGG Q+aafey06NrayERW1hI4ztDt3S3g3gWshjymNJrYCl8rK8T.lJGtcylPCI7D CldKtuWMNApNTBHTpEuhBE66zUpeZQ+dv0Y7VXwgMF8HkKr73nBNWjUsz+SW opVqjcjsGlZvWhFLKgHHO756qOrJ+CuLzH6qGXEy+952Sxe5LkV31KGqluvT mEKTG50CDjbkoNzKE7XL0VQ5M2h3JK8GAhASH9O1kjroSRA1zrELy+L+EQFI opwS.9OMmb1eweIHeo4+2sEmeg1w8nBphkHkQTAw1UohHQDyen+bBtn2DT22 Q5WvClhO+xmfhvus3bt542O.J94jnJK76kUz2e3k0aed9Z2XiLb7gBCsJdqi kH9e93HR6OgtFayHGWxflUMbHK2IEyVs7frcEtWpLphAGSphHajDDtrx5nQs RKrHEN8DSSz0xoF14xbIYb8Qhf0ORtg4b6d4Y552ecdcxd1AIoQzU0K5jyEc Z2E8JN8QJLHR2j5OnYwmmYPmEy2r4anOb3S6R1+osqWZRY7lQJnFeQnjvgJ1 sGT89l2lu3uzFhz++ZvFf0wRv8.3TdKHnICYp73Ho8Xlk1nF3B9igGyL5VrW qAsXlIvL+SiUfa3v4eaPPFOTHiGnwnGyLJMRiG+Xxbyo2ydpo7E+W0feDR5o eoqdEyrdrFhE6rCPIugOR.v2nAYVjZ1xcy+RiFtXRKIBgp8TXXEa.wpbVzFW TqY.C9ETwFByZFd.MmMbSA7Zx98yeI4bTa818049Dj+5xnzy97.Uuxpn0W6C EqBermaUUCOfBjLWUVKL3I911Rk8jZDQvXzGLEk9OmjUa5pdnGb.7FyCFrxN KEFBv544adoHfcxIq1v5RwK6l+r4r9x3lJ5CuuY0++28AKig4HIwg6gA8BYF yeX09wJlfL.Je5dJ4v5ySajBaiaUwYnvllc99uC00KFnuBUG.6EUrbNuaaE1 E2JZapbjGn8OIO.ghbOrJP.VAfhbZhWbRLXG1VpzmVJGJASw7rqNushG71Zg cO9jMNs0O3HoGOYRTbOn4n39HjhgPJ8+QS56dVEwG.VwNlPBs9Q4SWY9rHo0 OnhjSnVYhU0XKtPYGMI4rYTSh4FAzIlV3dcsg5S6jp5AHg6CjP6CCvbeTn38 Q2L2i4TX8vygEGfDUt1DLKBD6WXV0iQ9s8sqnN2tHX1Pzv7YjNSzGcMh7jkq pj8n1o6otIQIDErrFHG8MW0GMNRiCu6AKqEK4LUoITGJ3b0C74AVeWt+V.mZ jr3Y185i6tSeOMnWhAX2tQAQa81Exbldg7zB2qumC0u1MqbOG5lSjLOTwnQj 9PGymIPhv8vSBZuMhmjZ0CfXaDoWkXJ0IXwQPYTI6dctc5S+dTstvCGiZ4al oN02eMSkOKL7Dc3dR8zumMonVboinsGHMbvOLBXi93s5aCQd1roMaHhZJN1o MaJ2p.d7d8sgHpzqEpEQpeBwHH6ybCWnvxfMWcoZuXuZufy4vHJ3pdWuvqUV nH8fmMvih0HzzGKLCdVM4F0ocVmpuGIb3OyEQKf7Z1K6kFXytRUqdsIpQhHF ivLQPBZjbH+OfK6bizGaF39X0bTdjWaXPsFn3tielHXu93pYwDoTHc2pyMQV 2ahBsUGiCmT4.1N8csJMLAEQBznPquKokbcj.pXSQvr6h928Y+EEZShB9DQA Wlnj5nRohBd3EE5f3QM0qk6S6kMph50XDUuXxvq8DKpOdR9DFh9PjNckfsx+ a2hCUNxA6zoUvF92CMOR2Zd4r1MXMQZ2VoES2fLyqxMUOGraiBb9Nhk8Taj0 w1namaGj1mWqvoOhPAwOSSzd4Q4klgp2dTM5bGi2KOKuLCxX8xyBGxyphMnk fgDVmDOS4BCgROKMAiwLU9624Va.QOtaOIZrW3BtWdVpt2GDAaRtomfVVWP1 86bi0qfc1Kab9oqUpt8ZsRuEcqdRZ33haONxOYvw624Fa3af0Y0LAXuWXXZN lMfoc27uWCbHw8h1LV4qCOUtXEJAh3C1c3YK.e3whY8Sqi30D0U273VycJkc WbD50PQSuryMuNy2Bpx58fOzsfL7s0SFAW5Ju.REM+s29bxt8tOt8o9vqy+S HYcTOZub0F3R64J4C6R97pz2uvdm46V7oUGRVXn0Lbh1EAmimO75V8Cdy6qb hsMgbNIqy.ou5rMqhT+oXZ+jGHqIyxNIalbPbaylLW5E00FXgrFy6VXSYJVO 03JlQXk25ZHKvZYFfEl.n+L+O+7+aFIhsX -----------end_max5_patcher----------- ```
``` This entry was posted in Uncategorized on December 10, 2018 by egiuse@andrew.cmu.edu. ```
``` Post navigation ← Project 2 – Kinect disco Robert Keller Project 2 – Project sPIral → ```