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

推荐订阅源

V
Visual Studio Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
G
Google Developers Blog
J
Java Code Geeks
爱范儿
爱范儿
Microsoft Azure Blog
Microsoft Azure Blog
美团技术团队
人人都是产品经理
人人都是产品经理
Martin Fowler
Martin Fowler
IT之家
IT之家
博客园_首页
B
Blog RSS Feed
Google DeepMind News
Google DeepMind News
B
Blog
U
Unit 42
Apple Machine Learning Research
Apple Machine Learning Research
L
LangChain Blog
Stack Overflow Blog
Stack Overflow Blog
罗磊的独立博客
N
Netflix TechBlog - Medium
T
Tailwind CSS Blog
博客园 - 聂微东
腾讯CDC
A
About on SuperTechFans

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

贝塞尔曲线