如何優雅地測量一隻貓的體積,而不使其感到驚恐或受到傷害?

這是一個有情懷的問題。
――
喵了個咪,我問的這麼冷嘛!都不來侃侃。即使不能給專業的回答,你抖個機靈也是歡迎的嘛!


摘要
本答案基於熱力學理論給出一種測量喵星人體積的方法,該方法具有簡便、高效、不傷害喵星人等特點。就答主所知,本答案首次解決了喵星人活體測量難題,用一點微小的工作,推進了歷史的進程。


1.引言

尊貴無比的喵星人曾是古埃及繪畫作品當仁不讓的主角,是歐洲中世紀貴婦人難捨難分的靈魂伴侶,更是當代中國改革開放的思想化身。如今,飽暖思y欲的人類逐漸對喵星人的體積越來越有興趣,令人遺憾的是,學術界並未提出有效的測量手段。為避免誤傷喵星人,挑起人喵之間的戰爭,人類不得不壓抑住一顆顆悸動的心,望喵興嘆之中,多少人夜不能寐、飽受折磨。

為解救日漸虛弱的人類心靈,本答案提出一種基於熱力學的活體測喵方法。該方法利用等溫過程的性質,將體積測量映射到氣壓測量,從而得出「喵體公式」。該方法有效地避免了對喵星人的損傷,徹底杜絕了喵星人藉機搞事的可能性。


2. 文獻回顧
(待定)

3. 基於熱力學的喵體公式


將無辜的喵星人放入如圖所示的密閉容器中,並迅速(同時又緩緩地)將活塞推動少許。

如果假設:

1. 喵星人可視為剛體/流體,即在微弱的氣壓變化下,喵星人體積不會被壓縮
2. 喵星人因為不知道鏟屎官在搞什麼名堂而屏住了呼吸

那麼,接下來順應歷史的進程、給出史上首個「喵體公式」:

4. 討論

5. 總結


致謝

--------


我來提供一個很優雅,對要採集的物體干擾非常小的方案。

這篇論文叫Robust Non-rigid Motion Tracking and Surface Reconstruction Using L0 Regularization,發表在ICCV 2015的poster,完整版發表在TVCG 2017,項目主頁L0 non-rigid。

做的內容是什麼呢?

用一個深度攝像頭,比如但不僅限於Kinect,拍攝一系列的動作。這個演算法可以儘可能地把這些動作中相同的「組件」識別出來,並通過幀之間的關聯補缺補漏。最後重建出整個物體,以及那些動作。處理的對象可以是non-rigid的軟體(比如貓咪、穿蓬鬆衣服的人),處理結果是一個3D模型。

有了數字化的3D模型,直接量體積就可以了啊。


稱一下貓的重量,然後除以貓的密度。貓的密度用狗的浸水實驗來近似計算。

--------------------------------------------------------------------------------------------------------------
沒想到收到這麼多關注,謝謝大家哈,我確實很喜歡貓,喜歡貓的性格。


20151201更新。乃們要的克萊因貓出鍋了,在Fig. 6.
另。This article is available under the Creative Commons, Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

=============================
20151022更新。新增 Monte Carlo 測貓法的具體實現方法。並解決嚴謹定義貓體積的問題。

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

前情提要:
Monte Carlo 測貓法:
把貓裝進已知體積為V_box的盒子,在盒子內均勻取N個隨機點,其中M個在貓體內,貓體積近似為V_box*M/N。推理及討論見supplemental materials.

要實現這一測貓法,需要一種瞬時確定某點是貓還是非貓的方法,否則在貓運動的情況下,會測得貓掃過的體積而不是貓體積。
我決定用下圖所示的方法。。。

盒子壁上裝盡量多的激光燈,盒子壁用感光材料。若要確定某點是貓還是非貓,則讓所有激光燈射向目標點。若目標點是貓,則激光會被貓擋住因此盒子壁上任何一點都不會檢測到激光。因此我們用以下原則判斷目標點是貓非貓:

  • 若有盒子壁上任何一點檢測到激光,說明目標點非貓。
  • 否則認為該點是貓。

測量可以在很短的時間內完成,足以快到忽略貓的運動。

