暂无搜索历史
我们有 p1(锚点 1)、cp1(控制点 1)、cp2(控制点 2)、p2(锚点 2) 表示的一条三阶贝塞尔曲线,给定曲线参数 t,求其对应的点位置,以及这个点...
求线段的法向量,乘以线宽的一半,得到位移向量。然后让线段的两个点分别做两个方向的位移,得到多边形的 4 个顶点,将它们按照一定顺序连接起来得到多边形,这个多边形...
一年多没做 LeetCode 算法题了,最近在 LeetCode 发现可以筛选出有 “几何” 标签的算法题,有个几十道题。
选中图形如果是单个,我们 选择图形的 OBB (带朝向的包围盒)的中点位置作为翻转中心。
我以前其实有想过解析复制的数据,只是没太大动机,后面也忘了。既然有人问,那我就顺手解析一下吧。
本文将介绍图形编辑器中吸附系统中,各种吸附类型的吸附逻辑和算法实现,让大家对吸附有一个概念。
目前界面又进化了一点。star 数也多了一点,三个月来从原来的 249,涨了 160,现在是 409。
如果当前处于没有选中图形的状态,对于最顶层的组,对它们的直接子图形数组从上往下遍历,找出命中 hitTest 的图形,将其设置为选中状态。
最近做个人的开源编辑器项目,实现了和 Figma 一样的编组功能,期间踩了不少坑,和大家分享一下。
然后基于圆心作两条直线的垂足得到两个点,这两个点就是圆弧起点和终点,然后确定方向就可以了。
所以我们在原来圆形的圆心、半径参数的基础上,加上极坐标弧度表示的起点和终点,就能表达一段圆弧。
首先是监听按下鼠标,我们记录好此时鼠标的位置,作为路径的起点,并记录此时是 “拖拽状态”。
之前我们讲解了如何利用叉乘 判断点是否在凸多边形内。但该算法限制较大,多边形必须为凸多变形。
考虑到性能,我们 只绘制视口范围内的网格线。其他超出的部分不同绘制出来。因为是重复图案(可以视作两条线组成的 L 形的平铺),可以考虑用纹理平铺渲染以提高性能。
在之前的 求两向量的夹角的文章 中我提到过,对于两个向量,我们可以利用叉积的符合右手定则,判断两个向量的位置关系。
上篇文章我们讲解如何基于 transform 缩放但个矩形,实现了 resizeRect 方法。
上一篇文章我们讲了为什么以及如何用 transform、width 和 height 表达图形。
改用 transform 表达图形的变形,并废弃掉了原来的 rotation、x、y 属性。
像是 SVG 的 Path 的元素,单段的线有直线、圆弧、椭圆弧、二阶贝塞尔曲线、三阶段贝塞尔曲线等。
实际上包围形状的图形某些情况下会使用多边形(凸包、凹包)或是圆形或是其他,不仅限于矩形的更泛用的叫法应该是 “包围体”(bounding volume)。
暂未填写公司和职称
暂未填写个人简介
暂未填写技能专长
暂未填写学校和专业
暂未填写个人网址
暂未填写所在城市