計算幾何 幾何基礎

2021-08-19 22:30:13 字數 1163 閱讀 7871

這章早在2023年寒假就在培訓的時候由來自清華的hta老師上過了

但是本蒟蒻那時候並不是懂的太多

所以這週ww老師又上了一遍

大概記錄一下

大概就跟高中必修4的平面向量差不多(有上過的應該都會)

a = (x1, y1)  b = (x2, y2)

a · b = x1x2 + y1y2

a · b = |a||b|cos< a, b>

運用:

若a與b**垂直**,則a · b = 0

乙個與a垂直的向量: (y1, –x1)

a = (x1, y1)  b = (x2, y2)

a×b = x1y2 - x2y1

|a×b| = |a||b|sin< a, b>

a×b = - b×a

討論x1y2 - x2y1符號

當=0,b與a共線(可以反向)

當》0,b在a逆時針方向

當<0,b在a順時針方向

運用 折線段的拐向判斷:

折線段的拐向判斷方法可以直接由向量叉積的性質推出。對於有公共端點的線段p0p1和p1p2,通過計算(p2 - p0) × (p1 - p0)的符號便可以確定折線段的拐向:

若(p2 - p0) × (p1 - p0) > 0,則p0p1在p1點拐向右側後得到p1p2。

若(p2 - p0) × (p1 - p0) < 0,則p0p1在p1點拐向左側後得到p1p2。

若(p2 - p0) × (p1 - p0) = 0,則p0、p1、p2三點共線。

absinc/2

底乘高海**式:s=根號下p(p-a)(p-b)(p-c)(p為三角形周長的一半,即p=1/2(a+b+c))跨立實驗:判斷一條線段的兩端是否在另一條線段的兩側(兩個端點與另一線段的叉積乘積為負)。需要正反判斷兩側。

( p1 - q1 ) × ( q2 - q1 ) * ( q2 - q1 ) × ( p2 - q1 ) >= 0

( q1 - p1 ) × ( p2 - p1 ) * ( p2 - p1 ) × ( q2 - p1 ) >= 0

隨機向乙個方向射出一條射線,

這個點在多邊形內僅當射線與多邊形奇數條邊相交。

大概就是這樣吧~

計算幾何基礎

1 向量叉積 ab ac 0 ac在ab的 逆時針方向,否則順時針 0 a b c 共線 class point p q 為向量 a,b,c為點 p q x1 y2 x2 y1 p a b q c a 即 x1 x0 y2 y0 x2 x0 y1 y0 計算 ab ac 的叉積 double cor...

計算幾何基礎

凸包演算法 include includeusing namespace std const int n 5e5 11 int n,m struct point point int x,int y x x y y friend inline point operator const point a,...

計算幾何基礎提綱

一 約定格式 a 點 向量的表示 b 封裝向量加減法 點積 叉積 double mult struct point p1,struct point p2,struct point p3 double dis struct point p1,struct point p2 c 線段 兩個點隔得很遠,取...