官术网_书友最值得收藏!

3.4 向量積:測量定向區域

如前所述,向量積以兩個三維向量作為輸入,其輸出是另一個三維向量。它與點積的相似之處在于,輸入向量的長度和相對方向決定了輸出;但不同之處在于,它的輸出不僅有大小,還有方向。我們需要仔細思考三維空間中方向的概念,以理解向量積的作用。

3.4.1 在三維空間中確定自己的朝向

在本章開頭介紹軸、軸和軸時,我提出了兩點:第一,我承諾常見的平面存在于三維世界中;第二,我設定了垂直于平面的方向,且平面在的地方。我沒有明確指出的是,軸的正方向是向上的而不是向下的。

換句話說,如果我們從通常的角度來看平面,可以看到軸正半軸從平面上向我們延伸。另一種選擇是讓軸正半軸遠離我們(見圖3-34)。

圖3-34 像在第2章中那樣,在三維空間中定位自己以觀察平面。當觀察平面時,我們選擇正軸指向我們,而不是遠離我們

這里的區別并不是角度的問題。這兩種選擇代表了三維空間的不同方向,從任何角度看都是可以區分的。假設我們漂浮在軸的某個正坐標上,比如圖3-34中的上圖??梢钥吹?img alt="" class="h-pic-1" src="https://epubservercos.yuewen.com/8EA7F4/22124474309908206/epubprivate/OEBPS/Images/3.gif?sign=1755165979-nOq4u3pxygmW2TzaCduH0WyEoOtYW99k-0-407d485e730cba8df7acf6edbd7d3579">軸的正方向是從軸的正方向逆時針旋轉了1/4圈;否則,軸的朝向就是錯誤的。

現實世界中的很多事物都有方向性,與它們的鏡像看起來并不完全相同。例如,鞋的左右腳大小和形狀相同,但方向不同。普通的咖啡杯沒有方向,沒有標記的咖啡杯是沒法通過照片來區分的。但如圖3-35所示,如果兩個咖啡杯在相反的兩面上有相同的圖案,是可以區分的。

圖3-35 沒有圖案的杯子與其鏡像是同一對象,一面有圖案的杯子則與其鏡像不同

大多數數學家用手作為檢測方向的現成工具。我們的手是定向的,所以即使右手或左手不幸脫離身體,我們也能分辨出它們。你能分辨出圖3-36中的手是右手還是左手嗎?

圖3-36 這是右手還是左手

很明顯,這是右手:如果是左手,指尖上不可能有指甲!數學家可以用手來區分坐標軸的兩種可能方向,稱為右手方向和左手方向。右手方向的規則如圖3-37所示:如果右手食指指向軸正方向,中指、無名指和小指向軸正方向彎曲,那么你的拇指就會指明軸的正方向。

圖3-37 右手規則幫助我們記住選擇的方向

這就是右手規則,如果它與你的坐標軸一致,那么你就(正確地)使用了右手方向。方向很重要!如果你正在實現程序來控制無人機或腹腔鏡手術機器人,就需要保持上、下、左、右、前、后是一致的。向量積作為定向機器,可以幫助我們在所有的計算中跟蹤方向。

3.4.2 找到向量積的方向

在告訴你如何計算向量積之前,我想向你展示它的樣子。已知兩個輸入向量,向量積的結果垂直于這兩個向量。例如,如果,,那么向量積恰好是(0, 0, 1),如圖3-38所示。

圖3-38 的向量積

事實上,如圖3-39所示,平面內任意兩個向量的向量積都位于軸上。

圖3-39 平面內任意兩個向量的向量積都位于軸上

這清楚地說明了為什么向量積在二維中不起作用:它返回的向量位于包含兩個輸入向量的平面之外。我們可以看到,向量積的輸出總是垂直于兩個輸入,即使輸入并不在平面內也是一樣(見圖3-40)。

圖3-40 向量積總是返回垂直于兩個輸入的向量

但是有兩個可能的垂直方向,向量積只能在其中之一上。例如,(1, 0, 0) × (0, 1, 0)的結果正好是(0, 0, 1),指向軸正方向。軸上的任何向量,不管是正還是負,都垂直于這兩個輸入。為什么結果會指向正方向?

這就是方向的作用:向量積也遵循右手規則。一旦你找到了垂直于兩個輸入向量的方向,向量積的方向就將三個向量、置于了右手系中。也就是說,我們可以將右手食指指向的方向,將三指彎向,拇指指向的就是的方向(見圖3-41)。

圖3-41 右手規則告訴我們向量積指向哪個垂直方向

