[Python3]超级码力在线编程大赛初赛第2场题解
P1 三角魔法
描述
小栖必须在一个三角形中才能施展魔法,现在他知道自己的坐标和三个点的坐标,他想知道他能否施展魔法
- 点在边上也属于三角形内
- −109<=x,y<=109-10^{9}<=x, y<=10^{9}−109<=x,y<=109
解:
- 判断是否共线
- 判断是否在三角形内
补充知识(好久之前学的,早忘了):
判断是否共线
对于三个点(x0,y0)(x0, y0)(x0,y0) ,(x1,y1)(x1, y1)(x1,y1) ,(x2,y2)(x2, y2)(x2,y2) ,如果满足(y3−y1)(x2−x1)−(y2−y1)(x3−x1)=0(y 3-y 1)(x 2-x 1)-(y 2-y 1)(x 3-x 1)=0(y3−y1)(x2−x1)−(y2−y1)(x3−x1)=0, 那么这三点共线。判断是否在三角形内:
判断PPP是否在A,B,CA,B, CA,B,C组成的三角形内。 如果在三角形内,则:
AP=u×(AB)+v×ACA P=u imes(A B)+v imes A CAP=u×(AB)+v×AC
满足0≤u,v≤10 leq u,v leq 10≤u,v≤1, 且u+v≤1u+vleq 1u+v≤1。v=x2y0−y2x0x1y0−y1x0v=frac{x_{2} y_{0}-y_{2} x_{0}}{x_{1} y_{0}-y_{1} x_{0}}v=x1y0−y1x0x2y0−y2x0
u=x2y1−y2x1x0y1−y0x1u=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