[Python3]超级码力在线编程大赛初赛第2场题解

python

P1 三角魔法

描述
小栖必须在一个三角形中才能施展魔法,现在他知道自己的坐标和三个点的坐标,他想知道他能否施展魔法

  • 点在边上也属于三角形内
  • 109<=x,y<=109-10^{9}<=x, y<=10^{9}109<=x,y<=109

解:

  • 判断是否共线
  • 判断是否在三角形内

补充知识(好久之前学的,早忘了):

  1. 判断是否共线
    对于三个点(x0,y0)(x0, y0)(x0,y0) ,(x1,y1)(x1, y1)(x1,y1) ,(x2,y2)(x2, y2)(x2,y2) ,如果满足(y3y1)(x2x1)(y2y1)(x3x1)=0(y 3-y 1)(x 2-x 1)-(y 2-y 1)(x 3-x 1)=0(y3y1)(x2x1)(y2y1)(x3x1)=0, 那么这三点共线。

  2. 判断是否在三角形内:
    判断PPP是否在AB,CA,B, CAB,C组成的三角形内。 如果在三角形内,则:
    AP=u×(AB)+v×ACA P=u imes(A B)+v imes A CAP=u×(AB)+v×AC
    满足0u,v10 leq u,v leq 10u,v1, 且u+v1u+vleq 1u+v1。

    v=x2y0y2x0x1y0y1x0v=frac{x_{2} y_{0}-y_{2} x_{0}}{x_{1} y_{0}-y_{1} x_{0}}v=x1y0y1x0x2y0y2x0
    u=x2y1y2x1x0y1y0x1u=frac{x_{2} y_{1}-y_{2} x_{1}}{x_{0} y_{1}-y_{0} x_{1}}u=x

以上是 [Python3]超级码力在线编程大赛初赛第2场题解 的全部内容, 来源链接: utcz.com/z/530322.html

回到顶部