當輸入向量位于兩個坐標軸上時,不難找到它們的向量積指向的確切方向:它指向剩余坐標軸的一個方向。一般來說,如果不計算它們的向量積,就很難描述垂直于兩個向量的方向。我們一旦知道如何計算它,就掌握了一個非常有用的特征。但是向量并不僅僅指定方向,還指定了長度。向量積的長度也蘊含有用的信息。

3.4.3 求向量積的長度

和點積一樣,向量積的長度也是一個數,它提供了關于輸入向量的相對位置的信息。它測量的并不是兩個向量的對齊程度,而更像是“它們的垂直程度”。更準確地說,它告訴我們兩個輸入之間的面積有多大(見圖3-42)。

圖3-42 向量積的長度等于一個平行四邊形的面積

如圖3-42所示,以為邊的平行四邊形的面積等于向量積的長度。對于給定長度的兩個向量,在它們垂直時張成的面積最大。如果在同一方向上,則張不成任何面積,向量積的長度為零。這是顯而易見的:如果兩個輸入向量平行,則不存在唯一的垂直方向。

與結果的方向搭配,結果的長度能給我們一個精確的向量。平面上的兩個向量保證有指向軸正方向或負方向的向量積。從圖3-43中可以看到,平面向量張成的平行四邊形越大,向量積越長。

圖3-43 根據張成的平行四邊形的面積,平面上的向量對具有不同大小的向量積

平行四邊形的面積有一個三角公式:如果的夾角為,面積就是。我們可以結合長度和方向來求一些簡單的向量積。例如,(0, 2, 0)和(0, 0, -2)的向量積是多少?這兩個向量分別位于軸和軸上,所以要想與它們垂直,向量積必須位于軸上。我們用右手定則來求出結果的方向。

用食指指向第一個向量的方向(軸正方向),再把三根手指彎向第二個向量的方向(軸負方向),我們發現大拇指指向軸負方向。向量積的大小是,因為軸和軸相交成90°角。(在這種情況下,平行四邊形恰好是一個邊長為2的正方形。)求得向量積的大小是4,所以結果是(-4, 0, 0):在軸負方向上長度為4的向量。

看起來,通過幾何方法計算向量積是一種有良好定義的運算,但是這并不實用。一般來說,當向量并不總在坐標軸上時,要找到垂直結果所需的坐標并不容易。幸運的是,有一個明確的公式可以用輸入坐標來計算向量積的坐標。

3.4.4 計算三維向量的向量積

向量積的公式乍一看很復雜,但我們可以用Python函數快速把它包裝起來,然后毫不費力地進行計算。首先從的坐標開始。雖然可以將其坐標設置成,但是使用更好的符號會更清楚:。比起用這樣的任意字母來稱呼它,記住坐標更加容易。根據這些坐標,向量積的公式為:

如果使用Python,則如下所示。

def cross(u, v):
    ux,uy,uz = u
    vx,vy,vz = v
    return (uy*vz - uz*vy, uz*vx - ux*vz, ux*vy - uy*vx)

你可以在練習中試著使用這個公式。注意,與我們目前使用的大多數公式相比,這個公式似乎不能很好地推廣到其他維度。它要求輸入向量必須有三個分量。

這個代數程序與本章中的幾何描述一致。因為它能給出面積和方向,所以向量積可以幫助我們判斷,能否在三維空間中看到同樣浮在空間中的多邊形。例如,如圖3-44所示,站在軸上的觀察者是看不到張成的平行四邊形的。

圖3-44 向量積指出多邊形對觀察者是否可見

換句話說,圖3-44中的多邊形與觀察者的視線平行。利用向量積,我們不用畫圖也能知道這一點。因為向量積與人的視線垂直,所以多邊形是不可見的。

現在是時候開始我們的終極項目了:用多邊形構建一個三維對象,并在二維畫布上繪制它。你會使用到目前為止見過的所有向量操作。特別是,向量積將幫你判斷哪些多邊形是可見的。

3.4.5 練習

練習3.19:如圖3-45所示,各圖中都存在三個相互垂直的箭頭,分別表示軸、軸和軸的正方向。在這些顯示為三維框的透視圖中,框的背面是灰色的。四幅圖中的哪一個與我們選擇的相符?也就是說,哪張圖顯示了我們所畫的軸、軸和軸,即使從不同的角度來看也是如此?

圖3-45 以上哪些軸線與我們約定的方向一致

:從上向下看圖3-45a,我們會像往常一樣看到軸和軸,且軸指向我們。與我們約定的方向一致的是圖3-45a。

在圖3-45b中,軸指向我們,而軸正方向與軸正方向順時針成90°角。這與我們的方向不一致。

如果我們從軸正方向上的某點看圖3-45c(從框的左側),會看到軸正方向與軸正方向逆時針成90°角。圖3-45c也與我們的方向一致。

