教孩子寫遊戲:3D遊戲編程的必備數學知識,理解三維空間向量

2021-01-08 我是遊戲小胡

因為我們要寫的是3D遊戲程序,所以,我們必須要接觸兩個數學方面的難點知識——向量和矩陣。

有的人問:這個這麼難,我們可不可以不學?

我的答案是這樣的:如果你是有心要學習本課程,那麼這個是必須要學習的,是沒有道理可講的,是想破了腦袋也要學明白的。

那麼,不學可不可以寫出3D遊戲來呢?其實是可以的。市面上有太多的3D遊戲引擎了,這些3D引擎把遊戲編程中比較複雜的工作都幫我們做了,只是把一些比較簡單的工作留給了我們。這樣的話,只需要點幾下滑鼠,添加一些遊戲素材,像本課程這樣的3D遊戲示例一下子就能生成很多個。但是,真的用遊戲引擎的話,不管是新手還是孩子,一點有用的東西都學不到。3D遊戲引擎,是給專業人士開發超大型3D遊戲用的,不是給新手們「娛樂」用的。而且,如果一個程式設計師不懂得3D遊戲編程的基礎內容,給他再好的3D遊戲引擎,他也用不明白。

所以,我們還是安下心來學習這兩個重要的數學知識點吧。

首先,我們把向量這個知識點講明白。

「學」的部分

我們光看名字就知道,「3D遊戲編程」的重點在「3D」,就是說,程式設計師要面對的大多數問題都和「3D」有關係。再具體一些,這些和「3D」有關係的問題,基本上是3D內容的顯示和3D物體的運動模擬。

在上一節的內容中我們已經了解,計算機是在3D坐標系中處理3D問題的,也就是說,不管是3D內容顯示還是3D物體的運動模擬都會牽扯到非常非常複雜的數學計算。

說個最簡單的例子。假設你的遊戲中有一隻小鳥在飛,你要模擬它飛行的過程,那麼,我們就要計算單位時間內小鳥的位置。由於是3D坐標系,我們需要分別計算x、y、z三個分量的值。這裡說起來容易,真的要用代碼實現的話,你會發現非常繁瑣。

通過前面的章節你已經了解,程式設計師是最會偷懶的一群人,一旦某個「解題」方法太繁瑣的話,程式設計師就會想方設法去簡化它。面對上面的3D問題,程式設計師們早就找到了解決方法,而這個解決方法,就是數學中的向量。

什麼是向量呢?往簡單了說,就是可以把多維的計算問題簡化成一維的計算問題。還是上面的小鳥,如果小鳥只是在一維空間飛行的話,計算會非常簡單,只是牽扯到最基礎的加減法。而一個3D環境下的小鳥,如果用向量來表示各種屬性的話,所有的計算就會變得和一維中一樣簡單。小鳥的位置可以用向量A來表示,小鳥的飛行方向可以用向量B來表示,在計算小鳥下一時刻的位置時,我們只需要通過計算向量A和向量B的加減乘法就可以了,就和解決一維問題一樣方便。

如果光看數字的話,向量似乎很簡單,三維向量就是一對括號中有3個分開的數字罷了,比方說向量A可以是下面這個樣子:

(1,2,3)

不要小看這個「數字組合」,它是計算機3D遊戲編程中不可或缺的內容,沒有它,遊戲編程幾乎就變得不可能了。

關於向量,我們還需要明白3個要點。

要點一:如何理解三維向量

在三維空間中,向量可以理解成一個「有一定長度的箭頭」。比方說上面的向量(1,2,3),要怎麼在三維坐標系中畫出來呢?具體的方法如下:

1.在x軸上找到1的位置,並標一個點D;

2.然後把點D沿著y軸正方向移動2個單位;

3.接下來把點D沿著z軸方向移動3個單位,這個點就到達預定位置了;

4.最後,把原點和D點連接起來,並在D點上標上箭頭的標誌,三維坐標系下的向量(1,2,3)就畫好了。

也就是說,任何一個三維向量,起點都在原點上,我們只需要根據括號中的3個標量找到目標D點,然後連一條有方向的線就可以了。

要點二:向量只有大小和方向,沒有位置

其實,只要我們在三維空間中任意確定兩個點,然後連成一條有方向的線就是向量了,因為我們在生活中就是這麼做的。比方說最常見的交通指示標誌,地上的箭頭就可以看成是一個向量。但是,我們無法確定原點的位置,只能把箭頭的起點當原點了。數學是抽象,抽象也要尊重事實。而向量就是一個抽象,其中的事實就是原點無法確定,乾脆,數學中的向量就變成了一個沒有位置的量了。你可以這麼理解:在3D坐標系中隨便畫一個向量A,然後,我們可以把這個向量任意移動,只要不改變它的方向,這個向量還是原來的向量A。