============================
當然這種方法是有缺陷的,貓身上一些凹陷部位可能會成為激光無法穿過的死角,因此被算入貓體積。
一個充分不必要的解決方法是讓貓變成凸貓(convex cat), 即任取兩點屬於貓,兩點之間的線段上的點都屬於貓,滿足這一條件的貓叫做凸貓,如下圖所示。

下圖是一個現實生活中凸貓的例子。。(圖片來自網路)

對於凸貓,該方法測得的貓體積即為真貓體積,證明見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 的自由。。。
好在對於非凸貓,該方法也不是那麼糟糕。
下面我將展示給大家,即使對於非凸貓,用該方法測出來的貓體積

  • 首先本身就是一種很合理的貓體積定義
  • 其次實際操作中與一般意義上的貓體積差別不大

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

要測量貓體積,首先要定義貓體積。
然而「貓有毛兮毛有枝,本喵在哪你不知。」
貓的體積定義並非顯而易見的,主要有兩個困難:

  1. 貓的表面是凹凸不平的,那些凹陷和縫隙怎麼算?客觀標準是什麼呢?
  2. 喵是測不準的。理論上來講喵的電子云可以想你時你在天邊,想你時你在眼前,哪裡算邊界?

嗯。。化學家出場了。。。
化學家測貓大法:
把一個直徑一定的毛線球用一定力量按在喵體表滾一遍,把毛線球與喵接觸的內表面軌跡包括的空間的體積視為貓的體積,並稱之為Van de Waals cat volume .
(好吧。。。我知道這不叫Van de Waals體積。。但是這個體積的實際名字土掉渣了。。哪有Van de Waals高大上。。。)
如下圖。

這一體積定義包含兩個要素。毛線球的直徑和按在貓身上的力量,前者決定了凹陷和縫隙算與不算的體積和形狀標準——毛線球放得進就算,否則不算;後者決定了貓邊界的標準——和毛線球之間的作用力達到某一值為準,啥啥電子云都不好使,就看力的大小。通過改變毛線球和力量的大小,可以控制貓體積的精細程度。究竟多精細不重要,重要的是可以定義一個體積的客觀標準。

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

仿照這一定義,我將我測得的貓體積定義為 Van de Bars cat volume。。。如下圖。。。

準確來說,是一個直徑相當於激光束粗度,無限長的bar在貓表面滾過定義的貓體積。。。你看。。。我測的體積也是有一個很有道理的定義的嘛。。。。
同時我想強調,相對於其他回答,該方法對貓毛可以有很嚴格的處理,詳見supplemental materials中對貓毛的討論。

===============================
我認為實際測量中Van de Bars 貓體積和我們一般認為的貓體積差異並不大。
比如看下圖

E為克萊因貓,虛線部分在貓體內。。

對於碗狀貓(bowl cat),Van de Bars 貓體積確實會把貓肚子下面那塊空間誤算做貓體積的一部分。但是對弓狀貓(bow cat)、椅狀貓(chair cat)的測量都是準確的,因為光線可以從圖上箭頭的角度穿過。甚至小昭貓(shaw zhao cat)這個我本來覺得挺奇葩的形狀下其實並沒有任何問題。這樣一來,Van de Bars 貓體積在多數情況下和我們一般認為的貓體積的區別也就僅限於耳廓內的空間、個別身體縫隙之類的光穿不過的死角。。。我覺得還是能接受的。。。
為了盡量避免碗狀貓對測量的影響,我們要大力鼓勵貓咪充分 stretch their limbs. 這也提示我們,愛護貓咪對我們藍星人也是有益的。。。所以愛護貓咪,人人有責,no cats should be convex!!!

=============================
綜上,我設計了一種測量Van de Bars 貓體積的Monte Carlo測貓法。我覺得這是目前回答里最貓道最優雅的。。。因為它保障了貓咪伸展身體、弄乾身體、不受恐嚇、自由站起、躺下、翻身的權利。。。而且對貓體積有嚴謹而實用的定義。。。

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

Supplemental materials:

  • Monte carlo 測貓法的推理:

把貓裝進體積為V的盒子,在盒子內 uniform randomly 取N個 independent and identically distributed (i.i.d.) 的點組成樣本,記為 SAMPLE = {(xi, yi, zi) | i in range(0, N)}。

