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

推荐订阅源

大猫的无限游戏
大猫的无限游戏
J
Java Code Geeks
小众软件
小众软件
D
Docker
腾讯CDC
H
Hackread – Cybersecurity News, Data Breaches, AI and More
V
V2EX
博客园 - 叶小钗
GbyAI
GbyAI
Microsoft Azure Blog
Microsoft Azure Blog
Stack Overflow Blog
Stack Overflow Blog
B
Blog RSS Feed
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 【当耐特】
IT之家
IT之家
博客园 - 司徒正美
M
MIT News - Artificial intelligence
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
罗磊的独立博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LangChain Blog
阮一峰的网络日志
阮一峰的网络日志
C
Check Point Blog

博客园 - 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

贝塞尔曲线