[程式] 看不懂一段程式碼(漫遊) XNA

看板GameDesign作者 (大笨羊)時間14年前 (2010/08/18 02:13), 編輯推噓3(3011)
留言14則, 4人參與, 最新討論串1/1
大家好@@ 最近對寫程式不知道為什麼有莫名的熱情 所以在GameDesign版面上面Po了這麼多... 造成洗板 先在這裡跟大家道歉 只是有一段程式碼我看不懂 小弟我學的是C# 遊戲開發平台是XNA 不過小弟只是高一升高二的一位學生而已 數學的觀念不是很好 程式碼如下: ============================================================================== if (len > Wander_Radius) { float Yaw2 = (float)Math.Atan2(vector_to_center.X,vector_to_center.Z); float diff = Yaw2 - Yaw; float r = 0.01f * MathHelper.Pi*len; diff = MathHelper.Clamp(diff, -r, r); Yaw = Yaw + diff; } else { Yaw += MathHelper.Lerp(-0.05f, 0.05f, (float)rd.NextDouble()); } while (Yaw < -MathHelper.Pi) Yaw += MathHelper.TwoPi; while (Yaw > MathHelper.Pi) Yaw -= MathHelper.TwoPi; Vector3 step = new Vector3(0, 0, 0.01f); Position += Vector3.Transform(step, Matrix.CreateRotationY(Yaw)); ============================================================================== 希望大家看到變數名稱就知道他是做甚麼的@@ 我想問的問題有: 1.Atan2()是甚麼?為什麼可以求出反轉需要的角度呢?Atan是反三角函數嗎@@? 離X軸和離Z軸的值不是向量嗎?我大概知道三角函數是邊與邊的關係! 而反三角函數好像是利用某個數值換回原來的角度!但是有兩個向量是 怎麼一回事? 2.Clamp()是做啥的?是把數字壓縮變小在某個範圍嗎? 3.Lerp()取兩數之間的推估值 但是 .NextDouble() 是跑出0.1~1.0之間的數字嗎? 4.後面兩個while 看到旋轉超過正負Pi值會加上或減上兩個Pi 那不是會突然旋轉 180度嗎?還是我會錯意了? 感謝各位大大的回答:) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.228.238.218 ※ 編輯: wa007123456 來自: 125.228.238.218 (08/18 02:20)

08/18 02:32, , 1F
簡短的回答: 1.2.請google 3.請看rd是什麼 4.2π是360度喔
08/18 02:32, 1F

08/18 02:33, , 2F
先謝謝樓上 可是..while條件是大於或小於Pi的值
08/18 02:33, 2F

08/18 02:34, , 3F
-Pi+2Pi=Pi(180度) 這樣對嗎@@?
08/18 02:34, 3F

08/18 02:34, , 4F
你覺得讓一個值一直加減到跑到[-180度,180度]之外好嗎?
08/18 02:34, 4F

08/18 02:35, , 5F
這會讓 sin/cos 等式子的精確度下降
08/18 02:35, 5F

08/18 02:35, , 6F
所以這裡的用意其實是正規化(normalize)
08/18 02:35, 6F

08/18 02:37, , 7F
恩...謝謝你@@
08/18 02:37, 7F

08/18 02:37, , 8F
那兩個用wiki查可以嗎?
08/18 02:37, 8F

08/18 02:40, , 9F
1.是反三角 http://ppt.cc/7Zk9 向量可以平移 所以可以算
08/18 02:40, 9F

08/18 02:41, , 10F
角度
08/18 02:41, 10F

08/18 02:42, , 11F
謝謝huadi73 :D
08/18 02:42, 11F

08/18 02:45, , 12F
我看懂了...謝謝各位大大...
08/18 02:45, 12F

08/18 02:49, , 13F
還有抱歉...他傳回來的是徑度對嗎@@
08/18 02:49, 13F

08/18 08:43, , 14F
是徑度沒錯
08/18 08:43, 14F
文章代碼(AID): #1CQj5KVZ (GameDesign)