C#绘制雷达缩放和定心问题图
我想在图片盒上画一个雷达。画分数没问题,但我正在努力学习基础数学。也许我太累了 我有一个200x200的图片盒。我在picturebox(4x4)中加载了一个小的居中图像,它象征着当前的玩家 我已经构建了一个名为 油漆雷达(int meX、int meY、int enemyX、int enemyY) 参数可以有以下值:meX=27000、meY=30000、enemyX=26000、enemyY=28000 理想的结果是有敌人围绕着我,我总是在图片框中居中。我必须计算什么才能将meX和meY置于图片框的中心C#绘制雷达缩放和定心问题图,c#,math,coordinates,C#,Math,Coordinates,我想在图片盒上画一个雷达。画分数没问题,但我正在努力学习基础数学。也许我太累了 我有一个200x200的图片盒。我在picturebox(4x4)中加载了一个小的居中图像,它象征着当前的玩家 我已经构建了一个名为 油漆雷达(int meX、int meY、int enemyX、int enemyY) 参数可以有以下值:meX=27000、meY=30000、enemyX=26000、enemyY=28000 理想的结果是有敌人围绕着我,我总是在图片框中居中。我必须计算什么才能将meX和meY置于
感谢
< P>假定玩家处于敌人的中间,根据他们的位置和玩家的位置之间的差异画出敌人的中心。p> 想一想,就好像玩家是起源一样。通过从敌人的位置中减去玩家的位置,你将敌人的位置放入一个以玩家为中心的坐标系中。这就是你的雷达 例如:// 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;
}
如果您首先假设
meX,meY
为0,0,那么您不能找到enemyX,enemyY
的差异,然后相应地缩放以适应图片框吗?…或者您可以使用和平移/缩放图形,然后在其原始坐标处绘制所有内容。