2018年1月28日

3D列印半兩錢模型

教歷史的阿芬老師看我做了一些細胞分裂的餅乾模型,就問說可不可以做個半兩錢模型啊?

你的需求我聽到了,當天就立馬用網路搜尋的圖片做出了半兩錢的模子啦,專有名詞叫做「錢範」。

檔案位置
https://www.thingiverse.com/thing:2772613


說明:摘錄自維基百科
「半兩,是中國戰國時代到漢朝前期廣泛使用的一種銅制貨幣,圓形方孔,稱之為方孔錢。秦朝將其作為全國強制推行的統一貨幣,從而確定了中國其後各朝代銅錢式樣。」






用OpenScad畫出雙曲面模型

會想畫出雙曲面模型,是因為這樣的結構玩具(或動畫)
https://www.thingiverse.com/thing:1729011


圖片來源:https://www.thingiverse.com/thing:1729011

旋轉一根棒子,居然可以讓棒子通過一個彎曲的空洞。

其實那個有洞的平面是雙曲面的一部分,為了理解這個現象,我用OpenScad寫了一段程式,做成了一個雙曲面模型,放在thingiverse。
https://www.thingiverse.com/thing:2764548

雖然看起來很像水果網袋,不過這可是雙曲面模型,模型中的每一根都是直挺挺的棍子,沒有扭曲或彎曲。每根用同樣的角度旋轉、位移,就成了這個樣子。








為了更好理解,就請出棉花棒來說明吧。棉花棒都是直直的,把它們有規律的旋轉擺設後,就成了一個雙曲面模型。想像一下,有一個垂直地面的板子和這個模型相交,板子扣掉交集的部份後,就可以得到一個有彎曲空洞的板子,那就是文章最上面那個模型的基本結構了。










澄清石灰水的實驗紀錄2018

去年製備的澄清石灰水,今年要用的時候,發現在寶特瓶裡的石灰水多了好多東西。水面上飄了好多針狀結晶,而瓶子底部更是滿滿的結晶。




把瓶子剪開後倒出來,就是一堆結晶。而幾個寶特瓶的底部都已經破裂了,石灰水都流光了。



這也讓我觀察學習到幾件事情,那些針狀結晶推測是氫氧化鈣的結晶,如Google圖片搜尋


之後再提前製備石灰水時,如果要擺很久(我擺了一年),不要使用寶特瓶,由於PET不耐鹼,最後底部就會裂開(不過為什麼只有底部裂開?難道底部會比較濃?)

最後,今年給學生吹二氧化碳的時候,我改用了透明塑膠杯,覺得比玻璃燒杯或試管好用一些。每次用玻璃燒杯後,只要用完沒有立刻洗,十幾分後那些碳酸鈣就會累積在燒杯壁上,最後得拿稀鹽酸出來洗才行。而碳酸鈣相對來說不太容易沈澱在塑膠杯上,所以之後再用水洗和用手搓,都可以把碳酸鈣洗掉,重複使用上也算方便。


以葉錠進行光合作用實驗的2018紀錄

上學習最後的九年級專題,讓學生進行了以葉錠進行光合作用的實驗。實驗的步驟如這篇文章所示《用浮沈葉錠測量光合作用和呼吸作用

此次實驗的葉子是由學生自行去採集,也因此發現有些葉子不太適合做這實驗。比方說有學生使用睡蓮的葉子,但在一開始的製備程序-「放入針筒中抽氣,讓葉子沉底」就很難成功,推測可能是睡蓮的結構所致,但原因為何,還需要再研究一下。

也有學生採集掉落的旅人蕉葉片,而這在實驗進行過程中,有些也很難在針筒抽氣過程中陳底,而在後續實驗中,也幾乎沒有浮起。

在這些材料中也觀察到,葉子的單位重量似乎是影響這實驗的關鍵之一。由於葉子要浮起需要借助吸附在葉錠上的氧氣,而單位重量較重的葉子就不太容易浮起來。由此我想日後若要有較高的成功機率,採用草本的植物也許是比較可行的。這次的五組學生實驗中,唯一一個成功的組,使用的是軟枝黃蟬的葉片(可能是,因為我只有詢問在哪裡採集的)。

另外,由於本來要使用打孔器打葉錠的,但是我遍尋不著打孔器,所以就讓學生用剪刀剪成方塊形狀。











學生使用的紀錄表,是我用Excel畫出時間橫座標和葉片縱座標的空白圖表。能夠畫出空白圖表,其實是我輸入的紀錄點都是負值,但是縱座標設定成正值的,這樣就能做出空白的。

縱座標是浮在水面上的葉片數量,每當一片葉子浮起或降下,學生就紀錄時間,藉由浮起和沈降的速率,估算光合作用和呼吸作用的速率。


最後一提的是,學生謙毅有問起這篇《用浮沈葉錠測量光合作用和呼吸作用》為何使用50%的浮起時間或降下時間作為計算的數值,當時我沒有講清楚。其實使用50%,就是應用了中位數,可以減少極端值的干預。

如果最後一片葉子花了其他葉子三四倍時間才浮起,那麼若是用平均值來計算,就會高估了這個數字,但是運用中位數就不會受到影響了,像LD50半數致死量也是一樣的概念。其實像在計算種子發芽時間,也可以加入中位數來呈現數值。這在滿是個體差異的實驗中,是一個很重要的估計量




