c#绘制一个雷达缩放和定心问题

本文关键字:缩放 问题 雷达 一个 绘制 | 更新日期: 2023-09-27 18:16:05

我想在pictureBox上画一个雷达。画点不成问题,但我在基础数学方面很吃力。也许我太累了。

我有一个200x200的pictureBox。我已经在图片框(4x4)中加载了一个小的,居中的图像,它象征着当前的玩家。

我建立了一个函数叫做

PaintRadar(int meX, int meY, int enemyX, int enemyY)

参数取值如下:meX = 27000, meY = 30000, enemyX = 26000, enemyY = 28000

期望的结果是让敌人围绕在我周围,我总是在pictureBox的中心。我需要计算什么来居中meX和meY在pictureBox中?

谢谢

c#绘制一个雷达缩放和定心问题

假设玩家处于敌人中间,并根据他们的位置和玩家的位置之间的差异在中心周围绘制敌人。

把玩家当成原点。通过从敌人的位置中减去玩家的位置,你将敌人的位置置于一个以玩家为中心的坐标系统中。这就是你的雷达。

的例子:

// 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;
}