Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- *
- * Raster line (Brezanham alghorithm) AS3 implementation
- * @param c Number
- * @param x0 int
- * @param x1 int
- * @param y0 int
- * @param y1 int
- *
- * @return void
- *
- * @reference http://en.wikipedia.org/wiki/Bresenham's_line_algorithm
- *
- */
- function line( x0:int, y0:int, x1:int, y1:int, c:Number=0x000460 ):void
- {
- var Dx:int = x1 - x0;
- var Dy:int = y1 - y0;
- var steep:Boolean = Math.abs( Dy ) >= Math.abs( Dx );
- if( steep )
- {
- var tmp:Number = x0;
- x0 = y0;
- y0 = tmp;
- tmp = x1;
- x1 = y1;
- y1 = tmp;
- //x1^= y1 ^= x0 ^= y0
- Dx = x1 - x0;
- Dy = y1 - y0;
- }
- var xstep:int = 1;
- if( Dx < 0 )
- {
- xstep = -1;
- Dx = -Dx;
- }
- var ystep:int = 1;
- if( Dy < 0 )
- {
- ystep = -1;
- Dy = -Dy;
- }
- var TwoDy:Number = 2 * Dy;
- var TwoDyTwoDx:Number = TwoDy - 2*Dx;
- var E:int = TwoDy - Dx;
- var Y:int = y0;
- var xDraw:int;
- var yDraw:int;
- for( var X:int = x0; X != x1; X += xstep )
- {
- if ( steep )
- {
- xDraw = Y;
- yDraw = X;
- }
- else
- {
- xDraw = X;
- yDraw = Y;
- }
- plot( xDraw, yDraw, c ); //PLOT THE LINE DOT ON YOUR BITMAP DATA
- // next
- if( E > 0 )
- {
- E += TwoDyTwoDx; //E += 2*Dy - 2*Dx;
- Y = Y + ystep;
- }
- else
- {
- E += TwoDy; //E += 2*Dy;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment