我想绘制一条曲线并将一个物体附加到它上面。是否可以创建分数(从0.0到1.0),这使得我的对象在路径上移动?当分数为0时,对象在开头,当0.5在中途时,最后当在1.0时,它在最后。当然我想要一个弯曲的路径,而不是一条直线:)是否可以在PaintCode中完成?
答案 0 :(得分:2)
如果只需作为进度条,则可以在PaintCode中使用。诀窍是使用带有非常大的 Gap 的虚线笔划,然后只需更改 Dash 。
然后只需附加一个变量就可以了。
编辑:关于原帖下的讨论,此解决方案使用 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]
并绘制您的对象在给你的价值。