首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PaintCode -在路径上移动对象

PaintCode -在路径上移动对象
EN

Stack Overflow用户
提问于 2015-10-05 15:31:36
回答 2查看 479关注 0票数 1

我想画一条曲线,并在上面附加一个物体。是否可以创建分数(从0.0到1.0),从而在路径上移动我的对象?当分数为0时,对象在开始处,当0.5在中途,最后当分数为1.0时,对象在末尾。当然我想要一条曲线路径,而不是一条直线:)在PaintCode中可以做到吗?

EN

回答 2

Stack Overflow用户

发布于 2015-11-22 18:00:11

如果你只需要作为一个进度条,那么在PaintCode中也是可行的。诀窍是使用虚线笔划与非常大的间隙,然后只需改变划线。

然后,只需附加一个变量,就完成了。

编辑:关于原始帖子下的讨论,此解决方案以点为单位,因此无论贝塞尔曲线如何弯曲,它都将均匀分布在曲线上。

票数 2
EN

Stack Overflow用户

发布于 2015-10-12 02:10:52

基于这样的事实,你将使用线性距离沿着曲线行走,这是贝塞尔曲线可怕的地方,你需要自己构建线性映射。不过,这相当简单:

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

代码语言:javascript
复制
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]并在给出的值处绘制对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32943343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档