{"id":349,"date":"2010-02-03T12:22:44","date_gmt":"2010-02-03T18:22:44","guid":{"rendered":"http:\/\/www.tamarziv.com\/itp\/?p=349"},"modified":"2010-02-03T19:34:32","modified_gmt":"2010-02-04T01:34:32","slug":"w02-pixel-x-pixel","status":"publish","type":"post","link":"https:\/\/www.tamarziv.com\/itp\/w02-pixel-x-pixel\/","title":{"rendered":"W02-Pixel x Pixel"},"content":{"rendered":"<p><a href='http:\/\/itp.nyu.edu\/~tz346\/PxP\/w02\/PxP_Tri.zip' >Triangles<\/a> | <a href='http:\/\/itp.nyu.edu\/~tz346\/PxP\/w02\/PxP_Tri.zip'  target='new'>Download the apps<\/a><\/p>\n<p><img src='http:\/\/www.tamarziv.com\/itp\/wp-content\/themes\/tma\/images\/uploads\/pxp_02.jpg' alt='PXP'  width=650><\/p>\n<p>Basically starting off the animated circles example, but using triangles, a random position for one vertex, and two animated vertexes shared by all  triangles, when the two shared vertexes combine, the triangle becomes a line and therefore create a gradation and shift into white.<br \/>\n<\/br><br \/>\n<\/br><\/p>\n<div class=\"codecolorer-container cpp default\" style=\"overflow:auto;white-space:nowrap;width:648px;height:300px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/>54<br \/>55<br \/>56<br \/>57<br \/>58<br \/>59<br \/>60<br \/>61<br \/>62<br \/>63<br \/>64<br \/>65<br \/>66<br \/>67<br \/>68<br \/>69<br \/>70<br \/>71<br \/>72<br \/>73<br \/>74<br \/>75<br \/>76<br \/>77<br \/>78<br \/>79<br \/>80<br \/>81<br \/>82<br \/>83<br \/>84<br \/>85<br \/>86<br \/>87<br \/>88<br \/>89<br \/>90<br \/>91<br \/>92<br \/>93<br \/><\/div><\/td><td><div class=\"cpp codecolorer\"><span class=\"coMULTI\">\/*&nbsp; &nbsp; &nbsp; ITP Pixel by Pixel <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; circles<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; move mouse to interact<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Danny Rozin 2009<br \/>\n*\/<\/span><br \/>\n<br \/>\n<span class=\"co2\">#include &quot;testApp.h&quot; <\/span><br \/>\n<br \/>\n<span class=\"co1\">\/\/**** if you are lazy you can put some global variables here, but it is bad practice and will not work for complex data types (put in testApp.h) &nbsp;********<\/span><br \/>\n<span class=\"kw4\">const<\/span> <span class=\"kw4\">int<\/span> numOfCircles<span class=\"sy1\">=<\/span><span class=\"nu0\">1000<\/span><span class=\"sy4\">;<\/span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ creating a constant integer and giving it a value, <\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ In C when you create an array you have to give it a constant not a variable<\/span><br \/>\n<span class=\"kw4\">int<\/span> positionsX<span class=\"br0\">&#91;<\/span>numOfCircles<span class=\"br0\">&#93;<\/span>, positionsY<span class=\"br0\">&#91;<\/span>numOfCircles<span class=\"br0\">&#93;<\/span><span class=\"sy4\">;<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ two arrays to hold the locations of our circles<\/span><br \/>\n<span class=\"kw4\">float<\/span> angle <span class=\"sy1\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy4\">;<\/span> <br \/>\n<span class=\"co1\">\/\/ ofTriangle(float x1, float y1, float x2, float y2, float x3, float y3)<\/span><br \/>\n<br \/>\n<span class=\"co1\">\/\/************** Everything you want to happen once in the begining, but don't draw anything to the screen here a it will not work ****************<\/span><br \/>\n<span class=\"kw4\">void<\/span> testApp<span class=\"sy4\">::<\/span><span class=\"me2\">setup<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span>&nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; ofBackground<span class=\"br0\">&#40;<\/span><span class=\"nu0\">255<\/span>,<span class=\"nu0\">255<\/span>,<span class=\"nu0\">255<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy4\">;<\/span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ background color <\/span><br \/>\n&nbsp; &nbsp; ofSetColor<span class=\"br0\">&#40;<\/span><span class=\"nu0\">0<\/span>,<span class=\"nu0\">0<\/span>,<span class=\"nu0\">0<\/span>,<span class=\"nu0\">10<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy4\">;<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ color of lines and fills<\/span><br \/>\n&nbsp; &nbsp; ofEnableAlphaBlending<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy4\">;<\/span> &nbsp;<br \/>\n&nbsp; &nbsp; ofEnableSmoothing<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy4\">;<\/span> &nbsp;<br \/>\n&nbsp; &nbsp; ofSetLineWidth<span class=\"br0\">&#40;<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy4\">;<\/span> &nbsp;<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; <span class=\"kw1\">for<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw4\">int<\/span> i <span class=\"sy1\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy4\">;<\/span>i<span class=\"sy1\">&lt;<\/span> numOfCircles<span class=\"sy4\">;<\/span>i<span class=\"sy2\">++<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ we want our random positions to stay the same, so we put them into our <\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; positionsX<span class=\"br0\">&#91;<\/span>i<span class=\"br0\">&#93;<\/span><span class=\"sy1\">=<\/span> ofRandom<span class=\"br0\">&#40;<\/span><span class=\"sy2\">-<\/span>ofGetWidth<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy2\">*<\/span><span class=\"nu0\">2<\/span>,ofGetWidth<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy2\">*<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy4\">;<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ global arrays, otherwise, the circles would randomize every frame and it would flicker<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; positionsY<span class=\"br0\">&#91;<\/span>i<span class=\"br0\">&#93;<\/span><span class=\"sy1\">=<\/span> ofRandom<span class=\"br0\">&#40;<\/span><span class=\"sy2\">-<\/span>ofGetHeight<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy2\">*<\/span><span class=\"nu0\">2<\/span>,ofGetHeight<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy2\">*<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy4\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n<br \/>\n<br \/>\n<span class=\"co1\">\/\/********************************************* Code in draw() executes every frame, &nbsp;**********************************************************<\/span><br \/>\n<span class=\"kw4\">void<\/span> testApp<span class=\"sy4\">::<\/span><span class=\"me2\">draw<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span> &nbsp; <br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>angle <span class=\"sy1\">&lt;=<\/span> <span class=\"nu0\">360<\/span> <span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw4\">float<\/span> r <span class=\"sy1\">=<\/span> <span class=\"nu17\">30.0f<\/span><span class=\"sy4\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw4\">float<\/span> theta <span class=\"sy1\">=<\/span> angle<span class=\"sy4\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw4\">float<\/span> radians <span class=\"sy1\">=<\/span> <span class=\"br0\">&#40;<\/span>angle <span class=\"sy2\">*<\/span> pi<span class=\"br0\">&#41;<\/span><span class=\"sy2\">\/<\/span><span class=\"nu16\">180.0<\/span><span class=\"sy4\">;<\/span> <br \/>\n&nbsp; &nbsp; <span class=\"kw4\">float<\/span> offSetCenterX <span class=\"sy1\">=<\/span> r <span class=\"sy2\">*<\/span> <span class=\"kw3\">cos<\/span><span class=\"br0\">&#40;<\/span>radians<span class=\"br0\">&#41;<\/span><span class=\"sy4\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw4\">float<\/span> offSetCenterY <span class=\"sy1\">=<\/span> r <span class=\"sy2\">*<\/span> <span class=\"kw3\">sin<\/span><span class=\"br0\">&#40;<\/span>radians<span class=\"br0\">&#41;<\/span><span class=\"sy4\">;<\/span><br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ float offSetCenterX = 20 ;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">for<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw4\">int<\/span> i<span class=\"sy1\">=<\/span><span class=\"nu0\">0<\/span><span class=\"sy4\">;<\/span>i<span class=\"sy1\">&lt;<\/span>numOfCircles<span class=\"sy4\">;<\/span>i<span class=\"sy2\">++<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span>&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; <span class=\"kw4\">float<\/span> distance <span class=\"sy1\">=<\/span> <span class=\"kw3\">sqrt<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#40;<\/span>positionsX<span class=\"br0\">&#91;<\/span>i<span class=\"br0\">&#93;<\/span><span class=\"sy2\">-<\/span> mouseX<span class=\"br0\">&#41;<\/span><span class=\"sy2\">*<\/span> <span class=\"br0\">&#40;<\/span>positionsX<span class=\"br0\">&#91;<\/span>i<span class=\"br0\">&#93;<\/span><span class=\"sy2\">-<\/span> mouseX<span class=\"br0\">&#41;<\/span>&nbsp; <span class=\"sy2\">+<\/span> &nbsp; <span class=\"br0\">&#40;<\/span>positionsY<span class=\"br0\">&#91;<\/span>i<span class=\"br0\">&#93;<\/span><span class=\"sy2\">-<\/span> mouseY<span class=\"br0\">&#41;<\/span><span class=\"sy2\">*<\/span> <span class=\"br0\">&#40;<\/span>positionsY<span class=\"br0\">&#91;<\/span>i<span class=\"br0\">&#93;<\/span><span class=\"sy2\">-<\/span> mouseY<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy4\">;<\/span> <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; ofFill<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy4\">;<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ turn the fill on, we want black circles<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; ofSetColor<span class=\"br0\">&#40;<\/span><span class=\"nu0\">0<\/span>,<span class=\"nu0\">0<\/span>,<span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy4\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ ofSetColor(255-distance\/3,255-distance\/3,255-distance\/3);&nbsp; &nbsp; &nbsp; &nbsp; \/\/ just for fun, make the circles darker as they grt distant<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ofCircle(positionsX[i] ,positionsY[i],distance\/ 10);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; ofTriangle<span class=\"br0\">&#40;<\/span>positionsX<span class=\"br0\">&#91;<\/span>i<span class=\"br0\">&#93;<\/span>, positionsY<span class=\"br0\">&#91;<\/span>i<span class=\"br0\">&#93;<\/span>, ofGetWidth<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy2\">\/<\/span><span class=\"nu0\">2<\/span><span class=\"sy2\">-<\/span>offSetCenterX<span class=\"sy2\">-<\/span>r<span class=\"sy2\">\/<\/span><span class=\"nu0\">2<\/span>, ofGetHeight<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy2\">\/<\/span><span class=\"nu0\">2<\/span><span class=\"sy2\">-<\/span>offSetCenterX<span class=\"sy2\">-<\/span>r<span class=\"sy2\">\/<\/span><span class=\"nu0\">2<\/span>, mouseX, mouseY<span class=\"br0\">&#41;<\/span><span class=\"sy4\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ofTriangle(positionsX[i], positionsY[i], ofGetWidth()\/2, ofGetHeight()\/2, mouseX, mouseY);<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; ofNoFill<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy4\">;<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ turn the fill of, we want to draw a white line around each circle<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; ofSetColor<span class=\"br0\">&#40;<\/span><span class=\"nu0\">255<\/span>,<span class=\"nu0\">255<\/span>,<span class=\"nu0\">255<\/span>,<span class=\"nu0\">255<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy4\">;<\/span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; ofTriangle<span class=\"br0\">&#40;<\/span>positionsX<span class=\"br0\">&#91;<\/span>i<span class=\"br0\">&#93;<\/span>, positionsY<span class=\"br0\">&#91;<\/span>i<span class=\"br0\">&#93;<\/span>, ofGetWidth<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy2\">\/<\/span><span class=\"nu0\">2<\/span><span class=\"sy2\">-<\/span>offSetCenterX<span class=\"sy2\">-<\/span>r<span class=\"sy2\">\/<\/span><span class=\"nu0\">2<\/span>, ofGetHeight<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy2\">\/<\/span><span class=\"nu0\">2<\/span><span class=\"sy2\">-<\/span>offSetCenterX<span class=\"sy2\">-<\/span>r<span class=\"sy2\">\/<\/span><span class=\"nu0\">2<\/span>, mouseX, mouseY<span class=\"br0\">&#41;<\/span><span class=\"sy4\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ofTriangle(positionsX[i], positionsY[i], ofGetWidth()\/2, ofGetHeight()\/2, mouseX, mouseY);<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ofTriangle(positionsX[i], positionsY[i], ofGetWidth()\/2, ofGetHeight()\/2, mouseX, mouseY);<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ofCircle(positionsX[i] ,positionsY[i],distance\/ 10);&nbsp; &nbsp; &nbsp; <\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; angle <span class=\"sy2\">+<\/span><span class=\"sy1\">=<\/span> <span class=\"nu16\">0.001<\/span><span class=\"sy4\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#125;<\/span> <span class=\"kw1\">else<\/span> <span class=\"br0\">&#123;<\/span>angle <span class=\"sy1\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy4\">;<\/span><span class=\"br0\">&#125;<\/span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ display the result on the screen <\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw3\">printf<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;%f <span class=\"es1\">\\n<\/span>&quot;<\/span>, ofGetFrameRate<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy4\">;<\/span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ put the frame rate into the console <\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n<br \/>\n<br \/>\n<br \/>\n<span class=\"co1\">\/\/**************** Code in update() execute every frame, but don't draw anything here cause it won't work, in general put most stuff into draw() *************<\/span><br \/>\n<span class=\"kw4\">void<\/span> testApp<span class=\"sy4\">::<\/span><span class=\"me2\">update<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span><span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n<span class=\"co1\">\/\/--------------------------------------------------------------<\/span><br \/>\n<span class=\"kw4\">void<\/span> testApp<span class=\"sy4\">::<\/span><span class=\"me2\">keyPressed<\/span> &nbsp;<span class=\"br0\">&#40;<\/span><span class=\"kw4\">int<\/span> key<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span> <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n<br \/>\n<span class=\"co1\">\/\/--------------------------------------------------------------<\/span><br \/>\n<span class=\"kw4\">void<\/span> testApp<span class=\"sy4\">::<\/span><span class=\"me2\">keyReleased<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw4\">int<\/span> key<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span> &nbsp;<span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n<span class=\"co1\">\/\/--------------------------------------------------------------<\/span><br \/>\n<span class=\"kw4\">void<\/span> testApp<span class=\"sy4\">::<\/span><span class=\"me2\">mouseMoved<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw4\">int<\/span> x, <span class=\"kw4\">int<\/span> y <span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span> <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n<span class=\"co1\">\/\/--------------------------------------------------------------<\/span><br \/>\n<span class=\"kw4\">void<\/span> testApp<span class=\"sy4\">::<\/span><span class=\"me2\">mouseDragged<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw4\">int<\/span> x, <span class=\"kw4\">int<\/span> y, <span class=\"kw4\">int<\/span> button<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span><span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n<span class=\"co1\">\/\/--------------------------------------------------------------<\/span><br \/>\n<span class=\"kw4\">void<\/span> testApp<span class=\"sy4\">::<\/span><span class=\"me2\">mousePressed<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw4\">int<\/span> x, <span class=\"kw4\">int<\/span> y, <span class=\"kw4\">int<\/span> button<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span> &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n<span class=\"co1\">\/\/--------------------------------------------------------------<\/span><br \/>\n<span class=\"kw4\">void<\/span> testApp<span class=\"sy4\">::<\/span><span class=\"me2\">mouseReleased<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span>&nbsp; <span class=\"br0\">&#125;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Basically starting off the animated circles example, but using triangles, a random position for one vertex, and two animated vertexes shared by all  triangles, when the two shared vertexes combine, the triangle becomes a line and therefore create a gradation and shift into white.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[12],"tags":[],"class_list":["post-349","post","type-post","status-publish","format-standard","hentry","category-pxp"],"_links":{"self":[{"href":"https:\/\/www.tamarziv.com\/itp\/wp-json\/wp\/v2\/posts\/349","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tamarziv.com\/itp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tamarziv.com\/itp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tamarziv.com\/itp\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tamarziv.com\/itp\/wp-json\/wp\/v2\/comments?post=349"}],"version-history":[{"count":17,"href":"https:\/\/www.tamarziv.com\/itp\/wp-json\/wp\/v2\/posts\/349\/revisions"}],"predecessor-version":[{"id":386,"href":"https:\/\/www.tamarziv.com\/itp\/wp-json\/wp\/v2\/posts\/349\/revisions\/386"}],"wp:attachment":[{"href":"https:\/\/www.tamarziv.com\/itp\/wp-json\/wp\/v2\/media?parent=349"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tamarziv.com\/itp\/wp-json\/wp\/v2\/categories?post=349"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tamarziv.com\/itp\/wp-json\/wp\/v2\/tags?post=349"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}