Objective c 在先前绘制的两个点之后绘制第三个点。Cocos2d

Objective c 在先前绘制的两个点之后绘制第三个点。Cocos2d,objective-c,ios,cocos2d-iphone,Objective C,Ios,Cocos2d Iphone,好吧,让我试着用最好的方式来解释这一点 我画了两个点‘A’和‘B’,我试图画第三个点‘C’,这样它就越过了点‘B’,但沿着相同的坡度。我有线的角度,我会发布一些代码,但我真的不知道从哪里开始 任何帮助都会很棒 我有一点代码 CGPoint vector = ccpSub(touchedPoint, fixedPoint); CGFloat rotateAngle = -ccpToAngle(vector); 假设您的意思是需要添加第三个点C,这样所有点都是共线的,您需要做的就是计算从a到B的向

好吧,让我试着用最好的方式来解释这一点

我画了两个点‘A’和‘B’,我试图画第三个点‘C’,这样它就越过了点‘B’,但沿着相同的坡度。我有线的角度,我会发布一些代码,但我真的不知道从哪里开始

任何帮助都会很棒

我有一点代码

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

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

例如,假设A=(2,2),B=(4,3)。那么从A到B的向量由(2,1)给出

然后你需要做的就是计算出你的新点离B有多远,然后在你的点B上加上一个倍数K*(2,1),其中K被选择以满足你的距离要求


我假设你是二维的,但是同样的方法也适用于更高的维度,我的数学已经不可靠了,但是线性方程通常表示为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

因此,如果接触点和固定点是CGPoint,则可以计算固定点和接触点的斜率和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;

你的意思是你想要所有的3个点都是共线的?