TopcoderArchiveVisit Topcoder
SRM25 Jan 2007
SRM 336

Shadow

Problem statement, definition, constraints, and public examples.

Problem Statement

We are going to plant a tree on level ground near a streetlight, and we want to know how big a shadow it will cast. We will model the tree as a (possibly degenerate) rectangular solid, and treat the streetlight as casting rays from a single point. We will use an x,y,z coordinate system that is aligned with the rectangular solid and in which y is the distance above ground level.

int[] tree contains exactly 6 elements, namely the x,y,z coordinates of one corner of the rectangular solid followed by the coordinates of the diagonally opposite corner. int[] light contains exactly 3 elements, the x,y,z coordinates of the streetlight. Given tree and light, return the area of the shadow, or return -1 to indicate that the shadow has an infinite area. If the shadow is an infinitely long line, return 0 as its area.

Definition

Class:
Shadow
Method:
area
Parameters:
int[], int[]
Returns:
double
Method signature:
double area(int[] tree, int[] light)
(be sure your method is public)

Notes

  • A return value with either an absolute or relative error of less than 1.0E-9 is considered correct.

Constraints

  • tree will contain exactly 6 elements.
  • light will contain exactly 3 elements.
  • Each element of tree and of light will be between 1 and 10, inclusive.
  • The coordinates of the light will not lie on the boundary of the tree.

Examples

  1. {1,1,1, 10,1,1}
    {5,5,5}
    Returns: 0.0
    This tree is just a line so its shadow has no area.
  2. {1,3,1, 10,1,1}
    {2,2,2}
    Returns: -1.0
    This tree is just a rectangle. Its shadow covers an infinite rectangular area on the ground.
  3. {1,1,1, 2,2,2}
    {3,3,3}
    Returns: 15.75
    This is a unit cube one unit above the ground. The shadowed area is a six-sided polygon.
  4.  {1,1,1, 3,3,3} 
    {2,2,2}
    Returns: -1.0
    When the light is inside the tree the shadow extends everywhere.
Back to all problems