PaintCode - 在路径上移动对象

时间:2015-10-05 07:31:36

标签: ios swift paint bezier

我想绘制一条曲线并将一个物体附加到它上面。是否可以创建分数(从0.0到1.0),这使得我的对象在路径上移动?当分数为0时,对象在开头,当0.5在中途时,最后当在1.0时,它在最后。当然我想要一个弯曲的路径,而不是一条直线:)是否可以在PaintCode中完成?

2 个答案:

答案 0 :(得分:2)

如果只需作为进度条,则可以在PaintCode中使用。诀窍是使用带有非常大的 Gap 的虚线笔划,然后只需更改 Dash

Example

然后只需附加一个变量就可以了。

编辑:关于原帖下的讨论,此解决方案使用 points 作为单位,因此无论曲线多么弯曲,它都将沿曲线均匀分布bezier是。

答案 1 :(得分:0)

基于您使用线性距离沿着曲线行走的事实,贝塞尔曲线很糟糕,您需要自己构建线性映射。这很简单:

绘制曲线时,还要构建一个查找表,对曲线进行一次采样,例如100个点(t = 0,t = 0.01,t = 0.02等)。在伪代码中:

lut = [];
lut[0] = 0;
tlen = curve.length();
for(v=0; v<=100; v++) {
  t = v/100;
  clen = curve.split(0,t).length();
  percent = 100*clen/tlen;
  lut[percent] = t;
}

这可能会在您的LUT中留下空白 - 您可以将其作为辅助步骤进行修复,或者将它们留在并对阵列执行二进制扫描以找到最近的&#34;确实有值&#34;百分比。

然后,当您需要将进度显示为某个百分比值时,您只需查找相应的t值:说您需要显示83%,然后查找lut[83]并绘制您的对象在给你的价值。