2018年1月14日

3D列印人體器官餅乾模子

如前篇所述,就是偶爾想到就來畫3D列印的餅乾模子,目前已經做了心臟、肝臟、腎臟
檔案下載處:
https://www.thingiverse.com/thing:2756583



這些都是先從手繪稿開始的,這是肝臟加上小小的膽囊




印出來的腎臟也拿來壓土司







心臟的模型原稿在上



用餅乾模子壓了紙黏土之後,再做一些加工,把它變得更像心臟,然後用藍色線把心室、心房、血管接在一起,日後用這模型講解心臟,也許可以更清楚直觀。


3D列印細胞分裂餅乾模子

前幾週,有時間就隨手畫了一些餅乾模子,這個是細胞分裂的
其實這也是參考別人設計的成品,然後自己畫出的

我一開始設計的是底板全封起,後來在朋友建議下,也把底板設計成半開放的,方便壓模時手可以伸進去把麵團或黏土團推出,兩種版本我都放在最上面的檔案下載處,不過我自己印那種半開放的時候,實在印得不順利。





這是拿來壓紙黏土的









也可以拿來壓土司麵包







用python+OpenCV做「如果鳥飛行留下軌跡」

前幾天看到國家地理的網站有一篇If Birds Left Tracks in the Sky, They’d Look Like This

攝影師用特殊的攝影技巧拍下鳥在空中移動的軌跡

我看著看著就好想也做看看啊,不過怎麼做呢?三年前我用imagej做過類似的事情
《imagej將時間資料視覺化》

當時的作法先用ffmpeg把影片轉成圖片之後,再交給imagej做成stack,然後做z軸的投影。這一次呢,我想要用python一次達成,練習看看怎麼做。

要作到這種軌跡圖,得要用到影片才行,然後我想到幾個月前在pyimagesearch這裡看到這篇Long exposure with OpenCV and Python。我就想應該用這種程式處理成長時間曝光的就可以了吧?結果答案並不是這麼簡單。

「長時間曝光」於是把影片中每幀影格的像素數值做平均,為了方便說明,先假設影片都是灰階的,像素數值是從0-255,某個影片中一共有100幀影格,其中左上角拍攝天空的一個像素,在一幀影格的數值有黑鳥,數值為0,另外99幀影格因為鳥飛過去了,都是拍到天空,數值是255。如果用長時間曝光的方式來做,那麼那個位置的像素數值就會是(0x1+255x99)/100=252。本來我們期待要拍到鳥的地方,結果變成只是稍暗的天空。


所以作法應該是怎樣呢?每幀影格中出現的鳥(像素數值很低的範圍)都應該被保留下來,這樣才能達到留下痕跡的效果。

想著怎麼做的那幾天,剛好看到大愛的節目「發現」有不少鳥飛行的片段,我就用他們的影片寫了程式玩玩,果然這樣的想法可行。

如果使用的影片幀率更高,應該就能做出像最上面文章裡的照片那樣






補充,週末傍晚剛好看到有人在放鴿子,順道拍了五秒影片來做鳥軌跡





執行的程式如下,須安裝opencv
source activate cv
python track.py -v bird.mp4 -o bird.png
------------track.py--------------------------------
# import the necessary packages
import argparse
import cv2
import numpy as np

# construct the argument parse and parse the arguments
ap = argparse.ArgumentParser()
ap.add_argument("-v", "--video", required=True, help="path to input video file")
ap.add_argument("-o", "--output", required=True, help="path to output png")
args = vars(ap.parse_args())

cap = cv2.VideoCapture(args["video"])


width = int(cap.get(3))  # float
height = int(cap.get(4)) # float
resultFrame = np.empty((height,width,3), dtype=np.uint8)
resultFrame.fill(255)

while True:
    boolen, frame = cap.read() # get the frame
    resultFrame = np.minimum(resultFrame,frame)
    cv2.imshow('final',resultFrame)

    k = cv2.waitKey(5) & 0xFF
    if k == 27:
        break
cv2.imwrite(args["output"],resultFrame)
cap.release()
cv2.destroyAllWindows()

2018年1月6日

氯化亞鈷試紙要怎麼乾燥啦

記得第一次教書時,遇到氯化亞鈷試紙的實驗時,一開始要先把它弄乾才能給學生做實驗啊。那時候看到實驗室準備了很多吹風機,喔,原來前輩老師們是用吹風機吹乾它們的。

首先得用鑷子夾好它們,再用吹風機吹它們,這都還好。但如果讓學生用過的試紙(或是分散的試紙)要乾燥,那就有點頭痛了,第一是不容易全部夾好,所以有一次我乾脆放在燒杯裡用吹風機吹,那次很笨,因為吹下去就像仙女散花一樣,滿天都是氯化亞鈷試紙。

後來開始嘗試不同的乾燥方式,像是拿酒精燈的明火來烤,結果就燒掉了,或是拿電磁爐乾燒鍋子幾秒鐘,試紙就放裡頭,然後一不小心也是會燒焦。

終於後來找到方法了,就是用電熱杯墊,擺在上面不用顧著它,也不用擔心會燒過頭,我想應該是最終的解決方案了。