android学习18——对PathMeasure中getPosTan的理解
考虑这样的场景:要实现物体沿直接或曲线运动的效果.这就要算出某个时刻t,物体的坐标.getPosTan就是用来求坐标的.看下面的代码:
float step = 0.0001f;
Path path = new Path();
path.moveTo(100, 600);
path.cubicTo(400, 200, 700, 300, 800, 700);
PathMeasure measure = new PathMeasure(path, false);
float len = measure.getLength();
float[] point = new float[2];
for (float t = 0; t <= 1; t += step) {
float dis = t * len;
measure.getPosTan(dis, point, null);
canvas.drawPoint(point[0], point[1], paint);
}
path定义了一个bezier曲线.getPosTan(dis, point, null)得到在曲线长度为dis时的坐标. 让dis从0到measure.getLength(),就可以取到bezier曲线上所有点的坐标.
参考资料
- android官方api https://developer.android.com/reference/android/graphics/PathMeasure.html
- 倪明田,吴良芝. 计算机图形学. p210-216. 北京大学出版社. 2014.
- 贝塞尔曲线扫盲 http://www.html-js.com/article/1628
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义