我想画一条曲线,并在上面附加一个物体。是否可以创建分数(从0.0到1.0),从而在路径上移动我的对象?当分数为0时,对象在开始处,当0.5在中途,最后当分数为1.0时,对象在末尾。当然我想要一条曲线路径,而不是一条直线:)在PaintCode中可以做到吗?
发布于 2015-11-22 18:00:11
如果你只需要作为一个进度条,那么在PaintCode中也是可行的。诀窍是使用虚线笔划与非常大的间隙,然后只需改变划线。

然后,只需附加一个变量,就完成了。
编辑:关于原始帖子下的讨论,此解决方案以点为单位,因此无论贝塞尔曲线如何弯曲,它都将均匀分布在曲线上。
发布于 2015-10-12 02:10:52
基于这样的事实,你将使用线性距离沿着曲线行走,这是贝塞尔曲线可怕的地方,你需要自己构建线性映射。不过,这相当简单:
在绘制曲线时,还要构建一个查找表,该表在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中留下空白-您可以将它们作为次要步骤进行修复,或者只需将它们留在数组中并对数组进行二进制扫描,以找到最接近的“确实有值”百分比。
然后,当您需要将进度显示为某个百分比值时,您只需查找相应的t值:假设您需要显示83%,您可以查找lut[83]并在给出的值处绘制对象。
https://stackoverflow.com/questions/32943343
复制相似问题