為應付一次量測好幾種量測點定義,這裡的設計,為了在不受手持量測影響準確度的情況,量測的速度加快。
舉例的情境
在此使用兩個量測項目,共十八個點做例子。- 白色9點,離邊4cm
- 黑色9點,離邊1/3
定義「簡稱」
白色:R,黑色:B白色9點:R9
白色9點第3點:R9_3....依此類推
定義「圖例箭頭」
藍色:從1離開紅色:跨九宮格
其它:不定義。
原本的順序
D1→W1→D2→D3→D7→D4→D8→D5→D6→D9(結束D的量測)→W2→W3→W7→W4→W8→W5→W6→W9(結束W的量測)
優點
中心點先量,可先卡中心點規格缺點
左右來回多趟,大尺寸量測需花來來回回的時間。Probe移動位移大
設計的量測順序
B1→R1→B2→R2→B3→R3→B4→R4→B5→R5→B6→R6→B7→R7→B8→R8→B9(結束B的量測)→R9(結束R的量測)
優點
中心點先量,可先卡中心點規格打破量測量測的分界,將所有點以區域分群,成為9群,各群中的各點再依序量完,左右來回一趟,Probe移動位移小。
缺點
作業人員不習慣,操作過程畫面背景色閃動幅度大。如何設計
在DNA轉RNA的過程中,有一個Area順序,在TranScripter::setSquence裡,設定其順序,再利用STL的sort做排序就可以做到了。
void TranScripter::setSquence(Cartridge2& _Car, const std::vector<Nucleotide>::size_type& size, const int& msrItemIndex) const
{
const CPoint center(m_nScrmH/2, m_nScrmV/2);
const CPoint carPoint(_Car.GetPointPosi());
const int shift = 5;
const CPoint aP(center.x - shift, center.y - shift),
dP(center.x + shift, center.y + shift);
//從point判斷area code
if (carPoint.y < aP.y)
{
if ( (carPoint.x >= 0 ) && (carPoint.x < aP.x) ) _Car.SetSqncArea(AA_02);
else if ( (carPoint.x >= aP.x) && (carPoint.x <= dP.x) ) _Car.SetSqncArea(AA_03);
else _Car.SetSqncArea(AA_07);
}
else if ((carPoint.y >= aP.y) && (carPoint.y <= dP.y))
{
if ( (carPoint.x >= 0 ) && (carPoint.x < aP.x) ) _Car.SetSqncArea(AA_04);
else if ( (carPoint.x >= aP.x) && (carPoint.x <= dP.x) ) _Car.SetSqncArea(AA_01);
else _Car.SetSqncArea(AA_08);
}
else
{
if ( (carPoint.x >= 0 ) && (carPoint.x < aP.x) ) _Car.SetSqncArea(AA_05);
else if ( (carPoint.x >= aP.x) && (carPoint.x <= dP.x) ) _Car.SetSqncArea(AA_06);
else _Car.SetSqncArea(AA_09);
}
//依area code判斷順序的選擇
if (m_curDnaCellItor->GetMsrPointTotal() == Pn21)
if (msrItemIndex+1 == m_curDnaCellItor->GetMsrPointTotal())
_Car.SetSqncFrm(1);
else
_Car.SetSqncFrm(size + 2);
else if ( (m_curDnaCellItor->GetMsrPointTotal() == Pn4) ||
(m_curDnaCellItor->GetMsrPointTotal() == PnGamma) )
_Car.SetSqncFrm(size);
else
{
if (msrItemIndex < m_curDnaCellItor->GetMsrPointTotal()/2) _Car.SetSqncFrm(size + 2);
if (msrItemIndex == m_curDnaCellItor->GetMsrPointTotal()/2) _Car.SetSqncFrm(1);
if (msrItemIndex > m_curDnaCellItor->GetMsrPointTotal()/2) _Car.SetSqncFrm(size + 1);
}
}
沒有留言:
張貼留言