我在另外两个点之间的线上有一个标签点。从线的第一个点说它的 20 像素。
现在我想移动线的第一个点,带上标签点,所以我移动第一个点并将线重绘到线的最后一点。工作正常,但我如何将标签移动到新行,从左边再次放置 20px。
(长度 20px 作为一个变量而有所不同,具体取决于用户将标签放在哪里)。
我在想虽然使用 Y=kx+m 不能正确...
这是我到目前为止所写的:
-(double)positionOfLabel{
//return relative position of label on old line, relatively the first point.
return [self length]- sqrt(self.label.center.x*self.label.center.x+self.label.center.y*self.label.center.y);
//return [self length]-sqrt((self.last.x - self.label.center.x)*(self.last.x - self.label.center.x) + (self.last.y - self.label.center.y)*(self.last.y - self.label.center.y));
}
-(void)labelTranslate:(double)length{
NSLog(@"Translating label length:%f", [self length]);
double m= (self.last.y-self.first.y)/(self.last.x-self.first.x);
double x= self.first.x+length/(sqrt(1+m*m));
double y= x*m;
NSLog(@"Moving label to:%f,%f", x,y);
[self.label setCenter:CGPointMake(x, y)];
}
标签的位置意味着返回标签放置的第一个点的距离。
线条移动示例,因此线条图像末端的两个点
正如您在图像中看到的,箭头表示由第一个点和最后一个点组成的线。红点和第一个点之间的距离在箭头的移动/平移过程中被保留。但是,这不适用于我的算法