Problem Statement
In order to make the implementation simpler the polygon and its representation satisfy some additional constraints. Please read the Constraints section carefully.
A three-dimensional solid is obtained by rotating this polygon around the Y axis. Compute and return the volume of the resulting solid.
Definition
- Class:
- PolygonRotation
- Method:
- getVolume
- Parameters:
- int[], int[]
- Returns:
- double
- Method signature:
- double getVolume(int[] x, int[] y)
- (be sure your method is public)
Notes
- The returned value must have an absolute or relative error less than 1e-9.
Constraints
- x will contain between 3 and 50 elements, inclusive.
- y will contain the same number of elements as x.
- Each element of x and y will be between -100 and 100, inclusive.
- The polygon will be convex.
- All vertices of the polygon will be distinct.
- The polygon will have exactly two vertices on the Y axis. Let's denote them (0, Ymin) and (0, Ymax) with Ymin < Ymax.
- The vertices will be listed in clockwise order, starting with (0, Ymax).
- The y-coordinates of all vertices will be between Ymin and Ymax, inclusive.
- No three points will lie on the same line.
Examples
{0, 1, 1, 0}
{1, 1, 0, 0}
Returns: 3.141592653589793
The polygon is a square with sides parallel to the coordinate axes. One of the sides of the square belongs to the Y axis. The resulting solid of revolution is a right cylinder of height 1 and radius 1.
{0, 1, 0, -1}
{2, 1, 0, 1}
Returns: 2.0943951023931953
This polygon is also a square. Each of its sides is angled at 45 degrees to the coordinate axes. The resulting solid of revolution is the union of two cones, each with base radius 1 and height 1.
{0, 3, 0, -2, -2}
{2, 0, -3, -1, 1}
Returns: 49.91641660703782
{0, 3, 3, 0, -1, -1}
{2, 2, -2, -2, -1, 1}
Returns: 113.09733552923255
{0, 1, 1, 0, -2}
{3, 2, 0, -1, 1}
Returns: 16.755160819145562
{0, 0, -2, -2}
{2, -2, -1, 1}
Returns: 33.51032163829113
{0, 3, 3, 0, -1}
{5, 3, 1, 0, 2}
Returns: 84.82300164692441
{0, 2, 0, -2}
{4, 1, 0, 3}
Returns: 26.063583496448654
{0, 100, 100, 0}
{100, 100, -100, -100}
Returns: 6283185.307179586
max volume
{0, 0, -1}
{100, 99, 100}
Returns: 1.0471975511965976
min volume? can't have 0
{0, 1, 0}
{100, 99, -100}
Returns: 209.4395102393195
{0, 3, 8, 11, 13, 14, 11, 6, 0, -2, -9, -13, -14, -12, -9, -5}
{25, 24, 21, 17, 12, 7, 3, 1, 0, 0, 2, 5, 8, 15, 20, 23}
Returns: 9198.382026237112
edges intersections
{0, 3, 5, 0, -6, -5}
{91, 90, 87, 84, 85, 89}
Returns: 475.3584520415235
{0, 78, 83, 92, 99, 100, 99, 0, -68, -95, -100, -98, -87}
{65, 64, 63, 59, 53, 8, -89, -90, -89, -81, -44, -18, 61}
Returns: 4723637.067638256
{0, 91, 100, 97, 93, 54, 0, -68, -97, -100, -97, -80, -24}
{63, 52, -21, -42, -47, -52, -52, -50, -49, 12, 40, 62, 63}
Returns: 3329568.953087996
{0, 56, 71, 96, 98, 100, 97, 0, -79, -90, -97, -94, -87}
{95, 91, 86, 75, 60, 0, -94, -97, -88, -59, -22, 55, 95}
Returns: 5685000.7505014315
{0, 70, 81, 94, 77, 0, -88, -82, -67}
{82, 80, 75, 31, -45, -53, -34, 68, 81}
Returns: 3042704.6127889734
{0, 92, 89, 55, 0, -85, -91, -42}
{92, 89, -37, -80, -80, -67, 31, 64}
Returns: 4130729.846929075
{0, 93, 99, 98, 94, 63, 0, -49, -88, -98, -100, -90}
{100, 96, 53, -9, -89, -94, -94, -89, -84, -71, 68, 91}
Returns: 5725965.433813009
{0, 98, 99, 95, 79, 36, 0, -51, -66, -98, -85, -78, -68, -38}
{80, 79, 24, -11, -63, -67, -68, -68, -67, -57, 18, 50, 60, 80}
Returns: 4240111.13596907
{0, 63, 92, 74, 0, -59, -85, -96, -92, -71, -44}
{53, -9, -63, -70, -94, -94, -78, -30, 21, 39, 52}
Returns: 3439349.9696476734
{0, 50, 75, 87, 96, 92, 88, 0, -56, -84, -95, -93, -89}
{96, 95, 91, 59, 0, -39, -51, -62, -55, -51, -7, 39, 95}
Returns: 4026571.258890373
{0, 93, 99, 100, 99, 97, 92, 0, -45, -93, -99, -88, -55, -46}
{67, 67, 52, -32, -50, -82, -91, -91, -82, -61, -58, 40, 55, 57}
Returns: 4825494.611569119
{0, 79, 100, 88, 63, 0, -83, -98, -100, -100, -68}
{56, 49, 25, -68, -81, -81, -75, -56, 23, 34, 56}
Returns: 3852806.9091679286
{0, 43, 90, 93, 91, 84, 79, 0, -3, -38, -74, -93, -100, -99, -91, -70, -65, -38}
{72, 70, 67, 50, 2, -82, -91, -93, -93, -92, -88, -81, -64, -28, 43, 60, 63, 71}
Returns: 4555948.909656588
{0, 81, 92, 41, 0, -97, -96, -90, -65}
{66, 54, 20, -25, -55, -35, -20, 23, 65}
Returns: 2697857.2415220863
{0, 24, 32, 42, 45, 61, 66, 73, 83, 85, 87, 87, 86, 81, 79, 71, 61, 48, 47, 37, 29, 23, 18, 14, 11, 6, 2, 1, 0, -1, -8, -17, -19, -22, -32, -40, -46, -48, -49, -50, -54, -55, -55, -53, -52, -50, -45, -34, -20, -3}
{100, 100, 98, 95, 94, 88, 86, 83, 78, 76, 72, 70, 67, 53, 48, 31, 10, -17, -19, -38, -53, -64, -73, -80, -85, -93, -99, -100, -100, -99, -86, -69, -65, -58, -29, -5, 15, 22, 26, 34, 67, 76, 77, 80, 81, 82, 84, 88, 93, 99}
Returns: 1965529.0661380454
{0, 3, 4, 6, 9, 15, 28, 29, 32, 37, 45, 49, 54, 56, 56, 54, 53, 49, 46, 31, 22, 8, 3, 0, -3, -5, -9, -10, -16, -18, -21, -28, -37, -42, -47, -48, -52, -52, -51, -50, -48, -44, -43, -41, -40, -38, -31, -21, -13, -5}
{100, 99, 98, 95, 90, 79, 54, 52, 44, 30, 6, -7, -24, -36, -39, -49, -52, -57, -60, -74, -82, -94, -98, -100, -99, -98, -95, -94, -87, -84, -79, -67, -51, -42, -28, -25, -12, -10, 3, 11, 23, 46, 51, 60, 63, 66, 75, 85, 92, 97}
Returns: 1131056.1783743398
{0, 3, 7, 12, 13, 15, 16, 21, 27, 35, 38, 40, 43, 45, 47, 49, 52, 54, 57, 58, 58, 57, 56, 53, 0, -5, -14, -18, -33, -40, -43, -49, -52, -53, -54, -55, -55, -53, -49, -47, -46, -43, -41, -39, -37, -27, -20, -8, -7, -4}
{100, 98, 95, 91, 90, 87, 85, 74, 60, 39, 31, 22, 8, -2, -13, -26, -46, -61, -84, -93, -95, -98, -99, -100, -100, -99, -97, -96, -92, -90, -89, -86, -84, -82, -78, -70, -66, -45, -5, 11, 16, 27, 34, 39, 43, 62, 75, 97, 98, 99}
Returns: 1262344.8140351921
{0, 1, 5, 9, 18, 31, 52, 55, 56, 56, 49, 38, 23, 15, 14, 8, 4, 2, 0, -15, -20, -21, -22, -26, -29, -36, -38, -43, -51, -61, -62, -63, -62, -61, -58, -51, -43, -31, -17, -1}
{100, 99, 94, 88, 74, 53, 19, 14, 12, 11, -5, -30, -62, -79, -81, -91, -97, -99, -100, -100, -99, -98, -95, -81, -70, -44, -35, -11, 28, 77, 82, 88, 92, 93, 95, 96, 97, 98, 99, 100}
Returns: 1365333.6770810853
{0, 3, 34, 39, 57, 59, 61, 59, 30, 18, 4, 0, -32, -37, -59, -68, -57, -54, -19, -9}
{100, 99, 81, 72, 39, 31, 16, 8, -49, -71, -94, -100, -49, -41, 0, 31, 51, 54, 86, 95}
Returns: 1233765.1990738146
{0, 23, 33, 38, 41, 41, 34, 21, 14, 0, -13, -26, -28, -35, -36, -53, -56, -58, -57, -39, -32, -9}
{100, 91, 80, 23, -32, -72, -84, -98, -100, -100, -97, -86, -82, -64, -61, -7, 14, 48, 54, 88, 95, 99}
Returns: 1385042.9467671013
{0, 2, 23, 33, 35, 39, 43, 43, 39, 36, 29, 25, 20, 0, -29, -46, -60, -66, -69, -72, -70, -39, -12}
{100, 99, 81, 67, 58, 33, 4, 3, -21, -37, -71, -85, -94, -100, -33, 7, 40, 61, 76, 92, 96, 99, 100}
Returns: 1500244.6249101167
{0, 8, 17, 34, 55, 66, 71, 67, 44, 21, 0, -10, -14, -21, -55, -57, -58, -55, -53, -50, -47, -37, -33, -25}
{100, 98, 95, 55, -6, -38, -55, -67, -79, -90, -100, -91, -86, -76, -25, -20, -11, 15, 25, 36, 43, 62, 68, 77}
Returns: 1586465.846731909
{0, 14, 16, 23, 39, 48, 48, 45, 42, 40, 30, 21, 5, 0, -2, -12, -54, -58, -65, -72, -68, -60, -55, -44, -34}
{100, 90, 88, 80, 49, 31, 28, -9, -43, -56, -75, -91, -99, -100, -100, -98, -89, -88, -86, -83, -67, -41, -27, -1, 22}
Returns: 1479511.1588454032
{0, 14, 34, 41, 45, 51, 53, 51, 45, 42, 32, 22, 13, 6, 0, -8, -25, -34, -37, -46, -48, -46, -44, -41, -23, -20}
{100, 98, 91, 80, 68, 45, 24, 1, -18, -26, -51, -75, -95, -100, -100, -93, -72, -56, -50, -26, -19, 2, 13, 26, 85, 87}
Returns: 1094111.0770994825
{0, 20, 37, 44, 50, 52, 53, 54, 53, 47, 44, 41, 39, 27, 5, 0, -1, -15, -22, -30, -40, -48, -51, -53, -55, -55, -53, -51}
{100, 100, 98, 97, 96, 93, 88, 75, 65, 16, -8, -27, -33, -56, -98, -100, -99, -79, -66, -51, -32, -15, -6, 9, 53, 71, 95, 99}
Returns: 1257988.0197558245
{0, 5, 10, 13, 23, 27, 37, 40, 41, 43, 44, 44, 32, 22, 15, 12, 0, -24, -30, -36, -41, -49, -50, -55, -54, -52, -37, -11, -5}
{100, 97, 93, 88, 70, 61, 38, 31, 22, -23, -46, -48, -73, -93, -98, -100, -100, -70, -62, -53, -45, -31, -29, -15, -10, -4, 27, 80, 91}
Returns: 878505.6156722622
{0, 5, 54, 60, 72, 73, 58, 54, 37, 25, 3, 0, -13, -26, -29, -31, -36, -37, -38, -49, -52, -54, -51, -43, -42, -37, -33, -28, -24, -6}
{100, 100, 93, 92, 74, 72, 19, 6, -49, -66, -96, -100, -96, -91, -89, -87, -79, -77, -74, -40, -29, -21, 2, 47, 51, 70, 84, 90, 93, 99}
Returns: 1824714.378138782
{0, 5, 8, 21, 50, 70, 71, 73, 74, 73, 70, 66, 55, 49, 44, 7, 0, -2, -40, -49, -46, -43, -40, -33, -28, -25, -24, -19, -15, -8, -6}
{100, 92, 87, 64, 12, -24, -26, -31, -34, -38, -47, -56, -66, -71, -74, -96, -100, -97, -38, -24, -8, 7, 21, 51, 72, 84, 86, 91, 94, 98, 99}
Returns: 1452209.2474028494
{0, 6, 26, 39, 43, 46, 47, 48, 51, 51, 46, 27, 16, 11, 7, 0, -19, -35, -58, -62, -64, -65, -69, -72, -71, -69, -64, -50, -34, -30, -18, -10}
{100, 88, 47, 18, 7, -9, -16, -25, -54, -55, -61, -83, -92, -95, -97, -100, -100, -97, -92, -91, -88, -86, -77, -65, -54, -45, -28, 7, 44, 51, 71, 84}
Returns: 1618429.1546086252
{0, 4, 14, 29, 32, 48, 51, 53, 53, 49, 45, 40, 29, 2, 0, -7, -13, -14, -29, -36, -38, -43, -45, -47, -46, -45, -43, -39, -34, -16, -11, -6, -5}
{100, 98, 90, 76, 73, 55, 47, 35, 31, 12, -6, -20, -43, -97, -100, -98, -93, -92, -76, -68, -63, -50, -44, -37, -15, -5, 13, 25, 39, 78, 88, 97, 98}
Returns: 1035993.1457147312
{0, 6, 12, 14, 23, 27, 33, 34, 39, 45, 47, 48, 49, 49, 42, 36, 7, 0, -24, -35, -39, -44, -49, -53, -54, -54, -53, -52, -49, -46, -44, -42, -34, -19, -17}
{100, 98, 94, 91, 76, 69, 58, 56, 39, 17, 6, -7, -21, -26, -39, -48, -90, -100, -98, -97, -96, -84, -64, -44, -28, -5, 17, 37, 52, 65, 73, 77, 82, 91, 92}
Returns: 1431640.611177492
{0, 4, 7, 16, 23, 27, 30, 35, 42, 47, 49, 51, 51, 47, 42, 31, 17, 10, 0, -6, -30, -63, -81, -83, -88, -89, -88, -87, -84, -76, -63, -40, -32, -31, -15, -12, -4}
{100, 100, 96, 77, 62, 53, 46, 34, 13, -9, -18, -30, -33, -39, -46, -61, -80, -89, -100, -100, -98, -95, -93, -91, -85, -83, -77, -74, -67, -49, -20, 31, 48, 50, 81, 86, 99}
Returns: 2037183.57995005
{0, 1, 2, 4, 8, 16, 28, 30, 36, 38, 40, 42, 41, 37, 35, 33, 25, 19, 9, 3, 0, -1, -11, -14, -17, -18, -20, -33, -42, -47, -49, -50, -50, -46, -34, -21, -14, -6}
{100, 100, 99, 96, 88, 71, 45, 38, 12, 3, -16, -40, -44, -57, -63, -66, -77, -84, -94, -99, -100, -100, -99, -97, -92, -90, -83, -34, 0, 19, 27, 34, 41, 48, 62, 77, 85, 94}
Returns: 835192.3886207001
{0, 13, 19, 25, 33, 35, 36, 38, 41, 42, 44, 46, 46, 45, 44, 42, 41, 40, 39, 35, 26, 0, -14, -26, -30, -39, -41, -48, -49, -49, -48, -47, -46, -43, -41, -39, -34, -28, -19}
{100, 98, 97, 95, 92, 91, 89, 80, 52, 42, 20, -4, -12, -35, -53, -76, -84, -91, -94, -96, -100, -100, -64, -33, -21, 12, 20, 50, 62, 63, 69, 74, 78, 85, 89, 91, 95, 99, 100}
Returns: 1215897.2095911056
{0, 3, 24, 36, 46, 54, 63, 69, 83, 84, 79, 73, 70, 56, 47, 39, 32, 27, 21, 16, 12, 0, -19, -25, -28, -30, -33, -36, -37, -46, -48, -49, -49, -40, -24, -22, -17, -14, -12, -4}
{100, 99, 66, 47, 31, 18, 2, -9, -35, -38, -44, -51, -54, -67, -75, -82, -88, -92, -95, -97, -98, -100, -100, -98, -96, -94, -89, -78, -74, -37, -9, 6, 7, 32, 76, 81, 92, 98, 99, 100}
Returns: 1782374.7030592347
{0, 4, 12, 18, 22, 27, 28, 31, 36, 44, 47, 52, 54, 56, 56, 55, 53, 42, 33, 25, 12, 6, 4, 1, 0, -3, -5, -6, -21, -27, -29, -30, -31, -32, -32, -30, -20, -14, -13, -10, -9, -4}
{100, 100, 99, 98, 97, 95, 93, 85, 71, 48, 39, 23, 16, 8, 3, 0, -4, -25, -42, -57, -81, -92, -95, -99, -100, -97, -94, -92, -60, -47, -30, -21, -8, 10, 16, 23, 55, 74, 77, 84, 86, 94}
Returns: 927654.7147397501
{0, 7, 10, 17, 22, 23, 31, 33, 34, 36, 38, 39, 38, 35, 33, 30, 26, 25, 20, 17, 15, 8, 0, -1, -6, -15, -24, -35, -40, -44, -45, -48, -49, -50, -50, -47, -40, -36, -31, -23, -16, -8, -1}
{100, 97, 95, 90, 86, 85, 62, 56, 51, 34, 15, 5, -4, -30, -43, -61, -80, -84, -93, -95, -96, -98, -100, -100, -97, -86, -74, -59, -52, -40, -35, -18, -4, 11, 21, 33, 49, 58, 68, 82, 93, 97, 100}
Returns: 934062.1115238308
{0, 5, 12, 20, 21, 33, 36, 37, 38, 39, 40, 41, 41, 40, 39, 37, 36, 34, 31, 27, 21, 10, 6, 0, -5, -7, -20, -27, -31, -37, -44, -47, -56, -59, -58, -56, -48, -43, -25, -22, -15, -12, -8, -4}
{100, 97, 92, 85, 84, 71, 67, 65, 60, 52, 36, 3, 2, -23, -39, -54, -61, -74, -88, -91, -94, -98, -99, -100, -99, -96, -76, -65, -58, -47, -34, -28, -9, -1, 7, 12, 29, 39, 74, 79, 90, 94, 99, 100}
Returns: 1057903.3830511027
{0, 6, 11, 19, 22, 23, 24, 28, 33, 38, 45, 48, 49, 52, 55, 56, 57, 57, 56, 54, 48, 43, 23, 1, 0, -3, -8, -13, -27, -28, -39, -45, -48, -49, -51, -48, -47, -42, -26, -17, -13, -10, -3, -2, -1}
{100, 99, 97, 93, 91, 90, 88, 79, 58, 36, 5, -9, -16, -38, -61, -69, -82, -86, -90, -95, -97, -98, -99, -100, -100, -99, -97, -93, -80, -79, -64, -55, -46, -41, -30, -20, -17, -3, 40, 64, 74, 81, 97, 99, 100}
Returns: 1240435.9985804397
{0, 2, 38, 49, 50, 53, 53, 50, 49, 47, 46, 42, 35, 32, 30, 28, 24, 15, 13, 0, -6, -19, -27, -31, -34, -39, -41, -43, -44, -46, -48, -49, -49, -48, -45, -38, -33, -29, -27, -21, -19, -16, -14, -13, -8, -1}
{100, 99, 50, 35, 33, 25, 22, 5, 0, -7, -10, -21, -40, -48, -53, -57, -64, -78, -81, -100, -100, -99, -98, -97, -96, -94, -93, -90, -87, -80, -63, -54, -53, -38, -21, 14, 38, 57, 65, 81, 86, 93, 97, 98, 99, 100}
Returns: 1133775.2963241762
{0, 8, 18, 26, 29, 33, 34, 37, 39, 40, 40, 39, 38, 37, 34, 29, 23, 22, 17, 13, 10, 7, 3, 2, 0, -26, -31, -34, -45, -46, -48, -51, -54, -58, -59, -59, -55, -53, -50, -46, -37, -32, -29, -19, -7, -4, -3}
{100, 100, 99, 94, 92, 89, 87, 77, 70, 63, 41, 16, 2, -2, -12, -28, -47, -50, -64, -75, -83, -90, -99, -100, -100, -99, -96, -94, -85, -84, -79, -70, -60, -45, -41, -39, -16, -5, 4, 14, 36, 48, 54, 72, 93, 97, 98}
Returns: 1344375.5054132284
{0, 7, 21, 26, 29, 36, 40, 49, 54, 57, 60, 63, 64, 64, 62, 60, 48, 40, 38, 35, 31, 14, 9, 8, 5, 3, 0, -16, -39, -56, -61, -64, -69, -70, -72, -73, -74, -72, -68, -58, -47, -45, -42, -39, -37, -31, -20, -5}
{100, 100, 99, 98, 97, 94, 92, 87, 84, 80, 75, 69, 64, 57, 49, 42, 4, -21, -27, -35, -44, -82, -93, -95, -98, -99, -100, -76, -41, -15, -7, 0, 14, 17, 24, 29, 35, 41, 48, 64, 81, 84, 87, 89, 90, 92, 95, 99}
Returns: 1718117.61725066
{0, 70, 80, 88, 92, 95, 97, 98, 98, 96, 94, 90, 88, 86, 84, 81, 76, 66, 39, 26, 12, 7, 1, 0, -6, -16, -31, -34, -36, -40, -42, -45, -50, -58, -60, -61, -62, -62, -60, -57, -54, -50, -47, -45, -38, -37, -34, -27, -16}
{100, 99, 98, 97, 96, 95, 94, 92, 91, 79, 68, 47, 37, 29, 23, 18, 10, -5, -45, -64, -84, -91, -99, -100, -100, -95, -87, -85, -80, -69, -61, -48, -25, 12, 22, 28, 35, 38, 46, 57, 67, 79, 85, 88, 96, 97, 98, 99, 100}
Returns: 3115792.228095934
{0, 0, -100}
{-99, -100, -100}
Returns: 10471.975511965977
{0, 100, 0, -100}
{-99, -99, -100, -100}
Returns: 18325.957145940458
{0, 3, 6, 4, 0, -1, -5, -4}
{59, 58, 55, 51, 50, 50, 53, 57}
Returns: 543.4300792240844
{0, 99, 99, 0, -100, -100}
{-10, -11, -12, -14, -12, -11}
Returns: 62831.853071795864
{0, 3, 5, 6, 0, -4, -6, -5}
{-15, -16, -17, -19, -21, -20, -19, -17}
Returns: 347.6695869972704
{0, 99, 0, -100, -1}
{45, 42, 41, 42, 45}
Returns: 42205.20290587648
{0, 1, 99, 0, -100}
{-27, -27, -28, -32, -28}
Returns: 52386.5810973854
{0, 100, 0, -99}
{1, 1, 0, 0}
Returns: 18143.810220226467
{0,99,100,98,0,-100,-100,-99}
{100,100,0,-100,-100,-99,1,99}
Returns: 6250805.161621407
{0,1,1,0,-1}
{100,0,-100,-100,99}
Returns: 534.6106257776024
{0,1,0,-1}
{100,-100,-100,99}
Returns: 366.25635850055613
{0, 3, 0, -2, -2 }
{2, 0, -3, -1, 1 }
Returns: 49.91641660703782
{0, 4, 4, 0, -3, -5 }
{5, 4, 2, 0, 1, 4 }
Returns: 192.5534497262744
{0, 2, 2, 0, -4 }
{2, 2, 0, 0, 1 }
Returns: 41.88790204786391
{0, 1, 0, -1 }
{1, 1, 0, 0 }
Returns: 1.8325957145940461
{0, 1, 3, 0, -2, -3 }
{2, 2, -1, -2, -1, 1 }
Returns: 66.33675916151508
{0, 3, 0, -3 }
{10, 3, -10, -4 }
Returns: 273.56419979407417