物聯網無線通訊數傳模組:多主機閘道器工作模式,一文看懂
非常幼稚和不嚴謹的學習筆記。
前置
闆闆
點積
點積比較簡單,即 \(a\cdot b=|a||b|\cos\theta\),計算方式是 \(\text{dot}=x_1x_2+y_1y_2\)。然後常用的是用點積除以其中一個的模長,得到的就是另一個向量到這個向量的投影長度。根據這個投影方向和原向量的方向這玩意有正有負。這玩意顯然是符合交換律的,畢竟 \(\cos\) 的符號圓也是這樣的嘛。然後根據 \(\cos\) 的符號性質可以通過點積來判斷 \(\theta\) 和 \(90^\circ\) 的關係,如果正的話就小於,否則大於,剛好是 \(90^\circ\) 就剛好是 \(0\)。
叉積
然後是叉積。\(a\times b=|a||b|\sin\theta\)
點
旋轉
點 \((x,y)\) 繞著原點旋轉 \(\theta\) 後的點座標應該是 \((x\cdot\cos\theta+y\cdot\sin\theta,-x\cdot\sin\theta+y\cdot\cos\theta)\)
點是否線上段上
可以直接用 \(dis_{x,p}+dis_{p,y}\) 與 \(dis_{x,y}\) 做比較,但是精度可能會損失比較多。另一個方法是直接看 \(\frac{a\cdot b}{|a||b|}\) 和 \(-1\) 的關係,但同樣會損失精度。總之呢就是儘量不要去算線段長度(畢竟 \(\text{sqrt}\) 函式會大大地損失精度)。所以通過判斷共線且外開的方式來判斷,即 \(a\times b=0\) 並且 \(a\cdot b<0\)。
點到線段的距離
首先算出來 \(p\) 分別到 \(x\) 和 \(y\) 的距離,然後看兩個底角有沒有鈍角,就是看 \((p,x)\cdot (x,y)\)
點是否在直線上
和線段上同理,不需要判斷內張還是外張,充要條件就是 \(a\times b=0\)。
點到直線的垂足
先求出 \(-a\) 在 \(l\) 上的投影 \(a'\),同理求出 \(b'\),發現垂足到 \(x\) 的距離是 \(l\) 長度的 \(\frac{a'}{a'-b'}\) 倍,計算即可。別忘了計算投影長度的時候要把地面除掉。
點關於直線的對稱點
關於垂足對稱。略過。