我有:
private double AngleToRadians(double angle)
{
return (Math.PI / 180) * angle;
}
double x = 30, y = 60;
var dist = 10;
var angle = 120;
x = x + dist * Math.Cos(AngleToRadians(angle));
y = y + dist * Math.Sin(AngleToRadians(angle));
这样做会给我一个新坐标,从(x,y)起点开始向方向(角度)10点。
这在右上象限中正常工作,但在其他三个象限中没有。
是否有一个适用于所有4个公式的公式?
答案 0 :(得分:1)
x = x + dist * Math.Cos(AngleToRadians(angle));
y = y + dist * Math.Sin(AngleToRadians(angle));
对于中心点和终点,您似乎使用相同的x和y变量,因此每次更新中心坐标
只需使用x0, y0
作为中心,x, y
作为结束点
x = x0 + dist * Math.Cos(AngleToRadians(angle));
答案 1 :(得分:-1)
提示:
如果台球桌无限大并且球无法到达墙壁,则可以通过以下公式计算出停球的坐标(X,Y)。 X = L * cos(θ)+ x Y = L * sin(θ)+ y