前言:
做的程式需要兩種線,一種是貝塞爾曲線,一種是折線,貝塞爾線比較簡單,這裡主要說折現,折現的折點不能出現的過多,否則會出現上面的情況
一般這種折現會出現兩種情況,我管著兩種情況叫做凸點,和延伸點(ps:純粹亂起),如上圖所示,左上角的是「凸點」,右下角是「節省點」,折點過多主要是因為這兩種原因造成的,我們可以對這兩種折點進行優化,達到去除折點的作用,下面是一些**片段
合 並凸點 節 省 點經過一番調整,效果如下private
void
combine()
else
if ( i == controlpoints.count - 1
)
else
case
brokelinepointdirect.right:
case
brokelinepointdirect.up:
case
brokelinepointdirect.down:}}
i++;
}#region 注釋
#region 凸點
/*找到有效凸點
*/if ( leftlist.count > 0 && rightlist.count > 0
)
else
}/*對稱凸點
*/else}}
}}if ( uplist.count > 0 && downlist.count > 0
)
else
}/*對稱凸點
*/else}}
}}foreach ( controlpoint controlpoint in
removecontrolpointlist )
#endregion
#region 效節省點
/*找到有效省節點
*/list
removecontrollist = new list();
for ( int j = 0; j < leftlist.count; j++)}}
for ( int j = 0; j < rightlist.count; j++)}}
foreach ( controlpoint controlpoint in
removecontrollist )
#endregion
#endregion
}
永遠不會有超過4個的折點(我們判斷是4個),去掉折點標註,效果不錯,注意上面的方法,比如給每個折點加入乙個enum,描述為現在折點的方向,才能進行優化。比如「凸點」的確認方式,就是先上 隔1個 再下 或者 先下 隔1個 再上 或者 先左 隔乙個 再右 或者先右 隔乙個 再左 ;節省點的確認方式,就是 先左 隔乙個 還是左 或者 先右 隔乙個 還是右 即可 上下不用判斷 或者 判斷上下也可以,不判斷左右
ps:可惜最後和要做的效果不符,所以推翻重做,發博文是因為博文太少了,來充數,呵呵,見笑
後續:悲催周五做了一天的工作算是白做了,週六在家加班又改制了乙個好的使用體驗的,程式設計師就是悲催啊
2023年7月28日 於鄭州 天氣:晴 晚上在家加班中。。。
如何在 JavaScript 中更好地使用陣列
本文短小精悍,我保證。在過去的數個月裡,我注意到在我審閱的 pull request 中有四個 關於陣列使用的 錯誤經常出現。同時,我自己也會犯這些錯誤,因此有了這篇文章。讓我們一起學習,以確保以後能正確地使用陣列方法!use strict const characters ironman blac...
如何在Word2003中畫箭頭
word雖說不是什麼製圖軟體,而且製圖的工具也不是很強大,但是我們經常製作文件時可能會用它畫一些簡單的圖形,比如 畫圓形 方塊 畫直線 畫箭頭等等。本次就來為大家詳解,如何利用word2003畫出各種各樣的箭頭來。word2003畫直線箭頭和斜線箭頭這個是最簡單的,一般在word畫圖工具裡面預設就可...
如何在程式中延時
方法一 使用sleep函式,如延時2秒,用sleep 2000 方法二 使用sleep函式的不利在於延時期間不能處理其他的訊息,如果時間太長,就好象宕機一樣,利用coledatetime類和coledatetimespan類實現延時就不會出現那樣的問題 coledatetime start time...