## The challenge

Write a simple function that takes polar coordinates (an angle in degrees and a radius) and returns the equivalent cartesian coordinates (rounded to 10 places).

For example:

`coordinates(90,1)` `=> (0.0, 1.0)`

`coordinates(45, 1)` `=> (0.7071067812, 0.7071067812)`

## The solution in Java code

Option 1:

 ``````1 2 3 4 5 6 7 8 9 `````` ``````import java.awt.geom.Point2D; class CoordinatesInspector { Point2D.Double coordinates(Double degrees, Double radius) { return new Point2D.Double( Math.round(radius * Math.cos(Math.toRadians(degrees)) * 10e9) / 10e9, Math.round(radius * Math.sin(Math.toRadians(degrees)) * 10e9) / 10e9); } } ``````

Option 2:

 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 `````` ``````import java.awt.geom.Point2D; import java.math.*; public class CoordinatesInspector { public Point2D coordinates(Double degrees, Double radius) { double rd = Math.toRadians(degrees); double x = radius * Math.cos(rd); double y = radius * Math.sin(rd); BigDecimal xb = new BigDecimal(x).setScale(10, RoundingMode.HALF_UP); BigDecimal yb = new BigDecimal(y).setScale(10, RoundingMode.HALF_UP); return new Point2D.Double(xb.doubleValue(),yb.doubleValue()); } } ``````

Option 3:

 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 `````` ``````import java.awt.geom.Point2D; public class CoordinatesInspector { public static Point2D coordinates(Double degrees, Double radius) { var radians = Math.toRadians(degrees); return new Point2D.Double( Double.parseDouble(String.format("%.10f", radius * Math.cos(radians))), Double.parseDouble(String.format("%.10f", radius * Math.sin(radians))) ); } } ``````

## Test cases to validate our solution

 `````` 1 2 3 4 5 6 7 8 9 10 11 12 `````` ``````import java.awt.geom.Point2D; import org.junit.Test; import static org.junit.Assert.assertEquals; public class CoordinatesTest { @Test public void test_1() { Point2D result = new CoordinatesInspector().coordinates(90.0,1.0); assertEquals("Incorrect coordinates", new Point2D.Double(0.0,1.0), result); } } ``````

 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 `````` ``````import java.awt.geom.Point2D; import static org.junit.Assert.*; import org.junit.Test; public class CoordinatesTest { @Test public void test_1() { Point2D result = new CoordinatesInspector().coordinates(90.0,1.0); assertEquals("Incorrect coordinates", new Point2D.Double(0.0,1.0), result); } @Test public void test_2() { Point2D result = new CoordinatesInspector().coordinates(90.0,2.0); assertEquals("Incorrect coordinates", new Point2D.Double(0.0,2.0), result); } @Test public void test_3() { Point2D result = new CoordinatesInspector().coordinates(0.0,1.0); assertEquals("Incorrect coordinates", new Point2D.Double(1.0,0.0), result); } @Test public void test_4() { Point2D result = new CoordinatesInspector().coordinates(45.0,1.0); assertEquals("Incorrect coordinates", new Point2D.Double(0.7071067812,0.7071067812), result); } @Test public void test_5() { Point2D result = new CoordinatesInspector().coordinates(1090.0,10000.0); assertEquals("Incorrect coordinates", new Point2D.Double(9848.0775301221,1736.4817766693), result); } @Test public void test_6() { Point2D result = new CoordinatesInspector().coordinates(-270.0,1.0); assertEquals("Incorrect coordinates", new Point2D.Double(0.0,1.0), result); } } ``````