diff --git a/articles/notes/work.md b/articles/notes/work.md
index 7e823e0..765c5ba 100644
--- a/articles/notes/work.md
+++ b/articles/notes/work.md
@@ -6,6 +6,8 @@
## 快速目标位
+后台矩阵的存储是按照列存储的,
+
牙齿的关键点
- fa 牙号放在的位置
diff --git a/cg/Color.md b/cg/Color.md
index b7c28a7..a23e2a8 100644
--- a/cg/Color.md
+++ b/cg/Color.md
@@ -1,21 +1,23 @@
# [Color](https://www.color.org/index.xalter)
-> ICC International Color Consortium
-
-- [The Importance of Being Linear](https://developer.nvidia.com/gpugems/gpugems3/part-iv-image-effects/chapter-24-importance-being-linear)
色彩主观就是光线给人眼的感觉,客观地说就是人眼对可见光0.43um到0.78um的波长,不同的波长对人眼产生不同的神经信号,传递大脑的感知就是色彩,非可见光人眼是无法感知的。
如果一束光,它的光子都是同一波长的,就是单色光;不同波长的光合在一起就是混合光;
-## Color Model & Space
+## 概念
+
+- ICC International Color Consortium
+- 亮度Lightness、Luminance
+- 明度Brightness、Value
+- 辉度Luma,把使用色觉校正的结果称为辉度
+
+### 颜色模型与颜色空间
- Color Model色彩模型是指一个抽象的数学模型,用来描述一个颜色怎么样被表达成一组数字,通常会用3个或4个数值表示
- Color Space是色彩模型有了数值具体的表述和规则,所有色彩形成一个封闭集合,并有计算属性,这个集合就是色彩空间
- additive model,加性模型,根据三原色原理规定一个坐标轴分别代表RGB立体数学模型
- 减性模型,越混合越黑
-
-
- RGB,大多与显示设备、输入设备(数码相机、扫描仪)相关联的
- sRGB,1996,较小色域空间,主要应用在网页浏览,在色彩调整及转换时会保存信息以备使用
- AdobeRGB,1998,为解决sRGB不能覆盖CMYK的问题,为了显示器,主要在蓝绿色方向进行扩展,完全覆盖sRGB,基本覆盖CMYK
@@ -43,7 +45,7 @@ HSL/HSV解释:L是指从最暗的黑色到色相纯色再到白色,L最大
js中canvas的颜色getImageData中setting有这个参数
-## Gamma Correction
+### Gamma Correction
gamma校正,存在的原因有
@@ -62,13 +64,10 @@ gamma校正,存在的原因有
HDR高动态范围High dynamic range,就是添加更多的动态范围到图片中,人眼对场景采样是有能自动**变焦频率**的,即在明暗对比度比较强烈的场景下人眼都能看得各个部分的细节,但相机等在拍照时由于变焦固定或频率很低,得到的图片就只有一个焦距上的细节,导致细节上的缺失。通过多次曝光,得到不同亮度不同焦距内的细节组合起来提高清晰度,这就是HDR。
-## 术语
-- 亮度Lightness、Luminance
-- 明度Brightness、Value
-- 辉度Luma,把使用色觉校正的结果称为辉度
+### Color in Web
-## web-color
+- [ThreeJs中的color](/cg/threejs/color.md)
在canvas中或CSS中,可以使用某个属性来表示颜色,纯色、渐变色等
```js
@@ -90,4 +89,15 @@ ctx.strokeStyle = canvasGradient;
- [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/)
- [Color conversion & manipulation library by the editors of the CSS Color specifications ](https://github.com/LeaVerou/color.js)
- - [A comprehensive color library for JavaScript.](https://github.com/Evercoder/culori)
\ No newline at end of file
+ - [A comprehensive color library for JavaScript.](https://github.com/Evercoder/culori)
+
+## 参考
+
+- [The RGB-XYZ Matrix Calculator](https://www.russellcottrell.com/photo/matrixCalculator.htm)
+
+- [OpenColorIO, A complete color management solution geared towards motion picture production with an emphasis on visual effects and computer animation.](https://opencolorio.org/)
+ - [Blender Color Management](https://docs.blender.org/manual/en/latest/render/color_management.html)
+
+- [The Importance of Being Linear](https://developer.nvidia.com/gpugems/gpugems3/part-iv-image-effects/chapter-24-importance-being-linear)
+
+- [What every coder should know about gamma](https://blog.johnnovak.net/2016/09/21/what-every-coder-should-know-about-gamma/)
\ No newline at end of file
diff --git a/cg/dental/orthodontics.md b/cg/dental/orthodontics.md
new file mode 100644
index 0000000..29eaab4
--- /dev/null
+++ b/cg/dental/orthodontics.md
@@ -0,0 +1,46 @@
+# Orthodontics
+
+## Orthodontics Study Models
+
+正畸研究模型,是一个正畸治疗过程的记录,包括正畸前、正畸中及正畸后
+
+模型由两部分组成,
+- A=Art portion,底座部分,模型的底部
+- B=Anatomic portion,解剖部分,牙齿、牙槽突、上颚
+
+![](https://mmbiz.qpic.cn/mmbiz_jpg/U5fSdEQopSEX8ibH7HFUWHxfuaqgj8HltKAqGb4VI8h0aHTSXe3Quc5sJk4CyV7AXwV1EXgtfMQ7T0a0nB0oWBg/640?wx_fmt=jpeg&from=appmsg&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1)
+
+
+### 目的
+### 作用
+- 评估和记录牙齿解剖
+- 评估并记录弓形
+- 计算总空间需求/差异
+
+
+## 参考
+
+- [LuxCreo](https://luxcreo.com/)
+- [Graphy](https://graphy.app/)
+
+### mesh处理软件
+
+- [mesh]()
+- [blender]()
+ [github: Create, Simulate, Visualize, and Analyze Realistic 3D Cell Models ](https://github.com/mcellteam/cellblender)
+- [Meshmixer](https://meshmixer.com/)
+
+### [exocad](https://exocad.com/cn/)
+
+- [功能模块](https://shop.exocad.com/en_en/dentalcad-add-on-module.html)
+
+### github
+
+- [A software for dental mesh processing and visulization ](https://github.com/swayfreeda/DentalMeshProject)
+- [3D Dental surface segmentation with Tooth Group Network ](https://github.com/limhoyeon/ToothGroupNetwork)
+
+- [A 3D Slicer extension to use AMASSS, ALI-CBCT and ALI-IOS ](https://github.com/DCBIA-OrthoLab/SlicerAutomatedDentalTools)
+- [SJTU 2019 fall CS337 Computer Graphics Project : 三维牙齿模型的自动化预处理](https://github.com/SJTUzhh/Dental-Pre-Processing)
+
+#### web
+- [A web/desktop application to manage your dental clinic practice. ](https://github.com/alexcorvi/apexo)
diff --git a/cg/dental/tooth.md b/cg/dental/tooth.md
new file mode 100644
index 0000000..399dd20
--- /dev/null
+++ b/cg/dental/tooth.md
@@ -0,0 +1,16 @@
+# Tooth
+
+## DCS
+
+在牙科中,牙齿坐标系(Dental Coordinate System, DCS)是一种用于精确描述牙齿位置和方向的三维坐标系统。这种坐标系对于牙齿建模、修复、正畸治疗和种植牙手术等应用非常重要。以下是牙齿坐标系的一些基本定义和特征:
+
+- 原点(参考点), 通常将坐标系的原点定义在牙齿的某个解剖特征上,例如牙齿的中心点或牙齿的颊尖、如某一牙齿的根尖点或牙槽嵴的特定位置
+- 轴的定义1
+ - X轴(前后方向):通常沿着牙齿的长轴,从牙齿的颊侧(面部)指向舌侧
+ - Y轴(垂直方向):垂直于X轴,沿着牙齿的咬合面,从牙齿的近中面(中线侧)指向远中面(耳朵侧)
+ - Z轴(高度方向):垂直于X轴和Y轴,通常指向上方,表示牙齿的高度或深度
+- 轴的定义2
+ - Z轴:垂直于牙槽嵴平面,通常代表牙齿的垂直移动方向(如伸长或压低)
+ - X轴:平行于牙槽嵴平面,代表牙齿的近远中移动方向(如向前或向后移动)
+ - Y轴:垂直于X轴和Z轴,代表牙齿的颊舌向移动(如唇向或舌向移动)
+
\ No newline at end of file
diff --git a/cg/image/ffmpeg.md b/cg/image/ffmpeg.md
new file mode 100644
index 0000000..1434c25
--- /dev/null
+++ b/cg/image/ffmpeg.md
@@ -0,0 +1,6 @@
+# ffmpeg
+
+## [ffmpeg.wasm](https://ffmpegwasm.netlify.app/docs/overview)
+
+- [github](https://github.com/ffmpegwasm/ffmpeg.wasm)
+- [example vite vue](https://github.com/ffmpegwasm/ffmpeg.wasm/blob/main/apps/vue-vite-app/src/components/FFmpegDemo.vue)
diff --git a/cg/image/gif.md b/cg/image/gif.md
index b8a307c..2fc48dc 100644
--- a/cg/image/gif.md
+++ b/cg/image/gif.md
@@ -1,6 +1,17 @@
# GIF
> Graphics Interchange Format是一种位图,已8位色即256种颜色重现真彩色的图像,实际上是一种压缩文档,采样LZW压缩算法进行编码,有效减少图像在网络上的传输时间.
+- [fast GIF encoding](https://github.com/mattdesl/gifenc)
+- [ JavaScript GIF Codec](https://github.com/qq15725/modern-gif)
- [jsgif: A GIF player in JavaScript](https://slbkbs.org/jsgif/)
-- [带你如何用js读取gif图片数据流,解码gif ](https://juejin.cn/post/7022637452066029599)
\ No newline at end of file
+- [带你如何用js读取gif图片数据流,解码gif ](https://juejin.cn/post/7022637452066029599)
+- [GIF (version 89a) Encoder written in TypeScript ](https://github.com/nobuoka/GifWriter.js/)
+- [Full-featured JavaScript GIF encoder that runs in your browser.](https://terikon.github.io/gif.js.optimized/)
+- [JavaScript GIF encoding library ](https://github.com/jnordberg/gif.js)
+
+## [gif-writer](http://nobuoka.github.io/GifWriter.js/)
+
+这个编译环境是gradlew,需要Java环境
+
+- [github](https://github.com/nobuoka/GifWriter.js)
diff --git a/cg/image/index.md b/cg/image/index.md
index f1cd5fe..8dd6ce7 100644
--- a/cg/image/index.md
+++ b/cg/image/index.md
@@ -10,6 +10,7 @@
- [JPEG](/cg/image/JPEG.md)
- [Image Process](/cg/image/ImageProcessing.md)
- [tiff](/cg/image/tiff.md)
+- [ffmpeg](/cg/image/ffmpeg.md)
- [ImageMagick](/cg/image/imageMagick.md)
diff --git a/cg/threejs/color.md b/cg/threejs/color.md
new file mode 100644
index 0000000..1b84477
--- /dev/null
+++ b/cg/threejs/color.md
@@ -0,0 +1,28 @@
+# [Color management](https://threejs.org/docs/index.html#manual/en/introduction/Color-management)
+
+- [css color4](https://www.w3.org/TR/css-color-4/#predefined)
+
+- color space色彩空间有三个参数组成:color primaries原色,white point白点,transfer functions转换函数。
+- color model是语法上可选择的色域color gamut,即颜色值的坐标。在three.js中只关心RGB color model,having three coordinates r, g, b ∈ [0,1] ("closed domain") or r, g, b ∈ [0,∞] ("open domain") each representing a fraction of a primary color.
+- color gamut是由color primaries和white point决定的,在这个volume内的就是gamut,之外的不能通过通过这些值来表示
+- SRGBColorSpace和LinearSRGBColorSpace使用相同的color gamut,唯一的区别是transfer function。
+ - Linear-sRGB是线性对应于物理光强度
+ - sRGB使用非线性transfer function,更接近于人眼接收的光和通用显示设备的显示光
+- lighting calculations和其他rendering操作常常发生在线性空间中,但线性颜色值在image或framebuffer中的存储效率较低,且人眼看起来也不太对。
+- input texture输入的纹理和final rendered image最终效果图通常使用非线性的sRGB color space。
+
+
+- [[SOLVED] Why does object get dimmer/darker when light gets closer to it?](https://discourse.threejs.org/t/solved-why-does-object-get-dimmer-darker-when-light-gets-closer-to-it/3475)
+
+## linear workflow
+
+在r152中引入这个概念,
+
+- [The Importance of Being Linear](https://developer.nvidia.com/gpugems/gpugems3/part-iv-image-effects/chapter-24-importance-being-linear)
+- [Updates to Color Management in three.js r152](https://discourse.threejs.org/t/updates-to-color-management-in-three-js-r152/50791)
+- [Updates to lighting in three.js r155](https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733)
+- [Shadow and color problems going from v64 to v161](https://discourse.threejs.org/t/shadow-and-color-problems-going-from-v64-to-v161/61640)
+
+
+```js
+```
\ No newline at end of file
diff --git a/cg/threejs/index.md b/cg/threejs/index.md
index 28a4eb7..15c7ba9 100644
--- a/cg/threejs/index.md
+++ b/cg/threejs/index.md
@@ -8,6 +8,7 @@
- [Grid实现](/cg/threejs/grid.md)
- [shader](/cg/threejs/shader.md)
- [material材质](/cg/threejs/material.md)
+- [数学相关](/cg/threejs/math.md)
## 参考
@@ -21,3 +22,4 @@
- [22](https://github.com/brunosimon/folio-2019)
- [THREE.js rendering order渲染顺序](https://segmentfault.com/a/1190000041221932/en)
- [A camera control for three.js, similar to THREE.OrbitControls yet supports smooth transitions and more features. ](https://github.com/lmj01/camera-controls)
+
diff --git a/cg/threejs/math.md b/cg/threejs/math.md
new file mode 100644
index 0000000..36905d0
--- /dev/null
+++ b/cg/threejs/math.md
@@ -0,0 +1,50 @@
+# Math
+
+## 矩阵
+
+矩阵存储有两种方式
+
+- 行存储,横向,row-major order
+- 列存储,竖向,column-major order
+
+three.js的Matrix4对外的接口使用row-major order方式,内部存储结构使用column-major order。
+
+旋转矩阵的乘法有两种
+
+- 前乘(左乘)pre-multiply,用于坐标系相对于固定坐标系进行旋转,因为固定坐标系的必须先存在,新的矩阵应用就是后旋转.
+
+$R_{AB}=R_{B}R_{A}$ ,表示先旋转A,再旋转B
+
+- 后乘(右乘)post-multiply,用于欧拉角系统,每个旋转矩阵都以前一个坐标系为基准
+
+$R_{BA}=R_{A}R_{B}$,表示先旋转B,再旋转A
+
+```javascript
+// Vector3
+// v_p dot v_mv_i dot position
+project( camera ) {
+ return this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );
+}
+// v_p_i dot m_model dot position
+unproject( camera ) {
+ return this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );
+}
+// Object3D
+const matrix = new Matrix4(); // local transform
+const matrixWorld = new Matrix4(); // the global transform of the object没有父节点时,等于matrix
+applyMatrix4( matrix ) {
+ if ( this.matrixAutoUpdate ) this.updateMatrix();
+ this.matrix.premultiply( matrix ); // 把矩阵应用到当前对象,就是使用前置相乘的方法
+ this.matrix.decompose( this.position, this.quaternion, this.scale );
+}
+updateMatrix() { // 更新矩阵,由当前的位置,朝向,缩放重新构建坐标系
+ this.matrix.compose( this.position, this.quaternion, this.scale );
+ this.matrixWorldNeedsUpdate = true;
+}
+// 乘以矩阵时
+// 当外部数据elementsArray是传入的时行主序时, 需要转置,以保持内部的列存储逻辑
+const mat = new Matrix4().fromArray(elementsArray).transpose()
+```
+
+$M_{l}M_{w}=$
+
diff --git a/cg/threejs/threejs.md b/cg/threejs/threejs.md
index d9e1491..231e01e 100644
--- a/cg/threejs/threejs.md
+++ b/cg/threejs/threejs.md
@@ -1,19 +1,6 @@
# threejs-core
-## Object3D
-
-```javascript
-matrix = new Matrix4(); // local transform
-matrixWorld = new Matrix4(); // the global transform of the object没有父节点时,等于matrix
-matrixViewMatrix;
-normalMatrix;
-```
-### updateMatrix
-```javascript
-matrix.compose(position, quaternion, scale); // 构造local matrix transform
-```
-
## EventDispatcher
事件系统是一个交互库必备,threejs的event使用了js的event事件
diff --git a/cg/tools/gizmo.md b/cg/tools/gizmo.md
index 9832074..5614231 100644
--- a/cg/tools/gizmo.md
+++ b/cg/tools/gizmo.md
@@ -1,7 +1,12 @@
# Gizmo
-> 小部件
+
- [izmo control library for 3D object manipulation (4x4 matrix) ](https://github.com/CedricGuillemet/LibGizmo)
- [ImGui GIZMO widget - 3D object manipulator / orientator](https://github.com/BrutPitt/imGuIZMO.quat)
-- [Immediate mode 3D gizmo for scene editing and other controls based on Dear Imgui ](https://github.com/CedricGuillemet/ImGuizmo)
\ No newline at end of file
+- [Immediate mode 3D gizmo for scene editing and other controls based on Dear Imgui ](https://github.com/CedricGuillemet/ImGuizmo)
+
+## threejs
+
+- [讨论](https://discourse.threejs.org/t/how-to-make-transform-controls-not-to-move-with-camera/21584)
+ - [src code](https://jsfiddle.net/v2680nta/1/)
\ No newline at end of file
diff --git a/cpl/js/webpack.js b/cpl/js/webpack.js
deleted file mode 100644
index 90d5429..0000000
--- a/cpl/js/webpack.js
+++ /dev/null
@@ -1,242 +0,0 @@
-!function(modules) {
- // webpackJsonpCallback(chunkIdList, moreModules)
- function webpackJsonpCallback(t) { // here t is arguments
- let a = t[0];// chunkIdList -- []
- let moreModules = t[1];// moreModules
- let s = 0;
- let callback = [];
- //
- for (; s < a.length; s++) {
- let chunkId = a[s];
- Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId] && callback.push(installedChunks[chunkId][0]);
- installedChunks[chunkId] = 0;
- }
- //
- for (modelId in moreModules)
- Object.prototype.hasOwnProperty.call(moreModules, modelId) && (e[modelId] = moreModules[modelId]);
- //
- for (pushToWebpackJsonp && pushToWebpackJsonp(t); callback.length; ) {
- callback.shift()();
- }
- }
- var installedModules = {};
- var installedChunks = {
- 0: 0
- };
- var r = {};
- var a = {
- 1817: function() {
- return {
- "./index": {
- __wbg_loadResults_a79a4858742b1492: function(e, t, o, r, a) {
- return installedModules[1777].exports.__wbg_loadResults_a79a4858742b1492(e, t, o, r, a)
- },
- __wbg_error_cc95a3d302735ca3: function(e, t) {
- return installedModules[1777].exports.__wbg_error_cc95a3d302735ca3(e, t)
- }
- }
- }
- }
- };
- function installFunc(moduleId) {
- if (installedModules[moduleId])
- return installedModules[moduleId].exports;
- var o = installedModules[moduleId] = {
- i: moduleId,
- l: false, // 是否loading
- exports: {}
- };
- // 保证模块加载时this指向的是module.exports
- modules[moduleId].call(o.exports, o, o.exports, installFunc);
- o.l = true;
- return o.exports;
- }
- installFunc.e = function(e) {
- var t = []
- , n = o[e];
- if (0 !== n) {
- if (n)
- t.push(n[2]); // 把exports的放入队列中
- else {
- var s = new Promise((function(t, r) {
- n = o[e] = [t, r]
- }
- ));
- t.push(n[2] = s);
- var c, l = document.createElement("script");
- l.charset = "utf-8",
- l.timeout = 120,
- i.nc && l.setAttribute("nonce", i.nc),
- l.src = function(e) {
- return i.p + "" + ({}[e] || e) + ".js"
- }(e);
- var u = new Error;
- c = function(t) {
- l.onerror = l.onload = null,
- clearTimeout(d);
- var n = o[e];
- if (0 !== n) {
- if (n) {
- var r = t && ("load" === t.type ? "missing" : t.type)
- , a = t && t.target && t.target.src;
- u.message = "Loading chunk " + e + " failed.\n(" + r + ": " + a + ")",
- u.name = "ChunkLoadError",
- u.type = r,
- u.request = a,
- n[1](u)
- }
- o[e] = void 0
- }
- }
- ;
- var d = setTimeout((function() {
- c({
- type: "timeout",
- target: l
- })
- }
- ), 12e4);
- l.onerror = l.onload = c,
- document.head.appendChild(l)
- }
- }
- // 入口函数
- ({
- 3: [1817]
- }[e] || []).forEach((function(e) {
- var n = r[e];
- if (n)
- t.push(n);
- else {
- var o, s = a[e](), c = fetch(i.p + "" + {
- 1817: "e288aa4f892d923ae806"
- }[e] + ".module.wasm");
- if (s instanceof Promise && "function" == typeof WebAssembly.compileStreaming)
- o = Promise.all([WebAssembly.compileStreaming(c), s]).then((function(e) {
- return WebAssembly.instantiate(e[0], e[1])
- }
- ));
- else if ("function" == typeof WebAssembly.instantiateStreaming)
- o = WebAssembly.instantiateStreaming(c, s);
- else {
- o = c.then((function(e) {
- return e.arrayBuffer()
- }
- )).then((function(e) {
- return WebAssembly.instantiate(e, s)
- }
- ))
- }
- t.push(r[e] = o.then((function(t) {
- return i.w[e] = (t.instance || t).exports
- }
- )))
- }
- }
- ));
- return Promise.all(t);
- }
- installFunc.m = modules;
- installFunc.c = installedModules;
- // 判断是否为原型链上的
- installFunc.d = function(e, t, n) {
- installFunc.o(e, t) || Object.defineProperty(e, t, {
- enumerable: !0,
- get: n
- })
- }
- installFunc.r = function(e) {
- "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
- value: "Module"
- }),
- Object.defineProperty(e, "__esModule", {
- value: !0
- })
- }
- installFunc.t = function(e, t) {
- if (1 & t && (e = i(e)),
- 8 & t)
- return e;
- if (4 & t && "object" == typeof e && e && e.__esModule)
- return e;
- var n = Object.create(null);
- if (i.r(n),
- Object.defineProperty(n, "default", {
- enumerable: !0,
- value: e
- }),
- 2 & t && "string" != typeof e)
- for (var o in e)
- i.d(n, o, function(t) {
- return e[t]
- }
- .bind(null, o));
- return n
- }
- installFunc.n = function(e) {
- var t = e && e.__esModule ? function() { return e.default } : function() { return e };
- installFunc.d(t, "a", t);
- return t;
- }
- // 判断是否为原型链上的
- installFunc.o = function(e, t) {
- return Object.prototype.hasOwnProperty.call(e, t)
- }
- installFunc.p = "";
- installFunc.oe = function(e) {
- throw console.error(e),
- e
- }
- installFunc.w = {};
- Object.defineProperty(installFunc, "p", {
- get: function() {
- try {
- if ("string" != typeof ALIGN_CDN_PATH)
- throw new Error("WebpackRequireFrom: 'ALIGN_CDN_PATH' is not a string or not available at runtime. See https://github.com/agoldis/webpack-require-from#troubleshooting");
- return ALIGN_CDN_PATH
- } catch (e) {
- return ""
- }
- }
- });
- let s = window.webpackJsonp = window.webpackJsonp || [];
- var pushToWebpackJsonp = s.push.bind(s);
- s.push = webpackJsonpCallback;
- s = s.slice();
- for (var l = 0; l < s.length; l++) {
- webpackJsonpCallback(s[l]);
- }
- installFunc(installFunc.s = 1297);
-}([
- function(module, exports, installFunc) {
- },
- function(module, exports, installFunc) {
- },
-]);
-
-/**
- * webpack打包的特征, 两个文件
- * 一个主文件
- * !function(e){}([function(e,t,n){},function(e,t,n){},]);
- * 另一个入口文件
- * (window.webpackJsonp = window.webpackJsonp || []).push([[3], {}]);
- *
- * function(e,t,n){}拥有相同的参数名称,在执行阶段是不同值的对象
- * 这些函数通过执行器来调用,一般模式为XXX.call(e,t,n)
- */
-
-/**
- * function(e,t,n)分别是
- * installFunc.e
- * installFunc.t
- * installFunc.n
- */
-
-function(e, t, n) {
- "use strict";
- var o = n(934); // 导入某个模块
- n.o(o, "Base64Index") && n.d(t, "Base64Index", (function() {
- return o.Base64Index
- }
- )),
-}
\ No newline at end of file
diff --git a/exercises/combinatorics.md b/exercises/combinatorics.md
index 7aec601..6a42c72 100644
--- a/exercises/combinatorics.md
+++ b/exercises/combinatorics.md
@@ -19,4 +19,18 @@
- 容斥原理及应用
- 递推关系和生成函数
- 特殊计数序列
- - 组合设计
\ No newline at end of file
+ - 组合设计
+
+
+xxx
+
+
+
+2024-8-8
+如果从10个人中选择,有多少种方法可以组成一个由3个人组成的团队.
+可能这样想,先任选一个就是有10种,再选一个有9种,最后选一个有8种。但这样选择下来是不对的,因为这里是无序的,及不需要排列3人团队。
+正确的方法是
+
+$\frac{10 \cdot 9 \cdot 8}{3!}$
+
+
diff --git a/exercises/math.md b/exercises/math.md
index bece10e..0258a89 100644
--- a/exercises/math.md
+++ b/exercises/math.md
@@ -36,6 +36,9 @@
2. 鸽巢原理Pigeonhole principle(抽屉原理),是一个基本的组合数学原理,表明n+1个鸽子放置n个巢中,至少有一个巢有两个鸽子。
- 证明,是验证的过程
+- 传统数学是指以几何(即视觉推理)和实数代数相关的
+- 进入20世纪后,希尔伯特引领将数学形式化为一组公理和演绎逻辑推理。
+
@@ -127,3 +130,12 @@
Iterated Function System迭代函数系统
- [Chapter 9 Iterated function systems—self-similar and self-affine sets](https://www.ma.ic.ac.uk/~jswlamb/M345PA46/F03%20chap%209.pdf)
- [TRANSITION PHENOMENA FOR THE ATTRACTOR OF AN ITERATED FUNCTION SYSTEM](https://arxiv.org/pdf/2205.01185)
+
+## 竞赛
+
+### 国际数学奥林匹克
+面向中学生的数学竞赛,考察的主要是几何(视觉推理)和实数代数一类东西
+
+这些数学领域与相当的具体事物相关,数字和形状,这些概念也是非常扎实的。
+
+构造是一个大的思路,很多技巧都是精心构造出来的。
\ No newline at end of file
diff --git a/exercises/polynomial.md b/exercises/polynomial.md
index 6e162df..b7c19b4 100644
--- a/exercises/polynomial.md
+++ b/exercises/polynomial.md
@@ -1,5 +1,28 @@
# 多项式
+## 整除
+
+
+2024-8-8
+
+$$
+\text{证明:对任何整数}n \ge 1, 49^n - 2352n - 1 \text{可被2304}整除
+$$
+
+解答:首先观察数值特征有
+
+$49=48+1, 2352 = 7^2 * 48, 2304=48^2$
+
+因此需要证明 $48^2 | 49^n - 49 * 48 * n - 1$ ,其更通用的式子是 $(a-1)^2 | a^n - a(a-1)n - 1$.
+
+$$
+a^n - a(a-1)n - 1 = (a^n - 1) - a(a-1)n = (a-1)(a^-1 + a^-2+...+a+1) - a(a-1)n \newline
+= (a-1)(a^-1 + a^-2+...+a+1 - an)
+$$
+
+
+
+
## 二次方程QuadraticEquation
### 一元二次不定方程
diff --git a/index/online.md b/index/online.md
index 8fba0b0..591d300 100644
--- a/index/online.md
+++ b/index/online.md
@@ -14,6 +14,8 @@
- [WebGL Report](https://webglreport.com/)
- [WebGPU Report](https://webgpureport.org/)
+- [Tunnelmole 是一个简单易用的隧道工具,不需要配置,只要一行命令,就让公网可以访问内网服务](https://tunnelmole.com/)
+ - npm或其他按照方式,执行tmole portNumber就可以生成一个链接拉
## Blogs