相關焦點

  • 計算思維≠編程,該如何培養孩子的計算思維?
    想要理解抽象和自動化之於計算思維的重要性,我們先來看下運用計算思維進行問題求解的關鍵路徑:(1)把實際問題抽象為數學問題,並建模,即將人對問題的理解用數學語言描述出來(2)進行映射,把數學模型中的變量等用特定的符號代替,即用符號一一對應數學模型中的變量和規則等(3)通過編程把解決問題的邏輯分析過程寫成算法
  • 還在頭疼教孩子認識數字1-10嗎?這3個數學小遊戲輕鬆解決!
    每次遇到這樣的情況時,家長也總是一遍遍,不厭其煩,重複教孩子數字的認讀。但很無奈,孩子的記憶就像魚,幾秒後忘得一乾二淨。於是家長便開始擔心,焦慮:孩子怎麼還不會數數?怎麼還不認識數字?會不會跟不上別的小朋友?會不會影響以後學習?有沒有又快又好的方法教孩子學會數字1-10呢?
  • 高中數學丨2020新標課本,空間向量與二面角知識點,一張表搞定
    建立空間直角坐標系常用方法:1、底面是正方形,常以底面兩條臨邊x軸,y軸;2、底面是菱形,常以底面兩條對角線為x軸,y軸;3、底面是等腰三角形,常以底邊及底邊上的高為x軸,y軸;4、底面為平行四邊形,常以一條邊為x軸,並作一條與這一條邊垂直的直線作為
  • 2020高考數學重難點突破:立體幾何與空間向量,教研二輪複習推薦
    今天給大家帶來的是「備戰2020高考數學」優質內容:立體幾何與空間向量。通過研究高考考綱,結合同學們的失分點,整理出了這份備考資料,希望能夠幫大家解決一些疑難點。請大家繼續往下閱讀正文。一、解題思路分析1.證明直線與直線的平行的思考途徑2.證明直線與平面的平行的思考途徑3.證明平面與平面平行的思考途徑4.證明直線與直線的垂直的思考途徑5.證明直線與平面垂直的思考途徑6.證明平面與平面的垂直的思考途徑7.空間向量的加法與數乘向量運算的運算律8.平面向量加法的平行四邊形法則向空間的推廣
  • ...編程與數學相融合教學的探索 ——以《大自然中美麗的螺旋圖...
    結合計算思維的核心過程素和三維框架的內容,以及數學學科的抽象性,可以採用編程與數學融合教學的方式培養學生的計算思維,本文的學科融合切入點是數學幾何圖形,從小學數學課中簡單的平面幾何圖形切入,符合學生的認知和年齡特點。在小學數學中學生已經學習過用字母表示數的抽象方法,也會用數學語言形容幾何圖形特徵,對函數和參數也有一些了解,這都是開展以計算思維為核心的編程和數學融合教學的重要策略。
  • 在數獨遊戲中學好數學
    最近經常有家長問,怎麼才能讓孩子學好數學呢?回答這個問題前,我們不如先來看看數學是什麼?數學是關於邏輯的藝術,想讓孩子學好數學,就需要加強孩子邏輯推理方面的訓練。而玩數獨,就是訓練邏輯推理能力的一個很好的方式。
  • 指導術|「從1數到100」,你還這樣教孩子數學麼?
    「遊戲對於兒童是學習,是勞動,是重要的教育形式 ——克魯普斯卡婭」數數、背乘法口訣、背公式……當我們把數學當成一門記憶型學科,而不是理解性學科的時候,數學就失去了它本身的價值。孩子的生活離不開遊戲,遊戲是孩子最喜歡的活動。
  • 編程課程出現在中小學後2004年-2013年出生的孩子影響有多大?
    實際上,編程的過程,正是應用的過程。下面說說有什麼作用吧!1. 編程與數學存在著緊密的聯繫。編程能夠幫助孩子更深刻的理解數學概念,從而提升推理能力。學習好一樣東西學不好時最好是從最初的概念進行找起,往往是最好的方法,現在的編程就是扮演著孩子打好數學的理論概念基礎。
  • 幼兒園孩子怎麼學數學,這3個方法提升孩子數學思維
    答案:解析:幼兒園孩子怎麼學數學,這3種方法提升孩子數學思維很多家長反應孩子數學不好,從小就開始數數、心算、刷題輪番上。其實,數學學習並不是為了擁有多少數學知識,而是要在數學學習的過程中,發展孩子的思維,提高孩子的數學素養,用數學思考去分析、解決實際問題。下面3個方法,幫助家長在寒假期間培養孩子數學思維。
  • 我是計算機專業,身邊同行沒一個讓孩子在三年級前學編程
    機器人教育如火如荼,各種線上編程的廣告隨處可見。但是幼兒園就開始學編程打比賽真的能讓孩子真正理解編程嗎?知乎一位網友,自己是計算專業畢業的,結合自己學習編程的經歷,聊了聊自家小孩是怎麼學編程…順便文末說說你怎麼看,你會讓孩子幼兒園就開始學編程嗎?
  • 教孩子寫遊戲:快速入門C++語言,理解這12個概念,1天時間夠了
    如你所想,機器語言也是一種程式語言,只不過放眼望去,機器語言的代碼全部是0和1的組合,不是特別專業的人,絕對看不懂寫了什麼。不過,機器語言的好處是計算機能直接讀懂。但是,機器語言實在是太過於難懂了,還容易看得眼花,所以,沒過多久,一幫會機器語言的程式設計師一起開發了用字母和數字代替二進位的程式語言,這個語言就是大名鼎鼎的彙編語言。
  • 高中數學:如何利用空間向量求空間角
    利用空間向量求空間角,可以避免複雜的幾何作圖和論證過程,只需通過相應的向量運算即可,在高考中用此法解題,可以避繁就簡。下面我們用一道例題來說明:例題用傳統的幾何法可能略顯繁瑣,我們可以利用空間向量來求解。第1問是證明線線垂直,可直線轉化為證明向量垂直,即兩向量的數量積為0.
  • 只需這4步,孩子理解數字的意義,擁有數學思維
    很多家長在孩子剛2歲左右就開始教一些簡單的數字了,讓孩子開始數數,比如教他們從1數到10,或者有更厲害的小孩可以從1數到100,但是隨著時間的增加,家長們發現孩子雖然會數數了,但是並不知道這些數字意味著什麼,比如讓孩子去拿兩個草莓,但是孩子並不知道這是什麼意思。其實孩子一開始數數只是單純的機械記憶,並沒有真正理解數字。那麼怎麼教幼兒數數呢?
  • 【雙葉幼兒園】遊戲是什麼
    例如孩子之所以行走時喜歡奔跑、喜歡走窄窄的街沿邊緣,喜歡跨跳路上的障礙物,喜歡向遠處扔投小東西……其實,幼兒遊戲的這種自發性特點表明,這正是孩子發展動作、發展平衡、發展肢體協調性等的需要,這也就是為什麼兒童天性好動的原因,如果我們給他們合適的空間、時間、玩具材料去遊戲,那麼他們就會得到發展上的最大滿足。
  • 孩子總學不好數學是因為笨?可能缺少「數理思維」,難怪總學不來
    孩子不明白其中的運算道理,就算把現在這題背下來了,那麼以後做題的時候還是不會。2.只要求孩子的計算能力。有些父母覺得孩子學不好數學,是因為計算能力太差了,腦子反應慢。其實數學中除了基本的計算,用到的更多的還是一些邏輯思維和空間、幾何思維。
  • 3-6歲兒童數感思維萌芽期,聰明父母用3招,提高孩子數學邏輯思維
    比如教她們做1+1=2的算術題,就可以用生活中出現過的香蕉代替,然後再給一個香蕉,孩子把這兩隻香蕉數過相加,就得出答案2,這就是他們運算和思維的大致過程。如何在遊戲中學會數學啟蒙?一、0-2歲,利用生活場景對於以形象化思維進行學習的孩子來說,利用生活中碎片化的場景能進行各種不同的情景教學。
  • 重慶南開數學老師楊飛:他把測字、魔術全部用「數學」做解答
    上午8:50,我們走進融僑南開中學高三五班的數學課堂。尋找一種解題之碼要把複雜的數學歌訣化這一節課的數學,是講題。一張A4紙正反兩頁寫了9道數學題,標題為「幾何向量不用怕,模換三角坐標化」。簡單的兩句話,道破了解題精髓。楊老師告訴新聞記者,幾何向量是高考題中失分率最高,也是非常困難的題,難在很多人並不知道如何下手解決。
  • 常和孩子玩這幾種遊戲,孩子想不聰明都難!(爸媽快收藏!)
    【趣味配音】: 聲臨其境,玩轉口語  【24點小遊戲】:口算心算,一步到位  【詩詞大會】:國學精華,信手拈來  【成語闖關】:過關斬將,成語達人  【數學闖關】: 進階闖關,趣味學 習  【單詞達人】:玩轉英語,提升必備  【數字華容道】:玩轉數學,拓展思維  【數獨闖關】:益智經典,學玩兼備
  • 6歲前跟孩子做這些遊戲,幫助右腦開發,寶寶聰明智商高
    右腦:擅長韻律、想像、空間、圖像類的信息更敏感,被稱為「藝術腦」。 有研究表明,0-3歲是右腦的優勢時期,3-6歲之間,右腦優勢逐漸過渡到左腦,6歲後進入左腦優勢的時期。舉個簡單的例子,當孩子3歲前學英語的時候,孩子就是聽到什麼學什麼!
  • 孩子不願開口叫人,就是性格內向?注意,「內向」的標籤別亂貼
    每年新年期間,他的母親都會強迫孩子對親戚和朋友說新年快樂。這不是因為他想要新的一年的錢,而是為了鍛鍊孩子並想讓孩子變得更大膽。這個孩子小時候很害羞,不熟悉的人問他會哭。在新年問候期間,他的母親教他新年問候,但孩子只是將臉龐放在母親的膝蓋上,急著哭了起來。當我遇到我的叔叔和阿姨時,我教我的孩子們向別人打招呼,但孩子們拒絕說話,讓他們的母親無奈。