定義如下 function:
I(x, y, z) = 1 if (x, y, z) in CAT else 0
(即確定一個點是貓還是非貓)
假設貓體積(V_cat)不變,且貓的運動與取點不相關(即貓既不接飛鏢也不躲飛鏢,見評論區知友討論),則I(x, y, z)具有如下分布:
I(x, y, z) = 0 with a probability of 1-V_cat/V_box
I(x, y, z) = 1 with a probability of V_cat/V_box
與貓運動與否不相關。
根據這一分布I(x, y, z)的期望值是V_cat/V_box.
{I(xi, yi, zi) | (xi, yi, zi) in SAMPLE} 是一個服從上述分布的 i.i.d. 的sample。
根據大數定理(law of large numbers), sample mean almost surely converges to expected value. 所以可以用 sample mean 估計期望值,即:
V_cat/V_box ~= sum(I(xi, yi, zi))/N
記M為在貓體內的樣本點數量,則
V_cat/V_box ~= sum(I(xi, yi, zi))/N = M/N
所以V_cat ~= V_box * M/N

  • 關於貓毛的討論

上述方法等價於把貓邊界定義為貓體表透光率顯著不同於空氣以至於足以使得sensor檢測到差異的位置。可以想像這應該包括了貓毛,而且是不受壓迫不變形的貓毛。
我認為這也是該方法的一大優勢——這是真正的無損測真貓,而不是測 a rat-like creature that lives inside a cat (見 @蒼原雪在本問題下的回答)。。。其他方法,包括彩虹糖,都是有壓迫的。實際上彩虹糖法測的是彩虹糖的形狀和大小、彩虹糖與貓接觸處的壓強定義的Van de Waals cat volume. 因為這一壓強,長毛貓的測量可能和我們預想的含貓毛體積有較大區別。

  • Van de Bars 貓體積和其他貓體積的對比 (不適用於克萊因貓)
    • VS 真 貓體積
      • 這裡真貓體積指刨除一切空隙的貓體積。顯然,Van de Bars 貓體積 &>= 真貓體積。所以Van de Bars 貓體積是真貓體積的一個upper bound. 可惜的是它們之間的差是沒有任何保證的,比如口袋貓。
    • VS Van de 毛線球 貓體積
      • 我覺得Van de Bars 貓體積應該是與bar同樣直徑的毛線球定義出的Van de 毛線球貓體積的upper bound,但是我沒仔細證。。。因為比如bowl cat這樣的存在,它們的差同樣是沒upper limit的。。。
    • VS Convex Hull (附夾逼測貓法)
      • 一個set的convex hull 是包含這個set且convex的最小的set。如圖3和下圖。

      • 易知Convex hull 貓體積 &>= Van de Bars 貓體積 &>= Van de 毛線球貓體積 &>= 真貓體積。對於convex貓,因為貓本身就是convex的,所以貓和貓的convex hull是同一集合,所以Convex hull貓體積 = 真貓體積,所以convex cat 的真體積 = Van de 毛線球體積 = Van de Bars體積 = Convex hull 體積。。。。。。夾逼測貓法。。。。convex 貓真好測。。。各種體積都一樣。。。all cats should be convex。。。
  • 關於克萊因貓
    • 準確講克萊因貓應該是克萊因貓皮(Klein Cat Skin),因為這是一個曲面而不是實體,而且這個曲面不能把空間分為內、外互不連通的兩部分,所以也無法把克萊因貓體積定義為克萊因貓皮圍成的空間的體積。仔細看Fig. 6 E 的話,克萊因貓「體內」的空間可以通過尾巴-食道-口和外界相通。所以嚴格講,克萊因貓無體積。
    • 但是這並不妨礙我們繼續強測克萊因貓的 Van de 毛線球體積和 Van de Bars 體積,只是不同於之前可以把這作為真貓體積的近似,現在我們必須將其作為一種獨立的體積定義使用。
    • 在克萊因貓上 Van de Bars 貓體積比 Van de 毛線球貓體積魯棒。因為當毛線球小到克萊因貓可以吞下去的時候,毛線球會沿著口-食道-尾巴通路把喵「體內」滾個遍,然後 Van de 毛線球體積為零。。。而 Van de Bars 體積因為使用的是無限長的bar, 所以即使bar直徑再小也無法access喵「體內」的空間。這允許我們用較細的bar來提高測量準確度而不必擔心體積忽然降為0.

