我在一个屏幕坐标空间中工作,它不同于经典的X/Y坐标空间,其中我的Y方向在正向下降,而不是向上。C#矢量数学问题
我也试图弄清楚如何让我的屏幕上的圆始终背离屏幕的中心点。
如果我的屏幕的中心点在x(200)y(300)并且我的圆心的点在x(150)和y(380),那么我想计算圆的角度应该面对。
目前,我有这样的:
Point centerPoint = new Point(200, 300);
Point middleBottom = new Point(200, 400);
Vector middleVector = new Vector(centerPoint.X - middleBottom.X, centerPoint.Y - middleBottom.Y);
Vector vectorOfCircle = new Vector(centerPoint.X - 150, centerPoint.Y - 400);
middleVector.Normalize();
vectorOfCircle.Normalize();
var angle = Math.Acos(Vector.CrossProduct(vectorOfCircle, middleVector));
Console.WriteLine("Angle: {0}", angle * (180/Math.PI));
我不是得到什么我期望的那样。
我会说,当我在我的圈子的x(150)和y(300)中输入时,我期望看到90度的旋转,但我没有得到那个...我得到180!
在这里的任何帮助将不胜感激。
干杯, 马克
圆圈如何面向方向?它具有∞倍的径向对称性。此外,你不断改变圆的中心。是(150,380),(150,400)还是(150,300)? – outis 2010-04-22 07:15:37