我正在尝试为我的游戏创建一个挖掘工具,我有点A和B的x和y坐标,我想做的是在这些点之间创建一条曲线,没有图形,我只需要循环遍历坐标(float x,float y)。
我不擅长解释,以下是一个视觉示例;
第二张图片是我需要的。
我正在Unity上开发游戏,使用Vector2作为坐标,但这并不重要。 纯C#甚至C++都可以。 如果有人能够解释我所尝试做的事情背后的数学,那也可以。
我不擅长解释,以下是一个视觉示例;
如果我只使用for循环将y值递减到中间,然后从中间递增到结尾,那么第一张图片就是发生的情况。
//Very specific code for my example
//I wrote it just for this example so I am not sure if it works
float y;
float x;
public void Example(float startX, float endX, float startY, float endY, float depth)
{
y = startY;
x = startX;
float changeAmountOfY = depth / (endX - startX);
for (int i = (int)startX; i < (startX + endX) / 2; i++)
{
x++;
y -= changeAmountOfY;
}
for (int i = (int)(startX + endX) / 2; i < endX; i++)
{
x++;
y += changeAmountOfY;
}
}
public void ChangeCoordinates()
{
Example(100f, 200f, 100f, 100f, 50f);
}
第二张图片是我需要的。
我正在Unity上开发游戏,使用Vector2作为坐标,但这并不重要。 纯C#甚至C++都可以。 如果有人能够解释我所尝试做的事情背后的数学,那也可以。
-sin(alpha)*radius
,y的变化应该是cos(alpha)*radius
。 - Pac0int radius = 50; y = startY; x = startX; for (int alpha = -180; alpha < 0; alpha++) {x += -Mathf.Sin(alpha)*radius; y += Mathf.Cos(alpha)*radius; }
。我希望我的三角函数和微积分计算是正确的... 重要 我假设cos
和sin
实际上使用度数而不是弧度。 - Pac0-Mathf.PI
,并将alpha ++
更改为较小的增量,例如alpha += Mathf.PI / 100
。 - Pac0