C 編寫r軟渲染視窗

2021-10-08 05:15:31 字數 1329 閱讀 8013

之前使用c#編寫了乙個立方體的渲染視窗。效果如下:

粗糙地實現了乙個立方體基本漫反射和全域性光。讓立方體隨時間旋轉。

本文主要講一下攝像機部分的**,和乙個編寫過程中的小問題。

private double posx,posy,posz;//攝像機位置

private double xangle, yangle, zangle;//攝像機旋轉角度

private vector4 xaxle, yaxle, zaxle;//攝像機座標空間的下x、y、z軸在世界空間中的表示

private double fov;//視野角度

private double aspect;//寬比高

private double near;//近裁距離

private double far;//遠裁距離

攝像機類的屬性主要包括攝像機位置、攝像機旋轉角度、攝像機座標空間的下x、y、z軸在世界空間中的表示、視野角度、近裁距離和遠裁距離。

沒啥說的,構造器。

public camera() 

public camera(double x,double y,double z)

呼叫此方法將返回乙個世界空間到攝像機空間的變換矩陣。

public matrix4x4 getworldtoview()

呼叫此方法返回乙個攝像機空間到透視裁減空間的變換矩陣。

public matrix4x4 getclip()

裁減空間變換矩陣:

來自網路

矩陣將xyz軸分別進行了縮放,使物體呈現近大遠小的效果,並且滿足-w≤x≤w、-w≤y≤w、-w≤z≤w的頂點才能不被剔除或裁減。

在編寫過程中遇到個問題,立方體在旋轉過程中不斷的閃爍。查閱網路發現是沒有開啟雙緩衝。只要在窗體類中的load方法中增加一下語句即可解決:

this.setstyle(controlstyles.optimizeddoublebuffer | controlstyles.resizeredraw | controlstyles.allpaintinginwmpaint, true);

this.updatestyles();

R函式編寫基礎

編寫函式 第一部分 1 print str 列印函式,列印出字元內容 2 sprintf hello,s yjz s是佔位符,3 函式引數以及函式呼叫 hello.persion function first,last 4 預設引數 hello.persion function first,last...

R語言 函式的編寫

r語言實際上是函式的集合,使用者可以使用base,stats等包中的基本函式,也可以自己編寫函式完成一定的功能。但是初學者往往認為編寫r函式十分困難,或者難以理解。這裡對如何編寫r函式進行簡要的介紹。函式是對一些程式語句的封裝。換句話說,編寫函式,可以減少人們對重複 書寫,從而讓r指令碼程式更為簡潔...

(R語言)編寫自己的函式

10.1 函式的定義 name function arg 1,arg 2,expression expression是乙個r表示式 通常是表示式語句組 並使用引數arg i來計算出乙個數值,表示式的值就是函式的返回值。函式呼叫的形式通常都是name expr1,expr2,10.2 定義新的二元操作...