1.通过turf.js插件绘制

import * as turf from "@turf/turf";//P1,p2为起终点
export default function twoPointToCurveLine(p1, p2) {let line = [p1, p2].map((item) => item);const [p1x, p1y] = line[0];const [p2x, p2y] = line[1];// mid-point of line:const mpx = (p2x + p1x) * 0.5;const mpy = (p2y + p1y) * 0.5;// angle of perpendicular to line:const theta = Math.atan2(p2y - p1y, p2x - p1x) - Math.PI / 2;// distance of control point from mid-point of line:const distance = turf.distance(line[0], line[1], {units: "miles" });const offset = distance / 500;// location of control point:var c1x = mpx + offset * Math.cos(theta);var c1y = mpy + offset * Math.sin(theta);line.splice(1, 0, [c1x, c1y]);return turf.bezierSpline(turf.lineString(line), {sharpness: 1,resolution: distance > 3000 ? distance : 5000 * distance,}).geometry.coordinates;
}

2.通过canvas绘制

ctx.quadraticCurveTo( p1x, p1y, p2x, p2y )

p1x, p1y:控制点坐标

​ p2x, p2y:结束点坐标

function drawCurve() {const canvas = document.getElementById("tutorial");if (!canvas.getContext) return;let ctx = canvas.getContext("2d");ctx.beginPath();ctx.moveTo(10, 200); //起始点let cp1x = 40,cp1y = 100; //控制点let x = 200,y = 200; // 结束点//绘制二次贝塞尔曲线ctx.quadraticCurveTo(cp1x, cp1y, x, y);ctx.stroke();ctx.beginPath();ctx.rect(10, 200, 10, 10);ctx.rect(cp1x, cp1y, 10, 10);ctx.rect(x, y, 10, 10);ctx.fill();
}

绘制二次贝塞尔曲线的几种方式相关推荐

  1. 绘制二次贝塞尔曲线(二次贝兹曲线)等距线:让 IE 支持 canvas接口 isPointInPath

    一.背景: 在使用 canvas 做知识图谱的时,实体关系使用线宽为 1px 的线绘制, 用户必须点在线上, 才能正常拾取到点击的边. 边关系,有些是直线边,有些是二次贝塞尔曲线.产品提议,线不能加粗 ...

  2. 使用canvas绘制水滴(二次贝塞尔曲线、圆弧)

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  3. Canvas贝塞尔曲线和二次贝塞尔曲线

    贝塞尔曲线和二次曲线 贝塞尔曲线大概就是ps中钢笔工具那个曲线 quadraticCurveTo(cp1x, cp1y, x, y) 从当前笔位置到由指定的结束点绘制的二次贝塞尔曲线x,并y使用由指定 ...

  4. 【绘制】HTML5 Canvas二次方贝塞尔曲线,实现复选框对勾对号,实现圆角三角形,圆角矩形(图文,示例)

    我的处女作<Canvas系列教程>在我的Github上正在连载更新,希望能得到您的关注和支持,让我有更多的动力进行创作. 教程介绍.教程目录等能在README里查阅. 传送门:https: ...

  5. 【HTML 中的二次贝塞尔曲线 和三次贝塞尔曲线】(使用说明详解)

    二次 贝塞尔曲线 和三次 贝塞尔曲线 使用说明 1. 二次 贝塞尔曲线 和三次 贝塞尔曲线 1.1 贝塞尔曲线的 基本知识 1.2 贝塞尔曲线 生成动图 1.3 HTML 中 画贝塞尔曲线的 2 种方 ...

  6. WPF绘制光滑连续贝塞尔曲线

    原文:WPF绘制光滑连续贝塞尔曲线 1.需求 WPF本身没有直接把点集合绘制成曲线的函数.可以通过贝塞尔曲线函数来绘制. 贝塞尔曲线类是:BezierSegment,三次贝塞尔曲线,通过两个控制点来控 ...

  7. openGL参数曲面----二次贝塞尔曲线

    openGL系列文章目录 文章目录 openGL系列文章目录 前言 一.二次贝塞尔曲线 参考 前言 在20 世纪50 年代和60 年代在雷诺公司工作期间,皮埃尔·贝塞尔(Pierre Bézier)开 ...

  8. 如何求出二次贝塞尔曲线上面的各个点呢

    1.需求:用 canvas 在上面的曲线上面加几个箭头,指明方向 2.问题:这个曲线我是第一次见,搞半天还发现不是圆的弧,是一种很奇怪的弧形,于是我就上网查 quadraticCurveTo 方法,才 ...

  9. 书小宅之网页设计——二次贝塞尔曲线和三次贝塞尔曲线

    贝塞尔曲线起始点和终止点在曲线上,方向控制点不再曲线上.二次贝塞尔曲线有一个控制点,三次贝塞尔曲线有两个控制点. 二次贝塞尔曲线 定义和用法 quadraticCurveTo() 方法通过使用表示二次 ...

最新文章

  1. latex绘制表格table
  2. 用net连某台电脑c盘怎么连_关于电脑的4个冷知识,恐怕90%的人连第一个都不知道!...
  3. 关于bootstrap的一些想法
  4. python 银行工作_Python:银行系统实战(一)
  5. Web前端笔记-two.js实现坐标定位(动画效果非瞬移定位)
  6. ospf避免环路_路由环路知识点总结!
  7. 解决ubuntu中zip解压的中文乱码问题
  8. 使用STL去除std::vector自定义结构体重复项
  9. 计算机怎么获取权限删除文件,电脑删除文件需要获取trustedinstaller权限怎么回事...
  10. 达梦数据库的服务启动
  11. Web安全:白帽子黑客训练营
  12. DES加密算法的C++实现
  13. matplotlib作图系列之内置颜色使用(一)
  14. 网络命令一览表(绝对实用)
  15. flipflop和latch以及register的区别
  16. 5G时代的物联网:福器还是凶器
  17. freescale imx6 编译 linux ltib,i.MX6 Ltib编译报错,请版主解决一下。(已解决)
  18. 渗透实战:dedeCMS任意用户密码重置到内网getshell
  19. 浅谈ThinkPH5.0和5.1的反序列化利用链分析
  20. 2018年第20周(2018-5-18)周末总结

热门文章

  1. 身体好比什么都强 [唱片]
  2. 连锁加盟2-3事~实录
  3. (软件构造) 关于JDK版本更换问题(附jdk下载链接以及jdk环境变量全教程)
  4. [转]前端开发必备神级资源(转载请删除括号里的内容)
  5. win10 声音设置
  6. 【Git学习】解决GitLab内存消耗大的问题
  7. 《蜘蛛侠3》5月2日中国提前上映
  8. canvas初体验-图片上画方框
  9. 请更换备份电池 pos机_电签POS机实力碾压MPOS,请更换手中的蓝牙机!
  10. 阿里云ECS服务器内存一直居高不下,被挂木马解决方法