從框左側看圖3-45d,軸正方向應該是朝向我們的,軸正方向仍位于軸正方向的逆時針方向。這與我們的方向也是一致的。

 

練習3.20:如果把三條坐標軸立在鏡子前,鏡子里圖像的方向是相同的還是不同的呢?

:鏡像的方向是相反的。從這個角度看,軸和軸仍然指向相同的方向。在原圖中,軸正半軸在軸正半軸的順時針方向,但在鏡像中變成了逆時針方向(見圖3-46)。

圖3-46 軸、軸和軸及其鏡像

 

練習3.21:(0, 0, 3) × (0, -2, 0)的結果指向什么方向?

:如果我們把右手食指指向(0, 0, 3),也就是軸正方向,然后彎曲三指指向(0, -2, 0),即軸負方向,則大拇指會指向軸正方向。因此,(0, 0, 3) × (0, -2, 0)指向軸正方向。

 

練習3.22:(1, -2, 1)和(-6, 12, -6)向量積的坐標是多少?

:這些向量互為彼此的負標量乘積,它們指向相反的方向且不會張成任何面積。因此,向量積的長度為零。唯一一個長度為零的向量是(0, 0, 0),這就是答案。

 

練習3.23(小項目):如圖3-47所示,平行四邊形的面積等于它的底邊長乘以它的高。

圖 3-47

基于此,請解釋公式是有意義的。

:在圖3-48中,向量定義了底邊,所以底邊長度為??梢詮?img alt="" class="h-pic-1" src="https://epubservercos.yuewen.com/8EA7F4/22124474309908206/epubprivate/OEBPS/Images/87.gif?sign=1755165979-f2yKVQYeCicru9C8mADbPUFWCybSQ6Q9-0-b9c17f7f91376eba9082a8a436944aae">的頭部到底邊畫一個直角三角形。的長度就是斜邊,而三角形的高就是我們要找的高。根據正弦函數的定義,高為。

圖3-48 平行四邊形的面積公式使用其一個角的正弦來表示

因為底長為,高是,所以平行四邊形的面積確實是。

 

練習3.24:向量積(1, 0, 1) × (-1, 0, 0)的結果是什么?

(a) (0, 1, 0)

(b) (0, -1, 0)

(c) (0, -1, -1)

(d) (0, 1, -1)

:這些向量位于平面,所以它們的向量積在軸上。將右手食指指向(1, 0, 1)的方向,并將三指向(-1, 0, 0)方向彎曲,則拇指會指向軸負方向(見圖3-49)。

圖3-49 通過幾何方法來計算(1, 0, 1)和(?1, 0, 0)的向量積

可以求出向量的長度和它們之間的夾角,從而得到向量積的大小,但我們已經從坐標中得到了底長和高。因為它們都是1,所以長度也是1。因此,向量積為(0, -1, 0),它是軸負方向上長度為1的向量,答案是(b)。

 

練習3.25:使用Python的cross函數計算,其中第二個向量是幾個不同的值。每個結果的坐標是多少,為什么?

:無論選擇哪個向量,結果的坐標都是零。

>>> cross((0,0,1),(1,2,3))
(-2, 1, 0)
>>> cross((0,0,1),(-1,-1,0))
(1, -1, 0)
>>> cross((0,0,1),(1,-1,5))
(1, 1, 0)

因為,所以都是零。這意味著不管的值是多少,向量積公式中的都是零。從幾何學上講,這是有意義的:向量積應該垂直于兩個輸入,并且垂直于(0, 0, 1),分量必須為零。

 

練習3.26(小項目):用代數法證明垂直于,不管的坐標是多少。

提示:將展開成坐標用于證明。

:在下面的方程中,設,。我們可以將用如下的坐標方式表示,把向量積展開成坐標,并進行點積運算。

在繼續展開點積后,我們看到共有6項。每一項都能與另一項抵消。

因為完全展開后,所有項都被抵消了,所以結果是零。為了節省“墨水”,這里不再展示的結果,但情況仍不變:出現了6個項并相互抵消,結果為零。這意味著垂直于。

主站蜘蛛池模板: 井研县| 山阴县| 郑州市| 施甸县| 罗甸县| 汽车| 肥乡县| 上栗县| 凤台县| 甘肃省| 南木林县| 望江县| 安阳县| 平乐县| 伊川县| 巫山县| 吉首市| 金华市| 辽中县| 吉木乃县| 松潘县| 深水埗区| 安化县| 宝清县| 凤城市| 白银市| 虞城县| 镇赉县| 澄城县| 清水县| 和龙市| 潞西市| 新巴尔虎左旗| 青阳县| 大英县| 石嘴山市| 衡山县| 乌鲁木齐市| 肥城市| 波密县| 大厂|