diff --git a/articles/2023/smile.md b/articles/2023/smile.md
index fd9a4bd..5e8953a 100644
--- a/articles/2023/smile.md
+++ b/articles/2023/smile.md
@@ -3,9 +3,49 @@
## 术语
-- buccal corridor颊廊,将其定义为人笑时,上颌可见后牙颊侧面与口角之间的间隙,也称为负性间隙
+### Incisal Edge
+切缘下唇曲线
+
+- Cervical,颈缘上唇曲线
+- 微笑窗,按照下唇曲线来移动
+- 图片旋转,是为了让中线,垂直于两瞳孔之间连线的线,与图片保持一致
+
+### 长度
+即牙齿高度,以患者实际牙齿的高度,高低偏移30%的值为最值
+因为有两个1号,取最高值的算长度初始值
+
+- 长宽比,如果是对称的,就算一个
+
+长度变化,对所有牙齿都有相同的偏移, 保持牙齿轮廓线底部不改变
+- 长宽比在范围内,宽度不变,ratio变化
+- 长宽比达到极值,ratio不变,宽度变化
+
+### buccal corridor
+
+颊廊,将其定义为人笑时,上颌可见后牙颊侧面与口角之间的间隙,也称为负性间隙
+
+调整456牙号的宽度改变
+
+### distal
+远中
+
+### mesio
+近中
+
+### 唇侧
+labial
+
+## 接口
+
+### 2-factor
+
+- 传8个数值,对称时左右相等,不对称时可能不相等
+- 未修改时,默认传1;有修改时,就说修改后的值与原始值的比值 modify/origin
+-
## 参考
- 口腔固定修复中的美学重建 第1卷
-- [临时网页内容](https://www.sohu.com/a/205746991_377312)
\ No newline at end of file
+- [临时网页内容](https://www.sohu.com/a/205746991_377312)
+- [catmull](https://github.com/actionnick/cat-rom-spline)
+- [gl-vec2](https://github.com/stackgl/gl-vec2)
\ No newline at end of file
diff --git a/cg/Color.md b/cg/Color.md
index b559544..5b58597 100644
--- a/cg/Color.md
+++ b/cg/Color.md
@@ -70,6 +70,8 @@ HDR高动态范围High dynamic range,就是添加更多的动态范围到图
- [iro-core实现了颜色的转换核心](https://github.com/irojs/iro-core)
- [Using JavaScript to Adjust Saturation and Brightness of RGB Colors](https://css-tricks.com/using-javascript-to-adjust-saturation-and-brightness-of-rgb-colors/#top-of-site)
+- [Mar 12, 2019 ⋅ 5 min read How to manipulate CSS colors with JavaScript](https://blog.logrocket.com/how-to-manipulate-css-colors-with-javascript-fb547113a1b8/)
+- [The Fundamentals of Color: Hue, Saturation, And Lightness](https://vanseodesign.com/web-design/hue-saturation-and-lightness/)
- [Okhsv and Okhsl -- Two new color spaces for color picking](https://bottosson.github.io/posts/colorpicker/)
- [Project Status, and iro.js 6.0](https://github.com/jaames/iro.js/issues/217#issuecomment-1214403290)
- [Chroma.js is a tiny small-ish zero-dependency JavaScript library (13.5kB) for all kinds of color conversions and color scales.](https://github.com/gka/chroma.js/)
diff --git a/cg/eigen.md b/cg/eigen.md
new file mode 100644
index 0000000..9cd7773
--- /dev/null
+++ b/cg/eigen.md
@@ -0,0 +1,8 @@
+# [Eigen](https://eigen.tuxfamily.org/index.php?title=Main_Page)
+> 矩阵库
+
+- [Eigen document](https://eigen.tuxfamily.org/dox/)
+
+## [Storage orders](https://eigen.tuxfamily.org/dox/group__TopicStorageOrders.html)
+
+All Eigen matrices default to column-major storage order, but this can be changed to row-major
diff --git a/cg/image/ImageProcessing.md b/cg/image/ImageProcessing.md
index 7ae3160..c461b56 100644
--- a/cg/image/ImageProcessing.md
+++ b/cg/image/ImageProcessing.md
@@ -144,4 +144,6 @@ img.onload = ()=>{
## 参考
-- [数字图像处理系列](https://zhuanlan.zhihu.com/digital-image-processing)
\ No newline at end of file
+- [数字图像处理系列](https://zhuanlan.zhihu.com/digital-image-processing)
+- [Orenda Williams Understanding Matrices to Perform Basic Image Processing on Digital Image](https://www.math.utah.edu/~gustafso/s2016/2270/published-projects-2016/williamsOrenda-matrix-operations-digital-images.pdf)
+- [1 Image Convolution](https://web.pdx.edu/~jduh/courses/Archive/geog481w07/Students/Ludwig_ImageConvolution.pdf)
\ No newline at end of file
diff --git a/cg/image/png.md b/cg/image/png.md
new file mode 100644
index 0000000..f6a2b30
--- /dev/null
+++ b/cg/image/png.md
@@ -0,0 +1,23 @@
+# png
+
+## nodejs
+```shell
+npm install tiff.js
+```
+
+```js
+fetch('static/test.tif').then(res=>res.arrayBuffer()).then(buffer=>{
+ const tiff = new Tiff({buffer: xhr.response});
+ const canvas = tiff.toCanvas();
+ this.src = canvas.toDataURL();
+})
+// tiff.js默认只能转换小于10M的文件,超过10M的文件需要设置内存
+Tiff.initialize({TOTAL_MEMORY :50 * 1024 * 1024});
+// 超过40M的文件,建议按照插件并使用object标签展示
+```
+
+## 参考
+- [A small, fast and advanced PNG / APNG encoder and decoder](https://github.com/photopea/UPNG.js)
+- [Photopea.com is a free online tool for editing raster and vector graphics with support for PSD, AI, and Sketch files](https://www.photopea.com/)
+- [纹理工具A fast, tiny tool for working with compressed textures (DDS etc.)](https://github.com/photopea/UTEX.js/blob/master/UTEX.js)
+- [upng online tool](http://upng.photopea.com/)
\ No newline at end of file
diff --git a/cg/image/tiff.md b/cg/image/tiff.md
new file mode 100644
index 0000000..75aef30
--- /dev/null
+++ b/cg/image/tiff.md
@@ -0,0 +1,23 @@
+# tiff
+
+## nodejs
+```shell
+npm install tiff.js
+```
+
+```js
+fetch('static/test.tif').then(res=>res.arrayBuffer()).then(buffer=>{
+ const tiff = new Tiff({buffer: xhr.response});
+ const canvas = tiff.toCanvas();
+ this.src = canvas.toDataURL();
+})
+// tiff.js默认只能转换小于10M的文件,超过10M的文件需要设置内存
+Tiff.initialize({TOTAL_MEMORY :50 * 1024 * 1024});
+// 超过40M的文件,建议按照插件并使用object标签展示
+```
+
+
+
+## 参考
+- [TIFF image decoder written entirely in JavaScript.](https://github.com/image-js/tiff)
+- [A small, fast and advanced TIFF / EXIF (+ DNG, CR2, NEF and other TIFF-ish files) decoder and encoder. It is the main TIFF library for Photopea image editor](https://github.com/photopea/UTIF.js)
\ No newline at end of file
diff --git a/cg/mesh-generation.md b/cg/mesh-generation.md
index f497de9..91e1572 100644
--- a/cg/mesh-generation.md
+++ b/cg/mesh-generation.md
@@ -17,5 +17,13 @@
- 重复前面两步,插入所有点
- 删除与超三角形或四边形顶点相连的所有三角形
+## 质量
+
+衡量网格算法的关键指标是能否生成形态良好的网格。实际中不可能使所有区域的网格形态都非常好,保证关键区域的网格形态良好,如边界、应力集中、关心区域等。
+
+radius-edge ratio, the radius-edge ratio of s simplex t is R/L_min, where R is t's circumradius and l_min is the length of its shortest edge.指定三角形外接圆与三角形最短边的比值
+
+radis/edge值越小,质量越好,越大,质量越差,但其有下界,且很小的比值会导致计算不稳定。
+
## 参考
- [Half-edge structure](https://kaba.hilvi.org/homepage/blog/halfedge/halfedge.htm)
diff --git a/index/article.md b/index/article.md
index d41f8ba..e6c1c95 100644
--- a/index/article.md
+++ b/index/article.md
@@ -23,6 +23,7 @@
- [网页开发内容](../web/index.md)
- [webassembly](../web/webAssembly.md)
- [http](../web/http.md)
+- [html](../web/html.md)
- [css](../web/css.md)
- [canvas](../cg/canvas.md)
@@ -36,6 +37,7 @@
- [electron框架](../nodejs/electron.md)
- [quill富文本编辑器](../nodejs/quill.md)
- [压缩](../nodejs/zip.md)
+- [Rxjs库](../nodejs/rxjs.md)
## 整理总结
diff --git a/index/online.md b/index/online.md
index 23becb9..a93f94a 100644
--- a/index/online.md
+++ b/index/online.md
@@ -47,6 +47,9 @@
### 在线工具
- [在线计算器及工具](https://www.rapidtables.org/zh-CN/)
- [图形计算器GeoGebra--在线绘制图形](https://www.geogebra.org/graphing?lang=zh_CN)
+- [在线编译文件](https://wandbox.org/)
+- [在线编译--可查看汇编](https://godbolt.org/)
+- [在线编译--可查看预处理-方便调试宏](https://www.build-bench.com/)
### 其他
diff --git a/index/standard.md b/index/standard.md
index 7686f70..73e8ebb 100644
--- a/index/standard.md
+++ b/index/standard.md
@@ -37,6 +37,8 @@
- [Image Process](../cg/image/ImageProcessing.md)
- [CT](../cg/ct.md)
- [gif](../cg/image/gif.md)
+- [tif/tiff](../cg/image/tiff.md)
+- [png](../cg/image/png.md)
- [GIMP](../cg/image/gimp.md)
- [ImageMagick](../cg/image/imageMagick.md)
diff --git a/nodejs/rxjs.md b/nodejs/rxjs.md
new file mode 100644
index 0000000..cc79984
--- /dev/null
+++ b/nodejs/rxjs.md
@@ -0,0 +1,16 @@
+# [Rxjs](https://rxjs.dev/)
+> Reactive Extensions Library for JavaScript, RxJS is a library for reactive programming using Observables, to make it easier to compose asynchronous or callback-based code
+
+[github](https://github.com/ReactiveX/RxJS)
+
+## jszip
+
+```js
+fromEvent(el, 'click').piep(throttleTime(3000)).subscribe(()=>{
+ console.log(el);
+})
+```
+
+## 参考
+
+- [rxjs 源码分析1-(fromEvent)](https://juejin.cn/post/6844903730425364494)
\ No newline at end of file
diff --git a/web/html.md b/web/html.md
index f0815ec..e0869bc 100644
--- a/web/html.md
+++ b/web/html.md
@@ -16,40 +16,51 @@
```
+### form
+
+在开发中form的提交表单很舒服,主要使用浏览器自带的属性required和disabled,但是使用时务必注意到使用button的submit提交时,
+
+- [Sending form data](https://developer.mozilla.org/en-US/docs/Learn/Forms/Sending_and_retrieving_form_data)
+ - [form action](https://developer.mozilla.org/en-US/docs/Learn/Forms/Sending_and_retrieving_form_data#the_action_attribute), 如果没有指定url,会跳转到current page.
+ - vue框架中,默认第一次时会propagation到上级,因没有指明路径,router接管到指定的页面,这样产生了默认跳转的逻辑.
+
### script
```html