[程式] 看不懂一段程式碼(漫遊) XNA
大家好@@
最近對寫程式不知道為什麼有莫名的熱情
所以在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
08/18 02:32, 1F
→
08/18 02:33, , 2F
08/18 02:33, 2F
→
08/18 02:34, , 3F
08/18 02:34, 3F
推
08/18 02:34, , 4F
08/18 02:34, 4F
→
08/18 02:35, , 5F
08/18 02:35, 5F
→
08/18 02:35, , 6F
08/18 02:35, 6F
→
08/18 02:37, , 7F
08/18 02:37, 7F
→
08/18 02:37, , 8F
08/18 02:37, 8F
→
08/18 02:40, , 9F
08/18 02:40, 9F
→
08/18 02:41, , 10F
08/18 02:41, 10F
→
08/18 02:42, , 11F
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