Old B3D code but the priciples are there
http://blitzbasic.com/codearcs/codearcs.php?code=1178
http://blitzbasic.com/codearcs/codearcs.php?code=1377
http://blitzbasic.com/codearcs/codearcs.php?code=1178
http://blitzbasic.com/codearcs/codearcs.php?code=1377