Question List in January, 2023
1、工作记录
工作内容不对外公开。
2、日常积累
2.1 R-Tree
TODO
2.2 指数平滑
一次指数平滑算法(single exponential smoothing)隶属于指数平滑,其家族成员主要有:一次平滑,二次平滑和三次平滑 3 类。在这三类算法中,一次平滑法为历史数据的加权预测,二次平滑法适用于具有一定线性趋势的数据,三次平滑法则是在二次平滑法基础上再平滑一次,其适用于具有一定曲线趋势关系时使用。算法主要有两个参数:初始值和 \(\alpha\) 值参数。一次指数平滑的状态方程如下:
2.3 曲线平滑
#曲线
在介绍曲线插值平滑之前,需要了解一下后文中常见的作为自变量的 \(t\) 是个啥。对于曲线平滑算法的操作来说,这个自变量 \(t\) 构成的集合可以称为节点向量。
设 \(\mathbf{T}\) 是由 \(m+1\) 个非递减数构成的集合,\(t_0\leqslant t_1\leqslant t_2\leqslant\cdots\leqslant t_m\);\(t_i\) 称为节点(Knots), 集合 \(\mathbf{T}\) 称为节点向量(Knot Vector), 半开区间 \([t_i, t_{i+1})\) 是第 \(i\) 个节点区间(Knot Span)。
Bézier Curve
Bézier Curve 于 1962 年由法国工程师 Pierre Bézier 所发表,通常翻译为贝塞尔曲线;其主要意义在于无论是直线或曲线都能在数学上予以描述。贝塞尔曲线完全由其控制点决定其形状,\(n\) 个控制点对应着 \(n-1\) 阶的贝塞尔曲线,并且可以通过递归的方式来绘制。
Pt. :math:`2`:一阶公式,给定点 \(P_0,P_1\) 贝塞尔曲线表现为两点间的直线,\(t\in[0,1]\)。
Pt. :math:`3`:二阶公式,给定点 \(P_0,P_1,P_2\) 贝塞尔曲线表现为如下形式,\(t\in[0,1]\)。
Pt. :math:`4`:三阶公式,给定点 \(P_0,P_1,P_2,P_4\) 贝塞尔曲线表现为如下形式,\(t\in[0,1]\)。
Pt. :math:`n`:一般公式,给定点 \(P_0,P_1,\cdots,P_n\) 贝塞尔曲线表现为如下形式,\(t\in[0,1]\)。
高阶 Bézier 可以通过不断递归到一阶。上式可以看出,Bézier 系数是二项式 \(\left(t+\left(1-t\right)\right)^n = (1)^n\) 的展开,故而其各项系数之和为 1。Bézier 曲线始终会在包含了所有控制点的最小凸多边形中,而不是按照控制点的顺序围成的最小多边形。其第一个控制点和最后一个控制点,恰好是曲线的起始点和终点。
B–Spline Curve
B–Spline Curve 于 1965 年由 Isaac Jacob Schoenberg 创造,其全称为 Basis Spline Curve,通常翻译为 B 样条曲线;是 Bezier Curve 一般化的一种形式。B 样条曲线曲面具有几何不变性、凸包性、保凸性、变差减小性、局部支撑性等许多优良性质,是CAD 系统中常用的几何表示方法。
Bézier 曲线的阶次是控制点个数减 1, 且移动一个控制点整段曲线都会变化,曲线的整体性较强;而 B 样条则可以指定阶次(即 \(k\)),控制点的改变仅仅改变曲线的部分形状,而不是整体。具体的实现主要是把一条曲线变为多段贝塞尔曲线的拼接。将 Bézier 曲线一般方程中的伯恩斯坦函数拆出来:
则可以 Bézier 曲线方程写成如下含有伯恩斯坦基函数 \(B_{i,n}(t)\) 的形式:
B 样条曲线的一般公式,给定点 \(P_0,P_1,\cdots,P_n\) ,以及 Cox-de Boor 递归公式 \(N_{i,k}(t)\), 则其公式为:
式中,\(k\) 为基函数的阶,Cox-de Boor 递归公式的函数如下:
实现中一般将 order 定义为 k 阶,density 定义为两点间的最短间距,小于 1 时定义为 1 即可。
参考文献
知乎. 一次指数平滑、二次指数平滑、三次指数平滑[EB/OL].
百度百科. 贝塞尔曲线[EB/OL].
知乎. 曲线篇: 贝塞尔曲线[EB/OL].
知乎. 曲线篇:深刻理解B 样条曲线(上)[EB/OL].
知乎. 在B-spline中,如何理解knot和breakpoint?彼此之间联系和区别是什么?[EB/OL].
知乎. 综述:城市道路自动驾驶车辆规划与控制技术[EB/OL].
稀土掘金. 深入理解贝塞尔曲线[EB/OL].
百度文库. B 样条曲线[EB/OL].
Bilibili. Obsidian入门指南(三-4)[EB/OL].
PaperPass. 专利引用格式[EB/OL].
知乎. 贝塞尔曲线与B样条[EB/OL].
3、专业知识
3.1 python spatialite
安装准备
pysqlite: 用于操作 SQLite 数据库的包;libspatialite5: 空间拓展 spatialite 的核心操作库;spatialite-bin: 用于操作 spatialte 的一些二进制文件工具;python-pyspatialite: 用于操作空间库的一些包;
brew install libspatialite
具体使用
import sqlite3
conn = sqlite3.connect(":memory:")
conn.enable_load_extension(True)
conn.execute('SELECT load_extension("libspatialite.7.dylib")')
3.2 C++
#cplusplus
passing ‘const xxx ‘ as ‘this’ argument discards qualifiers
因为对象
a被const修饰,表示该对象无法被修改,但是A::getHeight()并没有const后缀修饰,导致编译器认为该函数可能会有修改对象的可能而报此错误。如果确认只是getter函数且不修改数据,将成员函数以const后缀修饰即可消除该错误。
参考文献
姚连璧等. 基于高精地图的道路场景三维建模[J]. 测绘科学与技术, 2022-10(1): 1-12.
王华等. 基于GIS数据的大尺度三维路网的自动生成[J].Computers & Graphics, 2021(96): 71-81.
Zhang, Xuequan, et al. 用于构建大规模虚拟路网的模板式三维道路建模[J].
Kai-Wei Chiang, et al. 基于移动端测绘的 OpenDRIVE 格式高清地图自动路网建模[J].
百度. 一种道路压盖关系的确定方法及装置[P].中国专利: CN105956088B, 2016.
城市生活. 一种道路压盖关系绘制的方法及装置[P]. 中国专利: CN107591080A, 2018.
腾讯. 电子地图系统中立交道路的渲染方法和装置[P]. 中国专利: CN103208226A, 2013.
比亚迪. 三维道路交叉口的模型化方法及装置[P]. 中国专利: CN101930624B, 2009.
阿里巴巴. 一种道路高程的确定方法和装置[P]. 中国专利: CN111501496B, 2019.
高德. 一种道路绘制方法及装置[P]. 中国专利: CN107545833B, 2016.
知乎. [LaTeX 绘图] tikz 绘制流程图,概述和两个示例 [EB/OL].
Python与开源GIS .开始使用 SpatiaLite[EB/OL].
CSDN 博客. # passing ‘const xxx ‘ as ‘this’ argument discards qualifiers[EB/OL].