第四部分—得到所有其他三個(gè)點(diǎn):
同上面一樣,你有幾種情況要考慮。
第一種情況比較簡單。第3點(diǎn)位于邊EF上。在這種情況下,點(diǎn)D4與點(diǎn)D3位于同一位置。
另一種情況比較難一點(diǎn)。點(diǎn)D3位于邊CE上。你需要計(jì)算D3和D4。
或者:
這里,我們需要一些三角函數(shù)來獲得所有的數(shù)值。嗨,一定有更有效的方式來編碼,我真是沒興趣再做一遍。:(
我只需要提醒你一件事: Flash的坐標(biāo)系開始于左上角,逐漸向下擴(kuò)展到右邊。
對于一個(gè)數(shù)學(xué)家來說,求得所有的點(diǎn)很可能只需要幾分鐘,但是我卻花了整整一個(gè)上午。如果你想做,你可以自己做,或者只需拷貝這些代碼。
//用D1和F來找到其他的點(diǎn) function getD234(){ len = _root._root.getDist( pfx, pfy, _root.stage.d1._x,_root.stage.d1._y); len1 = len/2; len2 = (pfx - _root.stage.d1._x)/2;
_root.stage.d2._x = pfx - len1*len1/len2; _root.stage.d2._y = pfy;
len2 = (pfy - _root.stage.d1._y)/2; len3 = len1*len1/len2;
_root.stage.d3._x = pfx; _root.stage.d3._y = pfy - len3;
// 檢查D4是否和D3在同一個(gè)位置 if (_root.stage.d3._y < pey){ ptx = pex - (pfx - _root.stage.d2._x)*(pey - _root.stage.d3._y)/len3; pty = pey;
len = _root.getDist(_root.stage.d3._x, _root.stage.d3._y, ptx, pty); len1 = (pex - ptx)*(pey - _root.stage.d3._y)/len;
len2 = len1*len1/(pex - ptx); _root.stage.d4._x = pex - len2*2;
len2 = len1*len1/(pey - _root.stage.d3._y); _root.stage.d4._y = pey - len2*2;
_root.stage.d3._x = ptx; _root.stage.d3._y = pty;
} else { _root.stage.d4._x = _root.stage.d3._x; _root.stage.d4._y = _root.stage.d3._y; } }
哇,現(xiàn)在我們快完成了,繼續(xù)!
出處:5D多媒體
責(zé)任編輯:qhwa
上一頁 第三部分-初始化 下一頁 第五部分-繪制 mask shape
◎進(jìn)入論壇Flash專欄版塊參加討論
|