0

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

计算内容:通过投掷弹罩点和触摸移动点并根据触摸移动旋转的直线上的外部点。

获取方法:我们创建一个方法,在其中绘制虚线,该函数根据另一个函数调用,该函数根据触摸移动点响应工作。

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

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

第二个 CGPoint 是 - At 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)

这是我的代码根据查找外部点工作,但工作不正确。

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));
4

1 回答 1

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一个因子。

欲了解更多信息,您可以 googlevector algebraanalytic geometry. 了解基础知识是每个程序员必须的。

于 2013-04-02T10:10:22.313 回答