如何优雅地测量一只猫的体积

来源:互联网 发布:apk软件如何安装 编辑:程序博客网 时间:2024/05/03 05:41

原文链接

摘要: 如何优雅地测量一只猫的体积,而不使其感到惊恐或受到伤害? ◆ ◆ ◆ 前情提要 Monte Carlo 测猫法: 把猫装进已知体积为V_box的盒子,在盒子内均匀取N个随机点,其中M个在猫体内,猫体积近似为V_box*M/N。


0?wx_fmt=png

如何优雅地测量一只猫的体积,而不使其感到惊恐或受到伤害?

0?wx_fmt=jpeg

0?wx_fmt=jpeg

0?wx_fmt=jpeg



 ◆ 

前情提要


Monte Carlo 测猫法:


把猫装进已知体积为V_box的盒子,在盒子内均匀取N个随机点,其中M个在猫体内,猫体积近似为V_box*M/N。


推理及讨论见supplemental materials.

0?wx_fmt=jpeg


要实现这一测猫法,需要一种瞬时确定某点是猫还是非猫的方法,否则在猫运动的情况下,会测得猫扫过的体积而不是猫体积。

我决定用下图所示的方法。。。

0?wx_fmt=jpeg


盒子壁上装尽量多的激光灯,盒子壁用感光材料。若要确定某点是猫还是非猫,则让所有激光灯射向目标点。若目标点是猫,则激光会被猫挡住因此盒子壁上任何一点都不会检测到激光。因此我们用以下原则判断目标点是猫非猫:


  • 若有盒子壁上任何一点检测到激光,说明目标点非猫。

  • 否则认为该点是猫。


测量可以在很短的时间内完成,足以快到忽略猫的运动。

============================
当然这种方法是有缺陷的,猫身上一些凹陷部位可能会成为激光无法穿过的死角,因此被算入猫体积。


一个充分不必要的解决方法是让猫变成凸猫(convex cat), 即任取两点属于猫,两点之间的线段上的点都属于猫,满足这一条件的猫叫做凸猫,如下图所示。


0?wx_fmt=jpeg


下图是一个现实生活中凸猫的例子。。(图片来自网络)


0?wx_fmt=jpeg


对于凸猫,该方法测得的猫体积即为真猫体积,证明见supplemental materials中的夹逼测猫法。
但是这种方法是不猫道的,因为猫咪宣言中有这样的话:


We hold these truths to be self-evident, that all cats are created equal (大雾), and they are endowed by their Creator with certain unalienable rights, that among these are the rights to stand up, lie down, turn around, groom themselves and stretch their limbs ...


Five freedoms
[ARCHIVED CONTENT] Farm Animal Welfare Council


而凸猫显然(至少)剥夺了猫咪 stretch their limbs 的自由。。。


好在对于非凸猫,该方法也不是那么糟糕。


下面我将展示给大家,即使对于非凸猫,用该方法测出来的猫体积

  • 首先本身就是一种很合理的猫体积定义

  • 其次实际操作中与一般意义上的猫体积差别不大


============================

要测量猫体积,首先要定义猫体积。


然而“猫有毛兮毛有枝,本喵在哪你不知。”


猫的体积定义并非显而易见的,主要有两个困难


原文链接


原创粉丝点击