博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
快速计算二点的距离
阅读量:6260 次
发布时间:2019-06-22

本文共 810 字,大约阅读时间需要 2 分钟。

 

感觉很有用...保存......

 

第一个是使用了乘法的版本

u32 approx_distance( s32 dx, s32 dy )
{
 u32 min, max, approx; if ( dx < 0 ) dx = -dx;
 if ( dy < 0 ) dy = -dy; if ( dx < dy )
 {
 min = dx;
 max = dy;
 } else {
 min = dy;
 max = dx;
 } approx = ( max * 1007 ) + ( min * 441 );
 if ( max < ( min << 4 ))
 approx -= ( max * 40 ); // add 512 for proper rounding
 return (( approx + 512 ) >> 10 );
}

 

 

 

 

 

int approx_distance2D( int dx, int dy )

{
int min, max;
if ( dx < 0 ) dx = -dx;
if ( dy < 0 ) dy = -dy;
if ( dx < dy )
{
min = dx;
max = dy;
} else {
min = dy;
max = dx;
}
// coefficients equivalent to ( 123/128 * max ) and ( 51/128 * min )
return ((( max << 8 ) + ( max << 3 ) - ( max << 4 ) - ( max << 1 ) +
( min << 7 ) - ( min << 5 ) + ( min << 3 ) - ( min << 1 )) >> 8 );
}

转载于:https://www.cnblogs.com/signal/archive/2012/08/15/2640172.html

你可能感兴趣的文章
算法与数据结构(七) AOV网的拓扑排序(Swift版)
查看>>
maven pom.xml解释 (转)
查看>>
markdown to html
查看>>
Pspice仿真器
查看>>
ogg 、 Shareplex和DSG RealSync 对比
查看>>
NK3C程序配置
查看>>
webrtc中APM(AudioProcessing module)的使用2
查看>>
lunix的查看Tomcat目录下日志的快速操作
查看>>
zabbix添加邮件报警机制
查看>>
微信开放之模板消息
查看>>
Hql 中实用查询时候 引号的使用
查看>>
利用PowerShell复制SQLServer账户的所有权限
查看>>
SQLServer 维护脚本分享(10)索引
查看>>
js里父页面与子页面的相互调用
查看>>
AES加解密【示例】
查看>>
jdbc向各种数据库发送sql语句
查看>>
比特币进一步学习-针对作弊问题的处理
查看>>
Android实现手机摄像头的自动对焦
查看>>
ASCII流程图
查看>>
Linux知识积累(5) 关机shutdown和重启reboot
查看>>