=========下面是原答案===============
物理學家測貓法:取一隻半徑為r的真空中的球形貓,體積等於4/3*πr^3

數學家測貓法:把貓裝進已知體積為V的盒子,在盒子內均勻取N個隨機點,其中M個在貓體內,貓體積近似為VM/N。

生物學家測貓法:把control貓裝盒子,塞了10次都塞進去了,把實驗貓裝同一個盒子,塞了10次只進去兩次,所以,貓多大我不知道,反正顯著大於control貓。


我們可以直接定義這隻貓的體積為1喵升。。。


不知道現在回答算不算晚。看了上面幾個答案,感覺很不開心。愚蠢的人類不僅在生活中向喵星人臣服,甚至在技術和科技領域也向他們做出了妥協。

可是你為啥要欺負我們狗啊啊啊啊!!(雖然我也給那個狗密度近似的答案點了贊)

我認為,準確測量貓的體積是可以的。同時不對貓造成驚嚇和傷害也並非不可能。首先,我們要測量貓的重量,這步並不是很困難,就不細說了。下一步,也是目前公認最困難的一部分,就是測量貓的密度。

大家都知道,物體浸泡在比自己密度高的物體中時會上浮,而在密度較低的物體中會下沉,由此,我思考出了貓密度的計算方法。

這時候細心的小朋友肯定會說:

「哎藍狗哥,記得不要驚嚇或者傷害貓哦!」

沒問題。

  • 首先,我們需要一個常見液體密度表:

  • 再而,我們需要諸多呈密度梯度的液體。

  • 然後,我們需要一個比貓略大的桶。

聰明的小朋友們肯定在這時候已經明白我們要做什麼了。對了!就是二分法測密度。

步驟如下:
1. 把液體盛入大桶,將貓咪扔進桶里。

2. 觀察貓咪的狀態,這時候貓咪會呈現兩種狀態:

若得到A結果,下次就換以密度更低的液體;
若呈現B結果,下次就換以密度更高的液體。
(精準的液體密度可由多種液體相勾兌得到。)
再次實驗。

再次實驗。

再次實驗。
.....這時候細心的小朋友肯定又會說:

「哎不對啊藍狗哥,這樣還是會傷害到貓啊!」

其實上述方法我們並不需要執行,這種二分法的作用只是:看起來很殘忍。
學會了上述方法,你只要把這些步驟講給貓聽,或者像我一樣畫給貓看....
你的貓會說:「等一下鏟屎噠!我招!我的體積是....」


因為貓是液體,所以把它倒進量筒里,眼睛平視凹頁面最低處,得到的讀數就是體積。

補充:有不知道那麼為什麼是液體的,請看~

看完後大家不要把自己家貓往瓶子里塞哦~

19日補充:
盆景貓只是謠言。大家可以看百科的解釋。(算了還是刪了)
20日:
我不贊成把貓泡在水裡測體積。即使你無視了它們的恐懼,當你把它從水裡撈出來的時候…

感受到他們的不爽了嗎?
22日:
狗狗們聽說,有人要拿它們浸水代替貓的密度~

狗狗們的優雅腫么辦~
所以啦,只要趁貓貓優雅的睡覺的時候~

趕緊去親兩口啊!
千載難逢的機會啊!
測什麼體積!&>__


麻醉後3D掃描,然後在電腦上愛計算什麼就計算什麼。不行再來個CT


你只需要一個這玩意兒。
據評論區反映,若太鬆了,不能夠把貓咪提起來是無效的。

和一隻年青的貓。

輕輕夾住貓的後頸。

然後你的貓貓就被"定"住了。

不光是貓,在很多動物身上都有這種現象。

別問我怎麼知道這個秘密,每一個渣虎都深諳此道。

接下來,你的貓就隨你擺弄了。

哎呀,好像上面那貓發錯了,這個才是。

