Opengl中的三維數學二(點和向量的簡單運算)

2021-07-05 13:43:50 字數 1511 閱讀 2921

向量和點的運算是立體幾何中最基本也是最常用的運算,有時候我們可以把向量想象成點,並且運用相同的公式,通過向量的運算可以把一些很複雜的事情變的很簡單,其中的神奇之處還要自己體會。

點和向量的加法運算

向量加的幾何意義

//點和向量相加

void d3plus(const float p1[3]/*(in)*/

,const float p2[3]/*(in)*/

,float p_out[3]/*(out)*/)

}這個函式比較簡單,將三個向對應相加即可

點和向量的減法運算

向量的減法運算其實就相當於加法運算,a-b=a+(-b)

//點相減

void d3cut(const float p1[3]/*(in)*/

,const float p2[3]/*(in)*/

,float p_out[3]/*(out)*/)}

向量的乘法運算

a*b=cosα*|a|*|b| 

幾何意義相當於a向量在b向量上的投影長度乘以b向量的投影長度,這個兩個乘積其實沒有什麼意義,但當其中乙個向量轉換為單位向量之後就有他的意義了

通過變換可以獲得

cosα=a*b/(|a|*|b|)

這樣可以求出兩個向量夾角的余弦值,進而求出兩個向量之間的夾角

float d3multiple( const float p1[3]/*(in)*/,const float p2[3]/*(in)*/ )

向量乘以乙個數字

//點乘以乙個數字

void d3multinum(float p1[3]/*(in)點*/

,float num/*(in)乘以的係數*/

,float p_out[3]/*(out)輸出點*/)}

//點除以乙個係數

void d3removenum(float p1[3]/*(in)*/

,float num/*(in)*/

,float p_out[3]/*(out)*/)}

//向量的長度

float d3length(const float p_in[3])

//得到兩個點之間的距離

float twod3dist(const float p1[3],const float p2[3])

//將乙個向量轉化為單位向量

void d3unit(float p_in[3]/*(in)*/

,float p_out[3]/*(out)*/)

向量和點的基礎運算函式就這麼多,通過這些基礎函式能延伸出一些複雜的運算,在後面的文章中將會一一講解

Python 畫二維和三維散點同心圓

我們利用python先畫二維的散點圓 我們的圓上的點,採取圓的引數方程來取。我們根據取theta的步長來決定圓上的散點的鬆散度。import numpy as np import matplotlib.pyplot as plt r 1.0 a,b 0.0.theta np.arange 0,2 n...

帶三維團隊半年的一點總結和想法

公司二維團隊和三維團隊由於歷史原因,分別屬於不同的部門,兩者之間關聯甚少。二維團隊與公司業務緊密聯絡,三維團隊相對獨立 偏向平台的開發和市政業務的結合。但是隨著公司業務的不斷擴充套件,前端展示需求的深入,以及二三維一體化的趨勢越來越流行,公司產品上的二三位一體化在去年也提上了議程。在去年年末時公司進...

C語言的二維和三維動態連續陣列分配

本測試純粹為了學習研究,沒有意思去比較c和c 的優劣,或者和其他語言的優劣,因為比起c 我更喜歡c,因為嵌入式的程式還是用c效率高,雖然程式設計有點虐心,在影象處理領域,有時需要動態分配一段記憶體用於儲存影象,大家都知道影象在記憶體中儲存形式都是以連續的一維陣列的形式存放,故平常使用就分配一維空間就...