【发布时间】:2012-01-19 20:46:36
【问题描述】:
我有一个 Array 中的最后两个 CGPoints,其中包含用户绘制的 linedraw 点。我需要以相同的角度延长线到固定距离。所以我首先在以下代码的帮助下计算最后两点之间的角度
-(CGFloat)angleBetweenFirstPoint:(CGPoint)firstPoint ToSecondPoint:(CGPoint)secondPoint
{
CGPoint diff = ccpSub(secondPoint, firstPoint);
NSLog(@"difference point %f , %f",diff.x,diff.y);
CGFloat res = atan2(diff.y, diff.x);
/*if ( res < 0 )
{
res = (0.5 * M_PI) + res;
}
if ( dx<0 && dy>0 ) { // 2nd quadrant
res += 0.5 * M_PI;
} else if ( dx<0 && dy<0 ) { // 3rd quadrant
res += M_PI;
} else if ( dx>0 && dy<0 ) { // 4th quadrant
res += M_PI + (0.5 * M_PI);
}*/
//res=res*180/M_PI;
res = CC_RADIANS_TO_DEGREES(res);
return res;
}
在计算角度后,我借助以下数学找到延伸点
-(void)extendLine
{
lineAngle = [self angleBetweenFirstPoint:pointD ToSecondPoint:endPt];
extendEndPt.x = endPt.x - cos(lineAngle) * 200;
extendEndPt.y = endPt.y - sin(lineAngle) * 200;
// draw line unto extended point
}
但是我得到的观点是不正确地以与原始线相同的角度绘制延长线。 我认为这是因为我在最后几点之间没有正确的角度..我可能做错了什么?在考虑角度以及如何考虑时,我是否需要考虑整个象限系统?和 m 在横向模式下工作。这有什么区别吗??
【问题讨论】:
标签: ios math cocos2d-iphone