MCPcopy Index your code
hub / github.com/ericdrowell/KineticJS / FromPolar

Function FromPolar

kinetic.js:5804–5859  ·  view source on GitHub ↗
(src,dst,opt)

Source from the content-addressed store, hash-verified

5802 */
5803
5804 var FromPolar = function(src,dst,opt){
5805
5806 var srcPixels = src.data,
5807 dstPixels = dst.data,
5808 xSize = src.width,
5809 ySize = src.height,
5810 xMid = opt.polarCenterX || xSize/2,
5811 yMid = opt.polarCenterY || ySize/2,
5812 i, x, y, dx, dy, r=0,g=0,b=0,a=0;
5813
5814
5815 // Find the largest radius
5816 var rad, rMax = Math.sqrt( xMid*xMid + yMid*yMid );
5817 x = xSize - xMid;
5818 y = ySize - yMid;
5819 rad = Math.sqrt( x*x + y*y );
5820 rMax = (rad > rMax)?rad:rMax;
5821
5822 // We'll be uisng x as the radius, and y as the angle (theta=t)
5823 var rSize = ySize,
5824 tSize = xSize,
5825 radius, theta,
5826 phaseShift = opt.polarRotation || 0;
5827
5828 // We need to convert to degrees and we need to make sure
5829 // it's between (0-360)
5830 // var conversion = tSize/360*180/Math.PI;
5831 //var conversion = tSize/360*180/Math.PI;
5832
5833 var x1, y1;
5834
5835 for( x=0; x<xSize; x+=1 ){
5836 for( y=0; y<ySize; y+=1 ){
5837 dx = x - xMid;
5838 dy = y - yMid;
5839 radius = Math.sqrt(dx*dx + dy*dy)*rSize/rMax;
5840 theta = (Math.atan2(dy,dx)*180/Math.PI + 360 + phaseShift)%360;
5841 theta = theta*tSize/360;
5842 x1 = Math.floor(theta);
5843 y1 = Math.floor(radius);
5844 i = (y1*xSize + x1)*4;
5845 r = srcPixels[i+0];
5846 g = srcPixels[i+1];
5847 b = srcPixels[i+2];
5848 a = srcPixels[i+3];
5849
5850 // Store it
5851 i = (y*xSize + x)*4;
5852 dstPixels[i+0] = r;
5853 dstPixels[i+1] = g;
5854 dstPixels[i+2] = b;
5855 dstPixels[i+3] = a;
5856 }
5857 }
5858
5859 };
5860
5861 //Kinetic.Filters.ToPolar = Kinetic.Util._FilterWrapDoubleBuffer(ToPolar);

Callers 1

kinetic.jsFile · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected