本帖最后由 作者 于 2007-5-29 9:02:45 编辑
命题: 点在直线的哪一侧? 与下面的命题是等价的 已知一直线(给定不重合的两端点P1, P2), 确定两点S1, S2是否在直线的同一侧? 首先应明确的是这类命题都仅在2D空间才有意义, 虽然在计算上采取3D的手法. 该问题可以通过矢量的内积与外积的计算,如下确定. 设以P1为起点, 以P2, S1, S2为终点的矢量分别为V0, V1和V2. V0 = P2 - P1 V1 = S1 - P1 V2 = S2 - P1 如果S1与S2在直线的同一侧的话,下面所示矢量的外积(还是矢量) (V0×V1) 和 (V0×V2) 的方向一致. 结论: (1) (V0×V1) =0 --- 点S1在直线上 (2) (V0×V2) =0 --- 点S2在直线上 (3) (V0×V1) · (V0×V2) > 0 --- S1与S2在直线的同一侧 (V0×V1) · (V0×V2) < 0 --- S1与S2不在直线的同一侧 ******************************************************* 关于矢量的内积与外积的计算方法: 设两矢量为G, E, 数组的索引从0开始计算时, 成分表示如下, G = (G(0), G(1), G(2) )T, E = (E(0), E(1), E(2) )T, 1) 矢量的内积c为标量, 如下计算, c = G · E = G(0)E(0) + G(1)E(1) + G(2)E(2) 2) 矢量的外积V还是矢量, V = G × E V 的成分如下, V(0) = G(1)E(2) - G(2)E(1) V(1) = G(2)E(0) - G(0)E(2) V(2) = G(0)E(1) - G(1)E(0) |