110,539
社区成员
发帖
与我相关
我的任务
分享
/// <summary>
/// 16个方向
/// 0.5,1,1.5
/// </summary>
/// <param name="intDirection"></param>
/// <returns></returns>
private Vector2 Vector216DirectionSpeed2_3(int intDirection)
{
float floatPiDivide360 = MathHelper.Pi / 360;
float float25 = floatPiDivide360 * 22.5f;
float float45 = floatPiDivide360 * 45.0f;
if (intDirection == 0)
return new Vector2(0.0f, -2.0f);//0°
else if (intDirection == 1)
return new Vector2(0.5f + float25 + float25 / 2,//22.5°
-1.5f - float25 - float25 / 2);
else if (intDirection == 2)
return new Vector2(1.0f + float45,//45°
-1.0f - float45);
else if (intDirection == 3)
return new Vector2(1.5f + float25 + float25 / 2, //67.5°
-0.5f - float25 - float25 / 2);
else if (intDirection == 4)
return new Vector2(2.0f, 0.0f);//90°
else if (intDirection == 5)
return new Vector2(1.5f + float25 + float25 / 2,//112.5°
0.5f + float25 + float25 / 2);
else if (intDirection == 6)
return new Vector2(1.0f + float45,//135°
1.0f + float45);
else if (intDirection == 7)
return new Vector2(0.5f + float25 + float25 / 2,//157.5°
1.5f + float25 + float25 / 2);
else if (intDirection == 8)
return new Vector2(-0.0f, 2.0f);//180°
else if (intDirection == 9)
return new Vector2(-0.5f - float25 - float25 / 2,//202.5°
1.5f + float25 + float25 / 2);
else if (intDirection == 10)
return new Vector2(-1.0f - float45,//225°
1.0f + float45);
else if (intDirection == 11)
return new Vector2(-1.5f - float25 - float25 / 2,//247.5°
0.5f + float25 + float25 / 2);
else if (intDirection == 12)
return new Vector2(-2.0f, 0.0f);//270°
else if (intDirection == 13)
return new Vector2(-1.5f - float25 - float25 / 2,//292.5°
-0.5f - float25 - float25 / 2);
else if (intDirection == 14)
return new Vector2(-1.0f - float45,//315°
-1.0f - float45);
else if (intDirection == 15)
return new Vector2(-0.5f - float25 - float25 / 2,//337.5°
-1.5f - float25 - float25 / 2);
else
return new Vector2(0, 0);
}
float float25 = 22.5f;
float float45 = 45.0f;
float flagOne = 0.0f;
float flagTwo = 0.0f;
float paOne = 0;
float paTwo = 0;
int intDirection = 15;
for (int i = 0; i <= intDirection; i++)
{
if (i < 5)
{
flagOne = 0.5f * i + 0.0f;
flagTwo = -2.0f + 0.5f * i;
}
else
{
if (i < 9)
{
flagOne -= 0.5f;
flagTwo = -2.0f + 0.5f * i;
}
else
{
flagTwo = flagTwo - 0.5f;
if (i > 12)
{
flagOne += 0.5f;
}
else
{
flagOne -= 0.5f;
}
}
}
}
if (-1 < intDirection && intDirection < 16)
{
if (intDirection % 2 == 0 && intDirection % 4 != 0)
{
paOne = flagOne + float45;
paTwo = flagTwo - float45;
}
else if (intDirection % 4 == 0)
{
paOne = flagOne;
paTwo = flagTwo;
}
else if (intDirection < 9)
{
paOne = flagOne + float25 + float25 / 2;
if (intDirection > 4)
{
paTwo = flagTwo + float25 + float25 / 2;
}
else
{
paTwo = flagTwo - float25 - float25 / 2;
}
}
else
{
paOne = flagOne - float25 - float25 / 2;
if (intDirection > 12)
{
paTwo = flagTwo - float25 - float25 / 2;
}
else
{
paTwo = flagTwo + float25 + float25 / 2;
}
}
}
Response.Write("paOne: " + paOne.ToString() + ",paTwo: " + paTwo.ToString());
private Vector2 Vector216DirectionSpeed2_3(int intDirection)
{
float floatPiDivide360 = MathHelper.Pi / 360;
float float25 = floatPiDivide360 * 22.5f;
float float45 = floatPiDivide360 * 45.0f;
float flagOne = 0.0f;
float flagTwo = 0.0f;
float paOne = 0;
float paTwo = 0;
for (int i = 0; i < intDirection; i++)
{
if (i < 5)
{
flagOne = 0.5f * i + 0.0f;
flagTwo = -2.0f + 0.5f * i;
}
else
{
flagOne = flagOne - (i - 4) * 0.5f;
if (i < 9)
{
flagTwo = -2.0f + 0.5f * i;
}
else
{
flagTwo = flagTwo - (i - 8) * 0.5f;
}
}
}
if (-1 < intDirection < 16)
{
if (intDirection % 2 == 0 && intDirection % 4 != 0)
{
paOne = flagOne + float45;
paTwo = flagTwo - float45;
}
else if (intDirection % 4 == 0)
{
paOne = flagOne;
paTwo = flagTwo;
}
else if (intDirection < 9)
{
paOne = flagOne + float25 + float25 / 2;
if (intDirection > 4)
{
paTwo = flagTwo + float25 + float25 / 2;
}
else
{
paTwo = flagTwo - float25 - float25 / 2;
}
}
else
{
paOne = flagOne - float25 - float25 / 2;
if (intDirection > 12)
{
paTwo = flagTwo - float25 - float25 / 2;
}
else
{
paTwo = flagTwo + float25 + float25 / 2;
}
}
}
return new Vector2(paOne , paTwo );
}
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
for (int n = 0; n < 16; n++)
{
int x = n < 9 ? n % 5 * (1 - n / 5) + n / 5 * (8 - n) : -((n - 8) % 5 * (1 - (n-8) / 5) + (n - 8) / 5 * (16 - n));
Console.WriteLine(n.ToString() + " " + x);
}
Console.Read();
}
}
}
0 0
1 1
2 2
3 3
4 4
5 3
6 2
7 1
8 0
9 -1
10 -2
11 -3
12 -4
13 -3
14 -2
15 -1