对象旋转不正确 - iPhone应用程序

时间:2011-09-30 12:55:35

标签: iphone ios math rotation cgcontext

我正在面对旋转物体的典型问题。描述如下 我拿了两个CGPoint让我们说point1和point2
point1 =(50,50)
point2 =(150,50)
这一点将绘制一条水平线。

现在我正在绘制一个带有该点的矩形。宽度为100,高度为10.角度为0.
参见屏幕截图
enter image description here

工作正常 现在我改变点,让我们说 point1 =(50,50)
point2 =(50,150)
这一点将绘制一条垂直线。

对于矩形角度为90.
使用此点矩形未正确绘制
请参见屏幕截图
enter image description here

我绘制矩形的代码是:

    CGPoint mid = CGPointMake((point1.x+point2.x)/2, (point1.y+point2.y)/2)
    CGPoint UL = CGPointMake(mid.x + ( Width / 2 ) * cos (A) - ( Height / 2 ) * sin (A) ,  mid.y + ( Height / 2 ) * cos (A)  + ( Width / 2 ) * sin (A));
    CGContextMoveToPoint(context, UL.x,routeView.frame.size.height - UL.y);
    CGPoint UR = CGPointMake(mid.x - ( Width / 2 ) * cos (A) - ( Height / 2 ) * sin (A) ,  mid.y + ( Height / 2 ) * cos (A)  - ( Width / 2 ) * sin (A));
    CGContextAddLineToPoint(context, UR.x,routeView.frame.size.height - UR.y);
    CGPoint BR = CGPointMake(mid.x - ( Width / 2 ) * cos (A) + ( Height / 2 ) * sin (A) ,  mid.y - ( Height / 2 ) * cos (A)  - ( Width / 2 ) * sin (A));
    CGContextAddLineToPoint(context, BR.x,routeView.frame.size.height - BR.y);
    CGPoint BL = CGPointMake(mid.x + ( Width / 2 ) * cos (A) + ( Height / 2 ) * sin (A) ,  mid.y - ( Height / 2 ) * cos (A)  + ( Width / 2 ) * sin (A));
    CGContextAddLineToPoint(context, BL.x,routeView.frame.size.height - BL.y);
    CGContextAddLineToPoint(context, UL.x,routeView.frame.size.height - UL.y);

    CGContextStrokePath(context);

这里A是角度,它不是静态的,mid是point1和point2的中间点

了解更多参考see this

我错过了什么吗? 如果您有任何想法,请帮助我.......

谢谢,

1 个答案:

答案 0 :(得分:2)

让我猜一下,它实际上旋转了大约26度,对吗?

90 x 180)/ Pi~ = 5156.62 =(360 x 14)+ 90 + 26.62

你错误地将它旋转了90 弧度