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

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

坐標(biāo)轉(zhuǎn)換的一個(gè)比較成熟的想法 ///

2022-12-16 11:13 作者:ICE27182  | 我要投稿

我大概說一下怎么坐標(biāo)轉(zhuǎn)換 因?yàn)槭怯迷谖业?D渲染器里的 所以會(huì)結(jié)合一點(diǎn)

把一個(gè)三維點(diǎn)的坐標(biāo)轉(zhuǎn)化為另一個(gè)空間直角坐標(biāo)系里的坐標(biāo)?

已知一個(gè)空間直角坐標(biāo)系中一點(diǎn)A 我們想把它轉(zhuǎn)化為一個(gè)經(jīng)過任意旋轉(zhuǎn)的空間直角坐標(biāo)系中的坐標(biāo)(p2 中由兩兩垂直的綠色和橙色向量為坐標(biāo)軸的坐標(biāo)系)?

這里中目標(biāo)坐標(biāo)系的z軸正方向是確定的 即視線方向?

這里坐標(biāo)系y軸都表示高 x和z是平面? ? ?(你問我為什么??8年mc你說為什么)

p1: 綠色是新坐標(biāo)系的z軸正方向 也是攝像機(jī)的視線方向;? ? cyan是新坐標(biāo)系中的軸正方向;? ? 橙色是新坐標(biāo)系中的x軸正方向

明確一下已知量然后開始:?

  1. A點(diǎn)在原坐標(biāo)系中的坐標(biāo)

  2. 新坐標(biāo)系的z軸正方向在原坐標(biāo)系中的向量坐標(biāo), 記該向量為n

  3. 新坐標(biāo)系的另一根坐標(biāo)軸與z軸的關(guān)系(當(dāng)然 你知道它坐標(biāo)也行 目的是確定新坐標(biāo)系)


首先,我們先確定新坐標(biāo)系。

????在這個(gè)例子中,平面法向量就是目標(biāo)坐標(biāo)系的z軸正方向(p2中的綠色向量),坐標(biāo)軸兩兩垂直,且因?yàn)樽罱K看到的2D畫面的的高就是高(自己根據(jù)結(jié)論理解下 不知道怎么說),所以目標(biāo)坐標(biāo)系中新x軸的必然在原坐標(biāo)系的xz平面上,新坐標(biāo)系的x軸正方向在原坐標(biāo)系中y=0。那么根據(jù)它與z軸正方向

????確立了新坐標(biāo)系的兩條坐標(biāo)軸,第三條坐標(biāo)軸的位置就確定了,方向的話怎么發(fā)現(xiàn)怎么來就好了。

????在3D渲染器里我是用2個(gè)角度表示視線向量的,α和β,分別表示視線向量n和原坐標(biāo)系的xy面與xz面的夾角。 定義域的話 α∈[-180°, 180°], β∈[-90°, 90°]

p2: cyan色的是n? ??紅色角度為α? ? 藍(lán)色角度為β? 點(diǎn)的名字不用管 見p3

為了計(jì)算方便,我們讓n為單位向量,即 |n| =?1

設(shè) vec(n)?= (x,y,z)? ? ? ? vec()表示是向量

p3

那么我們就可以得到 |ON| = 1

=> |MN| = y = sinβ · |ON| = sinβ

???? |OM| =?cosβ · |ON| = cosβ

=> |OC| = x = cosα · |OM| = cosα?cosβ

???? |MC| = z = sinα · |OM| = sinα cosβ

=> vec(n) = (cosα cosβ, sinβ, sinα cosβ), |n| = 1

del x,y,z


記p1橙色向量和cyan向量分別為nh(horizontal)和nv(vertical)

設(shè) vec(nh) = (x,0,z)?

由nh⊥n 易得 x = cos(α-90°)cosβ, y = sin(α-90°)cosβ? ? => vec(nh) =??(cos(α-90°) cosβ, 0,?sin(α-90°) cosβ) = (sinα cosβ, 0, -cosα cosβ)

del x,z

同理, vec(nv) = (cosα?cos(β-90°), sin(β-90°), sinα?cos(β-90°)) = (cosα sinβ, -cosβ, sinα sinβ)

但是這里有個(gè)小問題 |n|和|nv|都為1 但是|nh|因?yàn)閥軸坐標(biāo)被固定了 所以長度不總是1 那么我們需要變換一下 方法也很簡單:

????vec(nh0) =?(sinα?cosβ, 0, -cosα?cosβ)

????nh_len = sin2α·cos2β+cos2α·cos2β

????vec(nh) = vec(nh0)/nh_len

????表達(dá)式如下:

????vec(nh) = (sinα?cosβ / (sin2α·cos2β+cos2α·cos2β), 0 ,-cosα?cosβ / (sin2α·cos2β+cos2α·cos2β))

值得注意的是它的定義域是不包含β=±90°的 所以可以在程序里加一個(gè)分類討論 如果為|β|=90°時(shí)直接把原坐標(biāo)系里的y和z換一下就是新坐標(biāo)系了 記得考慮一下正負(fù)



綜上我們就得到了得到新坐標(biāo)軸的單位向量在原坐標(biāo)系中的坐標(biāo):

????vec(n) =?(cosα?cosβ, sinβ, sinα?cosβ)

????vec(nh) = (sinα?cosβ / (sin2α·cos2β+cos2α·cos2β), 0 ,-cosα?cosβ / (sin2α·cos2β+cos2α·cos2β)), |β|?≠ ±90°

????vec(nv) =?(cosα sinβ, -cosβ, sinα sinβ)


那么接下來的事情就很簡單了 記得向量投影嗎

A' = (vec(OA)·vec(nh), vec(OA)·vec(nv), vec(OA)·vec(n))


因?yàn)槭菃挝幌蛄?,所以直接點(diǎn)乘就好了,不用再除模了,畢竟是1

坐標(biāo)轉(zhuǎn)換的一個(gè)比較成熟的想法 ///的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
三台县| 诸暨市| 睢宁县| 高要市| 原阳县| 探索| 林周县| 保靖县| 东乡族自治县| 同德县| 保靖县| 凤冈县| 凤翔县| 澄迈县| 潜山县| 凤台县| 黄石市| 永平县| 滨海县| 商都县| 台湾省| 黄浦区| 江源县| 永安市| 澎湖县| 林口县| 枣庄市| 湘潭市| 宜良县| 弥勒县| 新河县| 南充市| 新巴尔虎左旗| 龙井市| 纳雍县| 碌曲县| 南靖县| 嵊州市| 磐安县| 苍山县| 泽库县|