usaco计算几何入门

 3.4忽现恶心的计算几何一道......各种莫名其妙的公式同时出没,艰难地解决后胡乱写个总结。

 

 3.4.1 closed fence

 给出 fence数量和各个fence的坐标,给出观察者坐标,完成2个任务:

 1. 这组数据是否合法(合法的定义:连接相邻的2个fence得到一条边,若任意2条边不交叉,该组数据视为合法)

 2. 观察者共能看见多少条边。

 

 首先判定2边是否交叉,用叉积判断,要注意必须判断L1两端点是否在L2同侧,和,L2两端点是否在L1同侧(刚开始稀里糊涂只判断了一次)。

 计算可见边要麻烦些,设观察点为O,向angle角度引射线OA,会与某边相交于B,OB最小的边可见。

 这里要解决:A向何处引,如何计算OB,如何保证正确性。

 最好地办法是把OA引向某端点,再偏转一小角度。具体解法在这里

 

 下面着重熟悉计算几何中莫名其妙的公式和他们的来历。

 1.叉积 C

 向量Va,Vb

 C=Va X Vb = |Va|.|Vb|.sin<Va,Vb> (1)

 性质1: Va X Vb = - Vb X Va(就是利用这个性质判断了2点是否在某边的同一侧)                

 用坐标表示的话 C=ax * by - bx * ay(2维情况)

             |ax ay|

正好为行列式 |bx by|(2) 

 叉积又叫外积(相对内积来说,内积的意义很明显,向量a在b方向上的投影),因为它产生了一个垂直于原来平面的新的维度。它的几何意义来自(1)的定义,为垂直于a,b展开平面的向量,其算术值为a,b确定的平行四边形面积,又或者说它可以表达一个有向面积,用右手螺旋规则来确定方向(这是定义的么?)

 为神马可以写成行列式呢?

 行列式A是一种计算规则,代表一个值,而不同于矩阵A仅代表A元素的排列。A可以分解为 I*A ,I单位矩阵I的行列式。其意义就明显了,A表示一个伸缩因子,将I表达的正方形,伸缩变换为一个平行四边形。

 所以到这里就发现,叉积和行列式原来是有奸情的usaco计算几何入门

 补充:

 当a,b的z方向分量不为0时,会发现C的各个方向分量都是一个2维行列式,也就是说3维行列式可以展开成2维行列式,这个可以用物理意义来解释,C为力矩,a,b为产生力矩的F,F可以分解,每个分量产生一个2维行列式。(大概就这样吧,虽然很不严谨)

 

 2.求2直线AB,CD交点。

Ax+i(Bx-Ax) =Cx+j(Dx-Cx)

Ay+i(By-Ay) =Cy+j(Dy-Cy)

初见这公式云里雾里,不明白i,j是神马意义。

其实就是相似比!

usaco计算几何入门

 

好吧,其实这些公式,上学时问过老师,都以不考为由拒绝解答......估计他们也不知道这些公式背后的意义。

 在此鄙视从初中到高中教过我的老师,装逼辛苦了usaco计算几何入门

                                               关于行列式的资料来自《图解线性代数》(任广千胡翠芳编著)
 

本文使用Blog_Backup未注册版本导出,请到soft.pt42.com注册。

你可能感兴趣的:(USACO)