向量-向量叉乘向量點(diǎn)乘_第1頁(yè)
向量-向量叉乘向量點(diǎn)乘_第2頁(yè)
向量-向量叉乘向量點(diǎn)乘_第3頁(yè)
向量-向量叉乘向量點(diǎn)乘_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、向量-向量叉乘向量點(diǎn)乘2010年07月28日 星期三 14:33向量(Vector)在幾乎所有的幾何問(wèn)題中,向量(有時(shí)也稱矢量)是一個(gè)基本點(diǎn)。向量的定義包含方向和一個(gè)數(shù)(長(zhǎng)度)。在二維空間中,一個(gè)向量可以用一對(duì)x和y來(lái)表示。例如由點(diǎn)(1,3)到(5,1的向量可以用(4,-2)來(lái)表示。這里大家要特別注意,我這樣說(shuō)并不代表向量定義了起點(diǎn)和終 點(diǎn)。向量?jī)H僅定義方向和長(zhǎng)度。向量加法向量也支持各種數(shù)學(xué)運(yùn)算。最簡(jiǎn)單的就是加法。我們可以對(duì)兩個(gè)向量相加,得到的仍然是一 個(gè)向量。我們有:V1 (x1, y1 ) +V2 (x2, y2 ) =V3(x1+x2, y1+y2)下圖表示了四個(gè)向量相加。注意就像普通的

2、加法一樣,相加的次序?qū)Y(jié)果沒(méi)有影響(滿足交換律),減法也是一樣的。The sum of vectors A+B+C+D點(diǎn)乘(Dot Product)如果說(shuō)加法是憑直覺(jué)就可以知道的,另外還有一些運(yùn)算就不是那么明顯的,比如點(diǎn)乘和叉乘。點(diǎn)乘比較簡(jiǎn)單,是相應(yīng)元素的乘積的和:V1( x1, y1)V2(x2, y2) = x1*x2 + y1*y2注意結(jié)果不是一個(gè)向量,而是一個(gè)標(biāo)量(Scalar)。點(diǎn)乘有什么用呢,我們有:A B = |A|B|Cos( 3)。是向量A和向量B見(jiàn)的|B。這里|A|我們稱為向量 A的模(norm),也就是A的長(zhǎng)度,在二維空間中就是|A| = sqrt(x2+y2)。這樣我們

3、就和容易計(jì)算兩條線的:Cos( 0 ) = A B /(|A|B|)當(dāng)然你知道要用一下反余弦函數(shù)acos()啦。(回憶一下cos(90)=0和cos(0) = 1還是有好處的,希望你沒(méi)有忘記。)這可以告訴我們?nèi)绻c(diǎn)乘的結(jié)果,簡(jiǎn)稱點(diǎn)積,為 0的話就表示這兩個(gè)向量垂直。當(dāng)兩向量平行時(shí),點(diǎn)積有最大值另外,點(diǎn)乘運(yùn)算不僅限于 2維空間,他可以推廣到任意維空間。(譯注:不少人對(duì)量子力學(xué)中的高維空間無(wú)法理解,其實(shí)如果你不要試圖在視覺(jué)上想象高維空間,而僅僅把它看成三維空間在數(shù)學(xué)上的推廣,那么就好理解了)fl叉乘(cross product)相對(duì)于點(diǎn)乘,叉乘可能更有用吧。2維空間中的叉乘是:V1(x1, y1)

