在先前绘制的两个点之后绘制第三个点。的Cocos2D

时间:2012-06-15 23:36:50

标签: objective-c ios cocos2d-iphone

好的,让我试着以最好的方式解释这个。

我有两个点绘制'A'和'B',我试图绘制第三个点'C',以便它过去点'B'但沿着相同的斜率。我有线的角度,我会发布一些代码,但我真的不知道从哪里开始。

任何帮助都会很棒!

我只有一些代码

CGPoint vector = ccpSub(touchedPoint, fixedPoint);
CGFloat rotateAngle = -ccpToAngle(vector);

2 个答案:

答案 0 :(得分:2)

假设你的意思是你需要加一个第三点C使得所有的点都是共线的,你需要做的就是计算从A到B的向量,然后通过加上倍数生成一个新的点该向量到B点。根据您希望C来自B的距离选择倍数。

例如,假设A =(2,2),B =(4,3)。然后从A到B的矢量由(2,1)给出。

然后你需要做的就是弄清楚你的新点距离B的距离,并在你的B点添加一个K *(2,1),其中K被选中以满足距离的要求

我假设您使用2D,但相同的方法适用于更高维度

答案 1 :(得分:1)

我的数学生锈,但线性方程通常表示为y = m * x + b,其中m是斜率,b是y轴截距。你可以通过取y值的差值并除以x值的差值得到m,即斜率,例如,如果A =(2,2)和B =(4,3),那么m是( 3-2)/(4-2)或0.5。然后,你可以求解b的线性方程,y-截距,即b = y-m * x,然后插入任一数据点,例如:如果我们插入A点的x和y值,则得到b = 2 - 0.5 * 2 = 1.现在知道斜率,m(本例中为0.5)和y截距,b(本例中为1) ),您可以使用y = m * x + b计算任何x值的y,在这种情况下y = 0.5 * x + 1.

所以,如果touchPoint和fixedPoint是CGPoint,你可以像fixedPoint和touchPoint那样计算斜率和y截距:

double m = (fixedPoint.y - touchedPoint.y) / (fixedPoint.x - touchedPoint.x);
double b = fixedPoint.y - m * fixedPoint.x;

现在,您没有说明如何确定第三点C的位置。但是,例如,如果你知道这个新点C的x坐标,你可以计算出同一行的y坐标,如下所示:

CGPoint pointC;
pointC.x = 400; // or set this to whatever you want
pointC.y = m * pointC.x + b;