1
ligyxy 2015-08-06 03:16:55 +08:00
欧式距离大于半径?
据说通宵写代码的质量要低一些 |
2
meteor2013 OP @ligyxy 小弟数学不好,能具体说说吗?
呵呵,刚喝了红牛兑橙汁。目前精力很好 |
3
manhere 2015-08-06 03:21:34 +08:00
话说...物体有多大?
|
4
meteor2013 OP @manhere 这里不考虑物体半径大小。简单处理就行
|
5
blacktulip 2015-08-06 03:23:31 +08:00 2
sqrt((x-a)(x-a)+(y-b)(y-b)) > r
|
6
meteor2013 OP @blacktulip 谢啊,哥们
|
7
Valyrian 2015-08-06 04:48:31 +08:00
这不是小学数学么
|
8
msg7086 2015-08-06 05:45:11 +08:00 2
这里有一个优化。
如果物体移动速度很快,也可以直接判断是否在圆的外切矩形之外来短路判断条件。 if x > a+r || x < a-r || y > b+r || y < b-r || sqrt() > r 可以省下一部分sqrt的时间。 |
9
Borden 2015-08-06 05:49:34 +08:00 via iPad
现在的程序员都这个水平了???
|
10
Xrong 2015-08-06 05:58:34 +08:00
楼主太迟要多休息,不然不可能脑袋卡壳到连勾股定理都想不起来
|
11
theFool 2015-08-06 08:06:45 +08:00 via iPhone
((x-a)(x-a)+(y-b)(y-b)) > r*r
省个开方。 最基础的数学知识还是得好好补补吧。 |
12
hellov22ex 2015-08-06 08:12:01 +08:00
楼主需要好好休息,帮你想个不给力的办法,就是求当X轴坐标等于x时的线与圆的交点到和y进行比较啦。
不要熬夜。 |
13
meteor2013 OP @hellov22ex 这方法好。谢谢啊
最近的确忙,搞红牛撑着 |
14
hellov22ex 2015-08-06 08:34:10 +08:00
@meteor2013 这样子你要先获得圆的函数,这一部分谷歌下吧。顺带注意身体,不是只为你自己。
|
15
leavic 2015-08-06 10:12:25 +08:00
@msg7086 如果你直接用或关系符的话,可能还需要考虑编译器的处理问题,编译器可能还是会算一遍sqrt的值,加上if else把sqrt和非sqrt切开也许会好点。
|
16
hinate 2015-08-06 10:14:52 +08:00 via Android
要多休息,不然代码都不能码了
|
18
leavic 2015-08-06 12:25:04 +08:00
@msg7086 在C里面,运算符是有优先级的,或运算时从左到右,如果你把sqrt写到了最左边,那肯定会要执行一遍sqrt了,当然你你没有这样写。
不是说这个问题一定会发生,只是说还的惦记着这种可能,否则结果可能是运算复杂度更高了。 |
19
wkdhf233 2015-08-06 13:00:57 +08:00
睡得好才是第一生产力
|
20
Cloudee 2015-08-06 14:41:15 +08:00
@msg7086 @meteor2013 感觉如果按题主说的,先计算是不是在内接矩形内,然后如果不在再判断到圆心的距离,后面的乘法运算被短路掉的概率比较高
|
21
msg7086 2015-08-06 15:10:21 +08:00 via Android
|
22
Exin 2015-08-06 19:40:23 +08:00 via iPhone
我还以为能看到判断在不规则形状外的方法
|
23
Aksura 2015-08-07 21:18:48 +08:00
|