Android Разделение круга на N равных частей и знать координаты каждой точки разделения

У меня есть требование, чтобы круг был разделен на N равных частей на основе числа (2,3 … n. Но мне нужны координаты точек деления.

У меня есть круг, centre(x,y) которого centre(x,y) и radius(150) известны.

Вопрос:

Есть ли какая-либо формула, которая дает мне координаты точек деления, как показано на рисунке. Может кто-нибудь, пожалуйста, скажите мне формулу. Я хочу реализовать его на Java .

Изображение круга для refrence:

образ

Solutions Collecting From Web of "Android Разделение круга на N равных частей и знать координаты каждой точки разделения"

Вам нужно преобразовать между полярными и декартовыми координатами. Угол, который вам нужен, – это угол между (воображаемой) вертикальной линией, разделяющей круг пополам и линию, соединяющую центр с границей круга. С помощью этой формулы вы можете рассчитать смещения X и Y от центра.

В вашем примере изображения первый угол равен 0, а второй – 360 / n. Каждый следующий i*(360/n) где i – индекс текущей строки, которую вы должны нарисовать. Применяя это, вы получите смещения X и Y по часовой стрелке (и вы можете просто добавить их в координаты X и Y центра, чтобы найти координаты каждой точки)

EDIT: какой-то псевдокод:

 //x0, y0 - center's coordinates for(i = 1 to n) { angle = i * (360/n); point.x = x0 + r * cos(angle); point.y = y0 + r * sin(angle); } 

Я уже принял ответ … формула работает отлично. Вот решение, закодированное на Java. Это поможет другим разработчикам.

  private int x[]; // Class variable private int y[]; // Class variable private void getPoints(int x0,int y0,int r,int noOfDividingPoints) { double angle = 0; x = new int[noOfDividingPoints]; y = new int[noOfDividingPoints]; for(int i = 0 ; i < noOfDividingPoints ;i++) { angle = i * (360/noOfDividingPoints); x[i] = (int) (x0 + r * Math.cos(Math.toRadians(angle))); y[i] = (int) (y0 + r * Math.sin(Math.toRadians(angle))); } for(int i = 0 ; i < noOfDividingPoints ;i++) { Log.v("x",""+i+": "+x[i]); Log.v("y",""+i+": "+y[i]); } } 

Где x0 и y0 – координаты центра круга, а r – радиус.

В моем случае:

Вход x0 = 0, y0 = 0 и r = 150, noOfDividingPoints = 5

вывод

Пункт1: (150,0)

Пункт 2: (46, 142)

Пункт 3: (-121,88)

Пункт4: (-121, -88)

Пункт 5: (46, -142)