十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Maker.js 点操作完全指南:13个高频API,从坐标运算到圆上取点

Maker.js 点操作完全指南:13个高频API,从坐标运算到圆上取点 Maker.js 点操作完全指南13个高频API从坐标运算到圆上取点【免费下载链接】maker.js⚙ 2D vector line drawing and shape modeling for CNC and laser cutters.项目地址: https://gitcode.com/gh_mirrors/ma/maker.js本文以 Maker.js 为对象拆解它的点操作模块。点是所有二维几何体的最小单元坐标运算、中点计算、圆上取点都靠这组 API 完成。想象你在做一个车轮要把 8 根辐条均匀摆到轮圈上。第一步就是求出圆周上每个点的坐标。点操作在这里登场。移动与位移点怎么挪Maker.js 里的点是一个二元数组 [x, y]。最常见的操作就是按向量把它挪个位置。如何加减偏移一个点想把点按偏移量平移或求两点间的相对向量时用它。MakerJs.point.add(a, b, subtract?) // 返回新点 MakerJs.point.subtract(a, b) // 减法简写要点add 第三个参数 subtract 是布尔值传 true 时执行 a-b。const p MakerJs.point.add([10, 20], [3, 4]); // [13, 24]如何计算两点中点需要把标签挂在两点正中或连线取中间位置时用它。MakerJs.point.average(a, b) // 返回中点它只处理两个点。N 个点的质心用 add 累加后再除以 N。const mid MakerJs.point.average([0, 0], [100, 60]); // [50, 30]如何克隆点防止引用坑想保存某个点的当前状态、又不影响原对象时用它。MakerJs.point.clone(point) // 返回新数组 MakerJs.point.zero() // 返回 [0, 0]直接赋值点得到的是引用而非拷贝。clone 之于点就像复制粘贴之于文本框。const a [1, 2], b MakerJs.point.clone(a); a[0] 99; // b 仍是 [1, 2]定位与测量点在哪、离谁近最近邻点查找用法从一组候选点中找出离参考点最近的那个适合路径连接和命中检测。MakerJs.point.closest(ref, pointOptions)多个点距离相同时返回数组里排最前的那个。const near MakerJs.point.closest([1,1], [[10,10], [2,1], [50,50]]); // [2, 1]如何取路径中点与端点需要拿线段或弧的中点或取路径端点作为其他图形的挂接点时用它。MakerJs.point.middle(path, ratio?) // 默认 0.5 MakerJs.point.fromPathEnds(path, offset?) // 返回 [起点, 终点]要点ratio 是 0~1 的路径比例fromPathEnds 只支持线、弧、贝塞尔种子三种开放路径。const seg { type: line, origin: [0,0], end: [10,20] }; MakerJs.point.middle(seg, 0.25); // [2.5, 5] MakerJs.point.fromPathEnds(seg); // [[0,0], [10,20]]生成与变换从参数造出点如何按角度在圆上取点要把多个元素均匀摆在圆形轮圈上比如车轮的辐条这是核心工具。MakerJs.point.fromAngleOnCircle(angleInDegrees, circle)注意角度单位是度。想要弧度制请改用 fromPolar。const rim { type: circle, origin: [0, 0], radius: 80 }; const pts [0,45,90,135,180,225,270,315] .map(a MakerJs.point.fromAngleOnCircle(a, rim));如何绕中心旋转一个点想把点绕某个中心转动一个角度时用它。MakerJs.point.rotate(p, angleInDegrees, origin?)默认中心是 [0,0]。中心不是原点时记得传第三个参数否则结果会偏心。MakerJs.point.rotate([10, 0], 90, [0, 0]); // [0, 10]如何缩放与镜像一个点等比缩放用 scalexy 不同比例的拉伸用 distort沿轴翻转贴用 mirror。MakerJs.point.scale(p, k) // 等比 MakerJs.point.distort(p, sx, sy) // 非等比 MakerJs.point.mirror(p, mirrorX, mirrorY) // 镜像mirror 的两个布尔参数分别控制 x、y 轴传 true 才翻转对应轴。MakerJs.point.distort([10, 10], 2, 0.5); // [20, 5]⚠️ 避坑提示易错点后果规避方式直接赋值点对象拿到引用两处一起变用 clone 取独立拷贝混淆角度单位fromAngleOnCircle 要度fromPolar 要弧度90 度传 90别传 Math.PI/2rotate 省略第三参默认绕 [0,0] 旋转中心非原点时显式传入fromPathEnds 传闭合路径圆不在支持列表返回 null先判空或改用 middle把 zero 当值直接引用拿到的是函数本身写成 zero()带上括号速查表你的需求用哪个 API一句话备注按向量偏移点add / subtractsubtract 等价 add(a, b, true)计算两点中点averageN 点质心需配合循环 add取点独立拷贝clone避免引用联动从列表找最近点closest距离相同取最前取路径中点/比例点middleratio 默认 0.5取路径起止点fromPathEnds仅支持 line、arc、贝塞尔种子圆上按角度取点fromAngleOnCircle角度单位是度绕中心旋转点rotate默认中心为原点等比/非等比缩放scale / distortdistort 分开 sx、sy沿轴镜像mirror两个布尔各控一轴点操作是全部二维建模的地基掌握它就打通了后面的路径与图形。更多细节可看源码 packages/maker.js/src/core/point.ts 或 docs/ 目录。【免费下载链接】maker.js⚙ 2D vector line drawing and shape modeling for CNC and laser cutters.项目地址: https://gitcode.com/gh_mirrors/ma/maker.js创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表