惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

A
About on SuperTechFans
D
DataBreaches.Net
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
V
Visual Studio Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog RSS Feed
Recent Announcements
Recent Announcements
The Register - Security
The Register - Security
S
Secure Thoughts
Y
Y Combinator Blog
The Last Watchdog
The Last Watchdog
L
LINUX DO - 最新话题
V2EX - 技术
V2EX - 技术
腾讯CDC
GbyAI
GbyAI
G
Google Developers Blog
博客园 - 司徒正美
博客园 - 三生石上(FineUI控件)
T
The Exploit Database - CXSecurity.com
T
Threat Research - Cisco Blogs
P
Proofpoint News Feed
Schneier on Security
Schneier on Security
Microsoft Security Blog
Microsoft Security Blog
Jina AI
Jina AI
WordPress大学
WordPress大学
aimingoo的专栏
aimingoo的专栏
MyScale Blog
MyScale Blog
Help Net Security
Help Net Security
K
Kaspersky official blog
P
Privacy & Cybersecurity Law Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
AI
AI
MongoDB | Blog
MongoDB | Blog
Scott Helme
Scott Helme
J
Java Code Geeks
Engineering at Meta
Engineering at Meta
H
Heimdal Security Blog
H
Help Net Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
云风的 BLOG
云风的 BLOG
Microsoft Azure Blog
Microsoft Azure Blog
S
Security Affairs
TaoSecurity Blog
TaoSecurity Blog
The GitHub Blog
The GitHub Blog
Hacker News: Ask HN
Hacker News: Ask HN
Martin Fowler
Martin Fowler
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Project Zero
Project Zero
T
The Blog of Author Tim Ferriss
Last Week in AI
Last Week in AI

Leon.D’s Blog

使用Element.animate添加文字与图片动画 Howdz起始页开发记录 利用G渲染器实现的音频可视化方案 Vue3实现自定义右键菜单 Dashboard自定义面板项目介绍 开发Online Code Editor过程的一些记录 Howdyjs组件库迁移Vue3设计与总结 使用Taro-next将个人网盘功能扩展到微信小程序 Vue3上手, 使用vite实现一个简单的Todolist应用 断点续传与个人网盘系统的前后端设计 个人组件库展示站点搭建总结 Github Webhooks与Koa2实现简单的前端自动化部署 浏览器导航首页设计 CSS实现判断鼠标进入方向 简易电商系统开发记录(Nuxtjs+Koa) 考试系统设计总结
使用D3.js将离散的点形成平滑曲线及其应用
2020-08-16 · via Leon.D’s Blog

前言

之前遇到了一个场景,需要将多个离散的点使用一条平滑的曲线连起来。在网上找了很多方案,一般都是说使用**三次样条插值**实现。自己参考网上算法写了下,发现效果不太理想。然后看到 D3js 官方原来直接内置了多种相关算法,但官方并没有提供效果展示,于是就编写了一个简单的可以快速看到各种连线算法的效果图的 DEMO。

多点连线 Demo

Demo 访问地址: https://kongfandong.cn/demo/d3-multipoint-connection/index.html

PS:PC 端支持拖拽更改点位置,移动端暂不支持

  • LineType:切换不同的 D3 内置的连线类型
  • Add Random Point: 你可以添加更多的点进行连线
  • 各个点可以拖拽更改当前位置
  • 部分连线算法可以修改系数参数(bundle、cardinal、catmullRom)

利用 D3js 的这个连线算法,实现了一个简单的曲线自动校正的 Canvas 画板,参考下面的 Demo

曲线自动校正 Demo

Demo 访问地址: https://kongfandong.cn/demo/d3-adjust-line/index.html

  • Canvas 简易画板
  • 设置的 AdjustAngel 配置偏移角度
  • 通过 AdjustAngel 进行点的取样,然后使用 D3js 的连线算法进行重连

总结

实现平滑的曲线,可以通过 D3js 内置的几种曲线算法生成一个插值曲线,该曲线原则上是贝塞尔曲线,所以可以在 SVG 和 Canvas 中都可以应用上。若要研究各种曲线算法的原理请参考官方源码。

官方文档:https://d3js.org.cn/document/d3-shape/#curves