一台固定位置 可180度左右旋转的炮
要怎么去计算炮口的位置?
假如炮口离旋转的中心点100个像素.
x坐标为500,y坐标为300
int degrees = 270;
int centerX = 500;
int centerY = 300;
double angle = Math.PI * degrees / 180.0;
double x = Math.Cos(angle) * 100 + centerX;
double y = Math.Sin(angle) * 100 + centerY;
MessageBox.Show(degrees + "度\n炮口X坐标" + x + "\n炮口Y坐标" + y);
按着这个算法
做起来不知道为什么好像有少许偏差
http://user.qzone.qq.com/2993354/infocenter?ptlang=2052&ADUIN=2993354&ADSESSION=1264887761&ADTAG=CLIENT.QQ.2653_Mysrv.0
偏差就如上面日志里的3张图
貌似是因为我大炮图片原来就是横向右边的缘故?
导致中心点错了?
如何得到炮口的坐标?
答案:2 悬赏:0
解决时间 2021-11-13 06:00
- 提问者网友:烟刺痛了眼
- 2021-11-12 18:19
最佳答案
- 二级知识专家网友:劳资的心禁止访问
- 2021-11-12 18:38
我看不了你的图片你发到百度上吧,无论炮口朝向哪个方向中心点(x坐标为500,y坐标为300)肯定是不会变得,因为这个算法算出来都是double类型,而你要绘制在窗体上的坐标必须是int类型,所以误差是在所难免的,.NET DrawEllipse方法画出圆也有一定的偏差,这个没有办法
有偏差吗?具体在哪有问题?
你可以按照炮旋转的角度计算(我指的是0-360之间的旋转),如下
private void button1_Click(object sender, EventArgs e)
{
int degrees = 270;
int centerX = 500;
int centerY = 300;
double angle = Math.PI * degrees / 180.0;
double x = Math.Cos(angle) * 100 + centerX;
double y = Math.Sin(angle) * 100 + centerY;
MessageBox.Show(degrees + "度\n炮口X坐标" + x + "\n炮口Y坐标" + y);
}
有偏差吗?具体在哪有问题?
你可以按照炮旋转的角度计算(我指的是0-360之间的旋转),如下
private void button1_Click(object sender, EventArgs e)
{
int degrees = 270;
int centerX = 500;
int centerY = 300;
double angle = Math.PI * degrees / 180.0;
double x = Math.Cos(angle) * 100 + centerX;
double y = Math.Sin(angle) * 100 + centerY;
MessageBox.Show(degrees + "度\n炮口X坐标" + x + "\n炮口Y坐标" + y);
}
全部回答
- 1楼网友:一池湖水
- 2021-11-12 19:30
没有那么简单的事!!!!
自己从(0,0,0)-(1,2,3)一个一个试吧!!
要做一个mod是很难的
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