基於QT繪製可互動性的Bezier曲線

2021-09-20 04:07:51 字數 1327 閱讀 4713

因為專案需要,要做一款類似ai裡面的曲率工具出來,其實也類似photoshop裡面的鋼筆工具,所以寫了個demo來演練一番。

之前是不懂bezier的,但是網上找到的原始碼都是固定點的,但無論是鋼筆工具還是曲率工具都是要能與滑鼠鍵盤互動的,故看著固定點的demo,自己重新做了個滑鼠互動事件的出來,鍵盤事件一樣的,類推。

可惜最後做出來並不是需求所要的樣子,所以這個demo也就沒用了,放上來給同志們參考吧。

而本程式也有乙個點沒有完成,完成起來不難,只是這個demo用不上,筆者也不想寫下去了。直接看效果圖吧。

綠線代表上一次畫完的樣子,紅線代表隨著滑鼠移動,曲線實時變化的樣子。

1.直線:

2.二次貝塞爾曲線:

3.三次貝塞爾曲線:

4.沒有四次了!只有三次貝賽爾曲線。

從下面的效果圖看,紅線只會變成依據最後三個點變成三次貝塞爾,而之前的曲線也只儲存了倒數第四到倒數第二之間的三個點,之前的點形成的曲線都沒有儲存了。

這也是本程式沒有完成的地方!有需要的同志可以自行完成,並不難,不信可以來看看資料結構!

1.資料結構:

由上可看,其實就是m_veccurvept和m_vecctrlpt兩個變數還沒有填進值

2.互動函式:

只用到了兩個,滑鼠釋放和滑鼠移動。

3.運算函式:

如名,乙個算二次貝塞爾,乙個算三次貝塞爾。

參考公式出自這裡:

還有乙個插值函式,是對直線插值的,ps:直線插值並不難,但這個寫得也不太好。

為什麼插值呢?是為了匹配上面的資料結構。

大體就是這樣了,計算機圖形學挺難,不說了,好好學習天天向上!

【完畢】

利用替換變數提高Oracle互動性(define)

想要提高oracle互動性,通過定義與使用替換變數就可以實現了,下面就為您詳細介紹利用替換變數提高oracle互動性的方法,供您參考。一 定義與使用替換變數。在oracle提供的相關工具中,如sql plus管理平台中,允許資料庫管理員採用替換變數來提高sql語句的靈活性。替換變數的定義跟普通變數的...

Discuz X2專題評論 增加專題互動性

沒有評論的專題不是好專題,沒有評論的社ljxqann區不具備 屬性。就如同四大門戶 之一的網易,以 無回帖 不新程式設計客棧聞 作為口號,以 犀利 獨特 的評論而保持著自己的特立獨行,吸引了一大批 為看評論而來 的忠實使用者。站長們雖然不需要像網易那麼專業,但也應當根據社會熱點 商業需求而適當的進行...

通通玩blend美工(5) 旋轉木馬,互動性設計

這一篇偏向於邏輯的比較多,放在這個系列裡會不會欠妥呢?在中國互動性設計也是美工的份內職責哦 所以沒有blend基礎的人也可以看懂這篇文章,不過要用到初中的幾何知識哦 親 相信很多人都在手機或者網頁上或者ktv的點歌系統裡看到過旋轉木馬的目錄導航,這個是如何做的呢?改變左上角的資料,會有意想不到的效果...