4、 X V2(x2, y2) = x1y2 - y1x2看起來(lái)像個(gè)標(biāo)量,事實(shí)上叉乘的結(jié)果是個(gè)向量,方向在z軸上。上述結(jié)果是它的模。在二維空間里,讓我們暫時(shí)忽略它的方向, 將結(jié)果看成一個(gè)向量,那么這個(gè)結(jié)果類似于上述的點(diǎn)積, 我們有:A x B = |A|B|Sin( 。)然而角度 。和上面點(diǎn)乘的角度有一點(diǎn)點(diǎn)不同,他是有正負(fù)的,是指從 A到B的角度。下圖 中。為負(fù)。另外還有一個(gè)有用的特征那就是叉積的絕對(duì)值就是A和B為兩邊說(shuō)形成的平行四邊形的面積。也就是AB所包圍三角形面積的兩倍。在計(jì)算面積時(shí),我們要經(jīng)常用到叉積。(譯注:三維及以上的叉乘參看維基:/wiki

5、/Cross_product )Parallelogram from A and B點(diǎn)-線距離找出一個(gè)點(diǎn)和一條線間的距離是經(jīng)常遇見(jiàn)的幾何問(wèn)題之一。假設(shè)給出三個(gè)點(diǎn),A, B和C,你想找出點(diǎn)C到點(diǎn)A、B定出的直線間距離。第一步是找出 A到B的向量AB和A到C的 向量AC ,現(xiàn)在我們用該兩向量的叉積除以|AB|,這就是我們要找的的距離了(下圖中的紅線)。如果你有基礎(chǔ)的高中幾何知識(shí),你就知道原因了。上一節(jié)我們知道(AB X AC)/2是三角形ABC的面積,這個(gè)三角形的底是 |AB|,高就是C到AB的距離。有時(shí)叉積得到的是一個(gè)負(fù) 值,這種情況下距離就是上述結(jié)果的絕對(duì)值。當(dāng)我們要找點(diǎn)到線段的距離時(shí),情況變

6、得稍稍復(fù)雜一些。這時(shí)線段與點(diǎn)的最短距離可能是點(diǎn)到線段的某一端點(diǎn),而不是點(diǎn)到直線的垂線。例如上圖中點(diǎn) C到線段AB的最短距離應(yīng)該 是線段BC。我們有集中不同的方法來(lái)判斷這種特殊情況。第一種情況是計(jì)算點(diǎn)積AB Bc來(lái)判定兩線段間 。如果點(diǎn)積大于等于零,那么表示 AB到BC是在-90到90度間,也就是 說(shuō)C到AB的垂線在AB外,那么AB上到C距離最近的點(diǎn)就是B。同樣,如果 BAAC大于等于零,那么點(diǎn) A就是距離C最近的點(diǎn)。如果兩者均小于零,那么距離最近的點(diǎn)就在線 段AB中的莫一點(diǎn)。源代碼參考如下:/Compute the dot product AB BCint dot(int A, int B,

7、int C)AB = new int2;BC = new int2;AB0 = B0-A0;AB1 = B1-A1;BC0 = C0-B0;BC1 = C1-B1;int dot = AB0 * BC0 + AB1 * BC1;return dot;/Compute the cross product AB x ACint cross(int A, int B, int C)AB = new int2;AC = new int2;AB0 = B0-A0;AB1 = B1-A1;AC0 = C0-A0;AC1 = C1-A1;int cross = AB0 * AC1 - AB1 * AC0;r

8、eturn cross;/Compute the distance from A to B double distance(int A, int B) int di = A0 - B0; int d2 = A1 - B1; return sqrt(d1*d1+d2*d2);/Compute the distance from AB to C/if isSegment is true, AB is a segment, not a line.double linePointDist(int A, int B, int C, boolean isSegment)double dist = cros

9、s(A,B,C) / distance(A,B);if(isSegment)(int dotl = dot(A,B,C);if(dot1 > 0)return distance(B,C);int dot2 = dot(B,A,C);if(dot2 > 0)return distance(A,C);return abs(dist);上面的代碼看起來(lái)似乎是很繁瑣。不過(guò)我們可以看看在C+和C#中,采用了運(yùn)算符重載的類point,用*代表點(diǎn)乘,用時(shí)代表叉乘(當(dāng)然'+''-'還是你所希望的),那么看起來(lái)就簡(jiǎn)單些, 代碼如下:/Compute the distance from AB to C/if isSegment is true, AB is a segment, not a line.double linePointDist(point A, point B, point C, bool isSegment)(double dist = (B-A)A(C-A) / sqrt(B-A)*(B-A);if

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論