最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【技術(shù)貼】只需要高中數(shù)學(xué)就可以學(xué)會!如何在MATLAB中給三維的曲線加上三維的箭頭

2021-10-12 11:14 作者:請叫我紳士君  | 我要投稿

最近一段時間,因為科研工作的需要畫出空間中的流線,up萌生出了一個想法:在畫出空間流線的同時,能否在流線上同時添加三維的箭頭指示方向呢?大概就像封面圖展示的一樣:

相同的功能在成熟的商業(yè)軟件里面好像有了(比如comsol),但是在MATLAB中似乎沒有現(xiàn)成的函數(shù),并沒有辦法同時畫出三維曲線并且在上面添加三維的箭頭。因為up平時用MATLAB用的比較多,本著“自己動手豐衣足食”的思想,up決定還是自己寫一個這個功能好了。

在MATLAB中畫出三維的曲線還是比較容易的一件事,但畫三維箭頭遇到的第一個問題就是用什么樣的函數(shù)畫出三維的箭頭,up這里想的解決方法是用surface函數(shù)畫出一個圓錐,大概就是像下面這個樣子(來點光線渲染一下):

感覺好像還缺了個底,再加一個底吧:

這個樣子看起來就有點像是一個三維的箭頭了

箭頭的素材差不多是有那個味了,下一步就是需要把這個箭頭移動到曲線上,而且還需要把它旋轉(zhuǎn)到曲線對應(yīng)的切線方向上,讓箭頭指向流動方向。這一步有點復(fù)雜,up是想出了這么一個方法。

首先要介紹一個MATLAB中的“rotate”函數(shù)。通過“rotate”函數(shù),我們可以按照定義旋轉(zhuǎn)軸的原點,旋轉(zhuǎn)軸方向,以及旋轉(zhuǎn)角度的方式,將指定物體按照“右手螺旋定則”的方式旋轉(zhuǎn)指定的角度,如下圖所示:

那么對于我們之前畫出的圓錐體,如果我們在xy平面上指定出一條旋轉(zhuǎn)軸,圓錐體就可以按照我們指定的旋轉(zhuǎn)軸左右旋轉(zhuǎn),大概就像是這樣(靈魂畫手):

而對于空間上任意一條曲線來說,它的任意一條有方向的切線都會在xy平面上留下投影;

而對于任意一個平面投影向量,總能找到一條過原點的直線與它垂直;

那么這就能夠確定我們的旋轉(zhuǎn)軸了。

但是如”rotate”函數(shù)所描述的那樣,該函數(shù)是通過“右手螺旋定則”來對物體進(jìn)行旋轉(zhuǎn)的.

這也就是說,旋轉(zhuǎn)軸是必須有方向的向量,只有一個特定的旋轉(zhuǎn)軸向量對應(yīng)一個特定的旋轉(zhuǎn)角度(兩個不同的旋轉(zhuǎn)方向加起來是360嘛)才能將目標(biāo)物體旋轉(zhuǎn)到指定的方向。

如上圖所示,這條過原點的直線又會有兩個不同的方向。

那么,該采取什么算法才能使得對于任意的切線向量,都能按照同樣的流程將圓錐體旋轉(zhuǎn)到特定的位置呢?up想的是這個方法:

既然對于任意一條在xy平面上的切線投影,都會有兩個方向的旋轉(zhuǎn)軸,那么就指定逆時針旋轉(zhuǎn)90度的那條向量為旋轉(zhuǎn)軸就好了。

根據(jù)高中的數(shù)學(xué)知識,如果切線投影的向量表示為(x,y),旋轉(zhuǎn)軸的向量就可以表示為(-y,x),那么對應(yīng)的“rotate”函數(shù)的旋轉(zhuǎn)軸就可以寫為(-y,x,0),這樣我們就制定出了一個固定的方式確定旋轉(zhuǎn)軸。

最后再根據(jù)高中的數(shù)學(xué)知識:

求得任意空間向量與z軸的夾角,再根據(jù)且點的坐標(biāo),把圓錐從(0,0,0)平移到切點對應(yīng)的(x,y,z)坐標(biāo),就可以把圖畫出來啦!

最后附加上封面圖的所有代碼


【技術(shù)貼】只需要高中數(shù)學(xué)就可以學(xué)會!如何在MATLAB中給三維的曲線加上三維的箭頭的評論 (共 條)

分享到微博請遵守國家法律
黄浦区| 迁西县| 塔城市| 北流市| 汾阳市| 正蓝旗| 新河县| 务川| 开江县| 沽源县| 尼勒克县| 壤塘县| 武定县| 九龙城区| 康马县| 门头沟区| 格尔木市| 岚皋县| 新乐市| 云龙县| 永寿县| 白朗县| 兰州市| 元阳县| 土默特左旗| 天长市| 佳木斯市| 通辽市| 德保县| 鄂州市| 嵊泗县| 铜陵市| 扶余县| 云安县| 贵港市| 大田县| 巴林左旗| 龙州县| 武义县| 博湖县| 原平市|