计算两个CGPoint的外部点

时间:2013-04-02 10:03:29

标签: iphone ios xcode cocos2d-iphone

我们拥有什么: 1)m_ptBulletStartPos点 2)触摸移动点

计算什么: 通过投掷弹出点并触摸移动点并根据触摸移动旋转的线上的外部点。

如何获得它:我们创建一个方法,我们在其中绘制虚线,此函数调用根据另一个根据触摸移动点响应的函数。

我必须计算两个CGPoint的外部点。

我的第一个CGPoint是 - ccp(m_ptBulletStartPos.x,m_ptBulletStartPos.y); //固定点

第二个CGPoint是 - 在touchesMoved

我将CGPoint对象添加到一个数组中。

                      External point(it will move accruing to touch moved
                         |
                         |
                         |
                         |
          ccp(m_ptBulletStartPos.x,m_ptBulletStartPos.y)// it should be fixed like anchor
                         |
                         |
                         |
                         |
                    Touch move point : ccp(touch.x,touch.y)

这是我的代码根据Finding external point工作,但它无法正常工作。

CGPoint myexternalPoint=ccp(230,60);    //suppose
float fDistancem        = sqrt(pow(myexternalPoint.x - point.x, 2) + pow(myexternalPoint.y - point.y, 2));
float fDistancen        = sqrt(pow(myexternalPoint.x - m_ptBulletStartPos.x, 2) + pow(myexternalPoint.y - m_ptBulletStartPos.y, 2));    
CGFloat xdt=(fDistancem*point.x-fDistancen*m_ptBulletStartPos.x)/(fDistancem-fDistancen);
CGFloat ydt=(fDistancem*point.y-fDistancen*m_ptBulletStartPos.y)/(fDistancem-fDistancen);
CGPoint newexternalPoint = ccp(xdt, ydt);
NSLog(@"new externalPoint %@", NSStringFromCGPoint(newexternalPoint));

1 个答案:

答案 0 :(得分:1)

CGPoint fixedPoint = ...
CGPoint touchPoint = ...

CGPoint direction
direction.x = fixedPoint.x - touchPoint.x;
direction.y = fixedPoint.y - touchPoint.y;

CGPoint calculatedPoint;
calculatedPoint.x = fixedPoint.x + direction.x;
calculatedPoint.y = fixedPoint.y + direction.y;

这是你想要的吗?如果您希望该点更接近fixedPoint,只需将direction与一个因子相乘。

有关详细信息,您可以Google vector algebraanalytic geometry。了解基础知识对每个程序员来说都是必须的。