当前位置: 首页 > news >正文

什么样的网站利于优化视觉传达设计是学什么的

什么样的网站利于优化,视觉传达设计是学什么的,wordpress主题替换,免费地方门户网站系统以下是使用OpenLayers根据三个经纬度点绘制贝塞尔曲线的完整实现方案。贝塞尔曲线通过控制点生成平滑曲线,特别适合绘制地图上的弧线、路径等。 实现思路 贝塞尔曲线原理:使用三个点(起点、控制点、终点)生成二阶贝塞尔曲线。坐…

以下是使用OpenLayers根据三个经纬度点绘制贝塞尔曲线的完整实现方案。贝塞尔曲线通过控制点生成平滑曲线,特别适合绘制地图上的弧线、路径等。

实现思路

  1. 贝塞尔曲线原理:使用三个点(起点、控制点、终点)生成二阶贝塞尔曲线。
  2. 坐标转换:将WGS 84经纬度点转换为Web Mercator投影(EPSG:3857)以在地图上正确显示。
  3. 曲线计算:通过贝塞尔公式计算曲线上的多个点,形成近似曲线。
  4. 地图渲染:使用OpenLayers的LineString几何对象绘制曲线。

代码实现

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><title>OpenLayers贝塞尔曲线绘制</title><script src="https://cdn.jsdelivr.net/npm/ol@7.3.0/dist/ol.js"></script><link href="https://cdn.jsdelivr.net/npm/ol@7.3.0/ol.css" rel="stylesheet"><style>.map {width: 100%;height: 400px;}</style>
</head>
<body><div id="map" class="map"></div><script>// 1. 定义三个经纬度点(起点、控制点、终点)const startPoint = [116.3, 39.9]; // 北京(起点)const controlPoint = [110.0, 30.5]; // 控制点(黄海海域)const endPoint = [121.4, 31.2]; // 上海(终点)// 2. 经纬度转Web Mercator投影const transformPoints = (points) => {return points.map(point => ol.proj.transform(point, 'EPSG:4326', 'EPSG:3857'));};// 3. 计算二阶贝塞尔曲线上的点function calculateBezierPoints(start, control, end, segments = 50) {const points = [];for (let t = 0; t <= 1; t += 1 / segments) {// 二阶贝塞尔公式: B(t) = (1-t)²P0 + 2(1-t)tP1 + t²P2const x = Math.pow(1 - t, 2) * start[0] + 2 * (1 - t) * t * control[0] + Math.pow(t, 2) * end[0];const y = Math.pow(1 - t, 2) * start[1] + 2 * (1 - t) * t * control[1] + Math.pow(t, 2) * end[1];points.push([x, y]);}return points;}// 4. 转换坐标并计算贝塞尔曲线const [startMerc, controlMerc, endMerc] = transformPoints([startPoint, controlPoint, endPoint]);const bezierPoints = calculateBezierPoints(startMerc, controlMerc, endMerc, 100);// 5. 创建地图const map = new ol.Map({target: 'map',layers: [new ol.layer.Tile({source: new ol.source.OSM()  // 使用OpenStreetMap作为底图})],view: new ol.View({center: ol.proj.transform([118, 35], 'EPSG:4326', 'EPSG:3857'),zoom: 5})});// 6. 创建贝塞尔曲线要素const bezierCurve = new ol.geom.LineString(bezierPoints);const feature = new ol.Feature({geometry: bezierCurve,name: '贝塞尔曲线'});// 7. 设置曲线样式feature.setStyle(new ol.style.Style({stroke: new ol.style.Stroke({color: 'rgba(255, 0, 0, 0.8)',  // 红色半透明width: 3,lineDash: [10, 5]  // 虚线样式})}));// 8. 添加曲线到地图const vectorSource = new ol.source.Vector({features: [feature]});const vectorLayer = new ol.layer.Vector({source: vectorSource});map.addLayer(vectorLayer);// 9. 添加起点、控制点和终点标记const addMarker = (coord, label) => {const marker = new ol.Feature({geometry: new ol.geom.Point(coord),name: label});marker.setStyle(new ol.style.Style({image: new ol.style.Circle({radius: 6,fill: new ol.style.Fill({ color: 'blue' }),stroke: new ol.style.Stroke({ color: 'white', width: 2 })}),text: new ol.style.Text({text: label,font: '14px Arial',fill: new ol.style.Fill({ color: 'black' }),stroke: new ol.style.Stroke({ color: 'white', width: 2 }),offsetY: -10})}));vectorSource.addFeature(marker);};addMarker(startMerc, '起点');addMarker(controlMerc, '控制点');addMarker(endMerc, '终点');</script>
</body>
</html>

核心代码解析

  1. 贝塞尔曲线计算

    • 使用二阶贝塞尔公式:( B(t) = (1-t)^2P_0 + 2(1-t)tP_1 + t^2P_2 )
    • 通过参数t从0到1的变化,计算曲线上的多个点,segments参数控制精度
  2. 坐标转换

    • 使用ol.proj.transform()将WGS 84经纬度转换为Web Mercator坐标
    • 确保所有点在同一投影系统下计算
  3. 地图渲染

    • 使用LineString几何对象表示曲线
    • 通过Style设置曲线样式(颜色、宽度、虚线等)
    • 添加标记点显示起点、控制点和终点

效果展示

在这里插入图片描述

(注:实际运行时会显示OpenStreetMap底图和红色贝塞尔曲线)

http://www.dtcms.com/a/518912.html

相关文章:

  • 太平洋在线企业建站系统品牌营销策略包括哪些
  • 做网站寄生虫需要哪些东西什么网站专做衣服
  • 查网站域名备案织梦网站文章发布信息模板下载
  • 湛江网站设计电商运营团队结构图
  • 网站建设系统哪家好wordpress站点安装
  • 中国站长之家爱站网网站的seo优化报告
  • .net网站开发实训代码wordpress图片本地化插件
  • 网站集成微信登录网站建设方案及报价单
  • 网站的ftp管理权限是什么意思网页设计与制作课程内容
  • wordpress主题nana电影网站如何做seo优化
  • 网站卡密代理怎么做惠州淘宝网站建设
  • 网站如何制作学校的做网站采用哪种开发语言
  • 如何优化网站tkd济南好的seo
  • 网站建设3d插件网络广告推广网站
  • 苏宁易购网站风格网站搭建软件有哪些
  • 大连网站建设要多少钱的网站开发工具
  • 南昌本地生活网站有哪些鞍山信息港征婚
  • 深圳建科技有限公司网站首页深圳做网站的大公司
  • 省建设厅网站物业管理长春专业做网站的公司有哪些
  • 住房和城乡建设部网站下载遵义市网站制作
  • 为什么网站浏览不是做的那样手机制作h5最常用软件
  • 万网制作网站怎么样排行网页游戏
  • 网站官方认证怎么做做网站服务器要用多大
  • 网站配置伪静态台州网页设计公司
  • 辽宁城乡建设部网站教科院网站建设
  • wordpress 摄影订单北京seo服务商找行者seo
  • 网站建设网站徒手整形企业门户网站设计方案
  • 网站建设更改网络推广员工作内容
  • 做网站要多嘉兴市海盐建设局网站
  • 备案网站名称与实际网站名称不一致广州注册公司地址