俄亥俄州立大學(Ohio State University)臨床獸醫學的教授Tony Buffington帶領的小組就研究了出現在貓咪身上的這個現象. 當然, 除了好奇以外, 也是為了探索使用這個方法穩定貓咪進行醫療診斷的可行性. 實驗邀請了31隻1到5歲不等, 不同性別的貓咪參與, 被夾住後脖的貓咪會停止活動, 拱起背脊, 收起尾巴到兩腿中間。


經過對貓咪各項生理指標的測試, Buffington和同事們發現, 貓咪這種行為並不是由害怕或者疼痛引起的. 貓咪的瞳孔並沒有放大, 心跳速度也沒有加快, 呼吸速度也正常——受到驚嚇的動物一般會產生的生理反應貓咪都沒有出現. Buffington小組得出的結論是, 貓咪出現這種行為與」方便貓麻麻移動小貓有關」.


化學狗覺得以現在的天平的精確程度,完全不需要排水,排空氣法一樣能測,只不過設備比較貴而已。
------
經過本化學狗一個小時的研究還真想出一個基本靠譜的日常可行的方法,不過要畫圖說明,先佔個坑,下班回去再答。
------
來更新說好的答案。

其實吧,要測不規則物體的體積,大家第一反應就是排水法嘛,阿基米德同志發明的嘛,把國王的王冠往自己的洗澡水裡面泡一下嘛...但是喵爺豈是任由你們隨便往水裡泡的。

大方向很簡單,無非就是把排水法改成排空氣法而已,借用現代的精密儀器並不難稱量,但以下要說的主要是怎麼用簡單的儀器來實現。

先給個公式出來,高中化學學過的,理想氣體狀態方程;
PV=nRT (P是壓強、V是體積、n是氣體摩爾量、R是常數、T是溫度)

接下來給出實驗裝置示意圖(體現我美術功力的時候到了...恩)

如圖,我們先解釋裝置再解釋原理。
裝置底部一個內部體積已知的大容器,喵爺被放在裡面...別問我怎麼讓喵爺進去。
上面是一個細長細長的管(有刻度),圓形的東西是個重量適當的密封活塞。
別問我多細多長,也別問我什麼重量是適當,我只是說原理...恩

以下是原理,當然我們會用到一些假設,但是不至於假設真空,也不需要喵爺是球形...總體來說是可以接受的假設。

第一步如左圖,由於內部的氣體有壓強,所以活塞是受氣體壓力頂著懸浮在細長的管道內的。
(為了方便,我們先假設活塞和管道內壁沒有摩擦,這只是單純偷懶,因為有摩擦也無所謂,只是計算時候多個參數而已,並無太大影響)

具體參數:
假設底部大容器的內部體積為V0,喵爺的體積為X,活塞重量m,上部細長管內部截面積S,活塞距離底部大容器的距離為L0。根據受理分析活塞m受到的重力=氣體對它的壓力的時候才會平衡。
接下來是理想氣體狀態方程的引入PV=nRT嘛,對應的左圖中:

壓強P×截面積S=活塞重力m×g;即PS=mg→P=mg/S(1)
體系內空氣體積V=容器內部體積V0-喵爺體積V+細長管內空氣體積(L0×S);即V=V0-X+L0×S (2)

然後n保持未知,R是常數,溫度就按照室溫好了。
注意,從左圖到右圖的過程中我們假設環境溫度並不變化。
所以,PV=nRT這個等式右邊是恆定的狀態。即PV=k(k是固定的)

所以綜合(1)(2)我們得到(mg/S)×(V0-X+L0×S)=k(方程A),即左邊的值是固定的。
其中,m、S、V0、L0都是可以測出的,g是常數,所以等式中還有2個未知數,即X和k。

然後我們第二步改成右圖那樣,用一個已知的力F壓活塞,活塞下移一個距離,從而活塞距離底部容器的距離縮短為L1。計算原理和上面一樣我就不詳細說了,用數學書上常見的話說:

顯然或易證:[(mg+F)/S]×(V0-X+L1×S)=k (方程B)
上式中m、S、V0、L1都是可以測的,F是你自己設定的所以也是已知。
於是就只有兩個未知數X和k了。

