CGRect与一个angular度

我有一个线,这是一个使用这个代码的精灵

CGPoint diff = ccpSub(startLocation, endLocation); float rads = atan2f( diff.y, diff.x); float degs = -CC_RADIANS_TO_DEGREES(rads); float dist = ccpDistance(endLocation, startLocation); CCSprite *line = [CCSprite spriteWithFile:@"line.png"]; [line setAnchorPoint:ccp(0.0f, 0.5f)]; [line setPosition:endLocation]; [line setScaleX:dist / line.boundingBox.size.width]; [line setRotation: degs]; line.tag = 1; [_lines addObject:line]; [self addChild:line]; 

现在在我的碰撞检测代码中,我使用下面的代码来创build一个CGRect:

  CGRect lineRect = CGRectMake( line.position.x - (line.contentSize.width/2), line.position.y - (line.contentSize.height/2), line.contentSize.width, line.contentSize.height); 

这当然是错误的,因为线是使用一个angular度。

我试图比较一个矩形,方形精灵,这个矩形。 这个想法是一个angular色正在移动,玩家可以画出一条线,如果angular色击中了线,则反方向弹起。

我有angular度,线的一边的x和y位置和线的长度。 如何获得线路另一侧的另一个x&y位置?

希望你们能帮助我。

提前致谢!

要知道我是否正确理解你有点困难,但是当你说“…线的另一侧的另一个x&y位置”时,我假定你的意思是线的相反端点的坐标是什么。

如果是这样,我相信你可能正在寻找的实际公式是:

  1. {x1,y1} =你已经拥有的起点
  2. {x2,y2] =你正在寻找的点

    • x2 = x1 +(距离* cosA)
    • y2 = y1 +(距离* sinA)

但正如我前面提到的,我有点不确定这是否会给你所需要的东西。 如果您实际上正在查找Line.png的边界框的另一侧的顶点,则可能仍然可以使用该公式,但将度数更改为90,以确定x和y的坐标偏移量你已经知道了。

无论如何,我希望至less有助于把你放在一个有益的方向。

您应该查找CGRectApplyAffineTransformCGAffineTransformMakeRotation和可能的CGAffineTransformMakeTranslation的文档。