原创 數據結構---KMP算法(1)

0.簡介 KMP算法,在方法上是一個比較難理解的,以前我只是記住了算法的具體步驟,不理解其中原理,久而久之就忘記了算法具體怎麼做了,最後只留下了KMP這三個字母。學習算法的目的可以有好多種,可以應付應用,可以應付考試,還可以學習細想,形成

原创 數據結構---二叉樹(2)---平衡二叉樹(4 插入)

0.簡介 前面主要的二叉樹理論部分介紹,這裏開始實踐。 1.插入 輸入一個元素,樹在插入的過程中就會調整。 #include<iostream> #include <algorithm> using namespace std; str

原创 數據結構---B樹

0.簡介 B樹對我來說,是一個比較陌生的數據結構,正是因爲陌生,越是陌生就越牴觸,索性來研究一下,其中能學到的不僅僅是B樹,還會有別是收穫。 1.磁盤 說到B樹,基本所有資料都會介紹說其與磁盤上的讀寫和查找數據有關,所以B樹有了這麼個獨特

原创 數據結構---二叉樹(2)---平衡二叉樹(5 刪除)

0.簡介 刪除平衡二叉樹的結點也需要仔細的研究一下。還有代碼上對上一篇打了些補丁 1.刪除 刪除結點後的結構一般有兩種,一類是刪除後不平衡了,一類是刪除後仍然平衡。這兩類別目前對我們來說,沒有什麼區別,因爲前面已經研究過結點平衡調整的方法

原创 數據結構---二叉樹---平衡二叉樹(4 插入)

0.簡介 前面主要的二叉樹理論部分介紹,這裏開始實踐。 1.插入 輸入一個元素,樹在插入的過程中就會調整。 #include<iostream> #include <algorithm> using namespace std; str

原创 數據結構---二叉樹(2)---平衡二叉樹(1)

0.簡介 本次我來簡單做一個平衡二叉樹的推導,意在瞭解平衡二叉樹的旋轉方法是怎麼來的,還有就是我記不住LL,RR這都是啥意思,所以決定找個好理解的方法,應該說是我能理解的方法。 1.平衡二叉樹 平衡二叉樹有個規則,首先是有序,然後就是一個

原创 數據結構---二叉樹(2)---平衡二叉樹(2)

0.簡介 上一篇說到了平衡二叉樹不平衡的一種情況,這次我們來看另一種情況。 1.平衡二叉樹 不平衡的情況 根據上一篇的介紹,對於這種情況,我們先考慮將A節點降低來配合C節點的深度。 調整樹 上圖中,我將C又收回去了,因爲這裏的調整和C

原创 數據結構---二叉樹(2)---平衡二叉樹(3)

0.簡介 前面分析了平衡二叉樹是怎麼調整平衡的,這裏就來解決另一個問題,平衡二叉樹理論爲什麼能成立?難道就不會有怎麼調都不會平衡的情況嗎?一起探究一下吧。 1.平衡二叉樹 我在很早的時候就注意到了一個問題。 二叉樹變形 上圖中是一顆不平

原创 數據結構---二叉樹(1)

0.簡介 本篇博客是爲面平衡二叉樹,B樹,紅黑樹鋪墊,所以這裏就簡單實現創建一個樹。 1.創建樹 代碼中有詳細註釋,就不再寫多餘的句子了。 這個樹的創建是根據左小右大的順序建成。 #include<iostream> #include

原创 學習光線追蹤(13)---改進一下三角形碰撞光線的算法

0.簡介 之前繪製了一面牆之後,發現牆的斜對角有縫隙,找到了原因後,更換了其算法。這裏借鑑下面這篇博客中介紹的隨後一種方法。 參考文章 具體原理就不在重複了。 1.修改 爲了方便對比,我把原來的算法和新的算法都整理成了一個新的函數,這樣編

原创 學習光線追蹤(18)---鏡面反射貼圖

0.簡介 前面我們實現的鏡面反射都是統一的反射指數,但是對於有些材質就不適合有太強的反光效果,通過鏡面反射紋理來實現不同部位的反射效果不同 1.添加紋理 這裏和紋理的使用差不多,將原來的參數替換成圖片,這裏的圖片應該是一張灰度圖如下圖。

原创 學習光線追蹤(17)---BUG修改

0.簡介 之前就顧着一直寫來着,中途出現了一些小問題,這裏簡單總結一下。 1.盒體繪製 這裏後來我繪製了一個箱子,結果出現了神奇的問題,找了很久發現,是在計算箱子最近平面的時候找到平面就返回了,沒有判斷最小距離。所以做了新的補丁。 Ra

原创 學習光線追蹤(15)---併發計算

0.簡介 該來的總會來,隨着場景中的物體數目增加,光線反射的複雜程度增加,計算時間就成了問題,一張4096x4096的圖像生成要好幾十分鐘,這要是在以後加入折射計算,隨機漫反射等估計是看不到結果了。 1.初步併發修改 併發處理,可以適當加

原创 學習光線追蹤(19)---光源[1]

0.簡介 目前我們的程序能模擬一些反射和折射的效果,但是,目前物體可見主要還是由於物體自身發光,也就是材質的light屬性不爲0,從這裏開始,要徹底的實現光源發光,其餘物體依靠光源的光反射光線的方法顯示。 注:貼出源碼與最終源碼可能有所不

原创 學習光線追蹤(19)---光源[2]

0.簡介 上次解決了光源問題,下面我們解決透明物體透光問題。 注:貼出源碼與最終源碼可能有所不同,以最終源碼爲準。 1.透明物體 透明物體受到光照,比較直直觀的就是透鏡效果,放大鏡聚焦這類的,我是這麼考慮的,透明物體也相當於一種光源,只是