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

推荐订阅源

S
SegmentFault 最新的问题
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
B
Blog RSS Feed
Y
Y Combinator Blog
T
Tailwind CSS Blog
博客园 - 三生石上(FineUI控件)
J
Java Code Geeks
Stack Overflow Blog
Stack Overflow Blog
aimingoo的专栏
aimingoo的专栏
Jina AI
Jina AI
The GitHub Blog
The GitHub Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
A
About on SuperTechFans
H
Hackread – Cybersecurity News, Data Breaches, AI and More
D
Docker
酷 壳 – CoolShell
酷 壳 – CoolShell
C
Check Point Blog
M
MIT News - Artificial intelligence
Last Week in AI
Last Week in AI
V
V2EX
腾讯CDC
F
Fortinet All Blogs
博客园 - 叶小钗
T
The Blog of Author Tim Ferriss

博客园 - See Me Fly

[MVC] Code First中Migration的问题 [MVC]开篇 搭建小型邮件服务器 Visual Studio中添加Service异常 IIS7 IIS8上面运行 ASP [IIS] 不能加载类型System.ServiceModel.Activation.HttpModule [DICOM] Download ClearCanvas Source Code [DICOM] 开篇 研究SplendidCRM UnauthorizedAccessException trying to delete a file [转]C#WinForm - 立即更新静态文本Label Crystal Report 2011连接SQL Server 2008失败 Xcode: 给项目添加framework DC中用户的同步问题 用VNC连接Mac OS Xcode访问SVN服务器 Window 7访问共享目录问题 JIRA配置SSL Failed to install MSXML6 when installing SQL Server 2005 - See Me Fly
画圆滑的曲线连接地图上面的点
See Me Fly · 2012-10-10 · via 博客园 - See Me Fly

问题 :

最近碰到一个问题,就是在地图(baidu或google)上面画等值线,但是这些地图的API不提供画曲线,只能画多边形。如天气预报中的台风强度图,如等高线。

但需求中能获得地图上面的点是有限的,而且不多。如7、8个点,需要用一条平滑的曲线来连接着几个点。

所以考虑自己来写个算法,通过给定的几个点,来计算出圆滑曲线上面的点。用折线来逼近曲线。

(最后实现效果图)

曲线模型:

首先要考虑的是生成曲线的模型(函数), 如一次取三个点,计算出经过这三点的圆。截取第一段,移到下一个点继续计算圆。理论应该可行,但曲线弧度不能控制,曲线与曲线之间过渡不能平滑。

在Photoshop里面,钢笔工具可以制作曲线,用的是贝塞尔曲线。这个模型可以实现任何的图形。

参考百度百科(http://baike.baidu.com/view/60154.htm )

 实现步骤:

输入:x1-y1,x2-y2,...,xn-yn.

输出:X1-Y1,X2-Y2,....Xm-Ym (m = K*n,K是倍数)

1)  先使用递归算法,将输入的点排序。用直线将相邻的两个点(最后一个点连接第一个点),最后得到的是一个多边形(没有任何两条线段相交)。

2) 计算出每个点左右连个辅助点。

3) 根据贝塞尔曲线的计算方法,算出中间过渡点。

参考连接:

Possible to position elements along a curve using javascript/jQuery? 

Bezier Sample

贝塞尔曲线