#C241. Point Inside Triangle

    ID: 45723 Type: Default 1000ms 256MiB

Point Inside Triangle

Point Inside Triangle

Given eight floating-point numbers representing the coordinates of a point and the vertices of a triangle, determine whether the point lies within the triangle. The point is considered inside if it lies on the edges or vertices as well.

You are given:

  • (px, py): the point to test
  • (ax, ay), (bx, by), (cx, cy): the vertices of the triangle

Input: A single line with eight space-separated numbers: px, py, ax, ay, bx, by, cx, cy.

Output: Print True if the point is inside or on the boundary of the triangle, otherwise print False.

The problem can be solved using the barycentric coordinate method. In mathematical terms, if we define a function \( \text{sign}(x_1, y_1, x_2, y_2, x_3, y_3) = (x_1 - x_3)(y_2 - y_3) - (x_2 - x_3)(y_1 - y_3) \), then the point \( (px,py) \) is inside the triangle if:

[ \text{not} \Big( (d_1 < 0 \text{ and } d_2 > 0) \text{ or } (d_2 < 0 \text{ and } d_3 > 0) \text{ or } (d_3 < 0 \text{ and } d_1 > 0) \Big) ]

where \( d_1, d_2, d_3 \) are the results of applying the sign function to the three edges formed by the triangle's vertices.

inputFormat

A single line containing eight space-separated floating-point numbers: px, py, ax, ay, bx, by, cx, cy.

outputFormat

A single line containing either 'True' or 'False' (without quotes), indicating whether the point lies inside (or on the boundary of) the triangle.## sample

0 0 0 0 5 0 5 5
True