綜合方程A、B,兩個方程兩個未知數,喵爺的體積X就有了。
X=[(mg+F)(V0+L1×S)-mg(V0+L0×S)]/F
(我的渣數學萬一解錯了的話我也沒辦法)

其實上面說那麼多只是為了顯擺我還會列小學生的二元方程而已...
(其實我覺得我上面的模型建的不好...因為是憑藉直覺直接建的,研究研究應該還可以簡化)

上面的其實比較偏物理,如果動用化學方法更簡單,以下是方法二:

沒有方法二了,上面那句話是騙人的。
恩...我又為人類破解了一項喵星重大機密....

人類のために、心臓を捧げよう

---------------------------
對模型的一些其他解釋(懶得看的也可以不看)
之所以要設細長管是因為方便讀數,因為只要上面的管子夠細夠長,稍微用一點力活塞就能向下移動相當一段距離方便度數,同時容器內壓力也幾乎不怎麼增大,喵爺不會感到不適;同樣地,為了這個目的,只要密封性良好,底部的容器可以做大一點。這樣就可以滿足【優雅】這個需要了...恩

改變氣體壓強的方式多了,不一定要像我那樣用力F神馬的,你改溫度也可以,思路都一樣。

剩下的還有一些廢話,主要是這個模型還是假設了一些【理想狀態】的,不過並沒有太大影響,用我們化學狗的外標法都可以解決掉誤差影響,但今天太晚了,關於這些的具體探討以後再補充。


我一年前就回答過這個問題,,扔彩虹糖里


以貓能自主鑽進去的最小盒子的體積為準


我想到一個絕妙的辦法,可惜這裡太小寫不下。


我覺得,還是直接問他可行性最高。


「喵⊙▽⊙」
【你有多大,具體點】
「喵o(︶︿︶)o」
【不好好鏟屎你又犯什麼病】
「喵(=θωθ=)」
【來來來讓我量一下】
「喵嗷(︶^︶)」
【你給本王滾】


一個設計良好的貓類型必然封裝了求貓體積的方法,調用之即可


謝邀

把貓咪放到一個裝滿這種顆粒泡沫的箱子里然後測量一下漫出來的泡沫的體積


我們不妨假設喵是球形的,這樣

boxiecat.com

————————————好了說正經的————————————


貓的體積是不能浸水量的,因為 你家的喵洗澡之前可能長這樣:

ichww.com
哦不,這樣:

pinterest.com
但是洗完澡就變成了這樣:

blog.sohu.com
嗯,如何?

www.evilmadscientist.com/2007/computing-the-volume-of-a-cat/

你真的覺得那個泡完水以後長得像老鼠一樣的東西是你家喵嗎?

————————————————

正確方法是找個箱子,等喵自己鑽進去(應該不會太久),太大就換一個小的,小了同理。直到找到了一個合適的箱子,再去量一下箱子的體積。

嗯哼


做一個透明(為了讓喵星人保持優雅)密閉的貓籠,體積V1,連接一隻壓力恆定的高壓小氣瓶(體積忽略不計)和一隻高精度的氣壓表。
在一個標準大氣壓下,打開貓籠聯通大氣,然後關閉貓籠,打開氣閥,測量貓籠內的氣壓並記錄為P1...
打開貓籠放氣,氣瓶重新充氣,將喵星人請進貓籠,關門,開氣閥,測量並記錄貓籠內的氣壓為P2...
由此可以計算:P1V1=P2(V1-V2)
喵星人的體積V2=(P2V1-P1V1)/P2

回答完畢...


作為一名物理專業的高材生,我可以給出若干個公式並且聲明只適用於真空當中的球形貓。


推薦閱讀:

21 世紀最新出現了什麼物理界的難題,就好像 20 世紀的兩大烏雲一樣?
如果天文望遠鏡可以看到140億光年以外的東西我們會看到什麼?
進去眼睛的光線或者說光子去哪兒了?另一種黑洞?
龍捲風的能量是哪裡來的?
為什麼日本人能得十多次諾貝爾物理學獎?日本的物理科研有哪些值得借鑒的地方?

TAG:數學 | | 物理學 | 冷知識 | 如何優雅地X |