TopCoder problem "Shadow" used in SRM 336 (Division I Level Three)



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

0)
    
{1,1,1, 10,1,1}
{5,5,5}
Returns: 0.0
This tree is just a line so its shadow has no area.
1)
    
{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.
2)
    
{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.
3)
    
 {1,1,1, 3,3,3} 
{2,2,2}
Returns: -1.0
When the light is inside the tree the shadow extends everywhere.

Problem url:

http://www.topcoder.com/stat?c=problem_statement&pm=7336

Problem stats url:

http://www.topcoder.com/tc?module=ProblemDetail&rd=10660&pm=7336

Writer:

dgoodman

Testers:

PabloGilberto , brett1479 , Olexiy , lovro

Problem categories:

Geometry