我们拥有什么: 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));
答案 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 algebra
或analytic geometry
。了解基础知识对每个程序员来说都是必须的。