C#绘制雷达定标和居中问题
C# Drawing a radar scaling and centering problems
我想在 pictureBox 上画一个雷达。画点没问题,但我正在努力学习基础数学。可能是我太累了
我有一个 200x200 的图片框。我在图片框 (4x4) 中加载了一个居中的小图像,它象征着当前玩家。
我构建了一个名为
的函数
PaintRadar(int meX, int meY, int enemyX, int enemyY)
参数可以有以下值:meX = 27000,meY = 30000,enemyX = 26000,enemyY = 28000
期望的结果是敌人围绕在我身边,而我始终位于图片框的中心。我需要计算什么才能使 meX 和 meY 在 pictureBox 中居中?
谢谢
假设玩家在敌人的中间,根据敌人的位置和玩家的位置之间的差异将敌人画在中心周围。
想一想,就好像玩家是原点一样。通过从敌人的位置中减去玩家的位置,您可以将敌人的位置置于以玩家为中心的坐标系中。这基本上就是你的雷达。
示例:
// Get differences. d is short for difference (or delta :)).
int dy = enemyY - meY;
int dx = enemyX - meX;
// Then scale the dy and dx values so they fix in the picture box.
dy *= scaleY;
dx *= scaleX;
然后把敌人画在图片框的(dx,dy)处。
比例应该是这样的公式:
scaleY = (1 / maxDetectionDistance) * (heightOfRadarBox / 2);
scaleX = (1 / maxDetectionDistance) * (widthOfRadarBox / 2);
不应绘制任何大于雷达限制的内容。
// Don't draw if enemy is too far away for radar to pick up.
if (Math.Abs(dy) > maxDetectionDistance || Math.Abs(dx) > maxDetectionDistance)
{
return;
}
我想在 pictureBox 上画一个雷达。画点没问题,但我正在努力学习基础数学。可能是我太累了
我有一个 200x200 的图片框。我在图片框 (4x4) 中加载了一个居中的小图像,它象征着当前玩家。
我构建了一个名为
的函数PaintRadar(int meX, int meY, int enemyX, int enemyY)
参数可以有以下值:meX = 27000,meY = 30000,enemyX = 26000,enemyY = 28000
期望的结果是敌人围绕在我身边,而我始终位于图片框的中心。我需要计算什么才能使 meX 和 meY 在 pictureBox 中居中?
谢谢
假设玩家在敌人的中间,根据敌人的位置和玩家的位置之间的差异将敌人画在中心周围。
想一想,就好像玩家是原点一样。通过从敌人的位置中减去玩家的位置,您可以将敌人的位置置于以玩家为中心的坐标系中。这基本上就是你的雷达。
示例:
// Get differences. d is short for difference (or delta :)).
int dy = enemyY - meY;
int dx = enemyX - meX;
// Then scale the dy and dx values so they fix in the picture box.
dy *= scaleY;
dx *= scaleX;
然后把敌人画在图片框的(dx,dy)处。
比例应该是这样的公式:
scaleY = (1 / maxDetectionDistance) * (heightOfRadarBox / 2);
scaleX = (1 / maxDetectionDistance) * (widthOfRadarBox / 2);
不应绘制任何大于雷达限制的内容。
// Don't draw if enemy is too far away for radar to pick up.
if (Math.Abs(dy) > maxDetectionDistance || Math.Abs(dx) > maxDetectionDistance)
{
return;
}