Задать вопрос
@Mark321

Как расположить точки на окружности?

Добрый день, ребят, признаюсь честно, зря я геометрию в школе прогуливал
помогите пожалуйста
Есть окружность (изначально размер неизвестен)
Есть количество точек(от 2ух до 6, в том числе нечетные)
Задача расположить на окружности точки на равномерном расстоянии друг от друга
https://codesandbox.io/s/t1ry9
Как тут, только тут захаркожено
Не обязательно решение, хотя бы подсказки, как это посчитать
  • Вопрос задан
  • 1407 просмотров
Подписаться 1 Средний 5 комментариев
Ответ пользователя alexalexes К ответам на вопрос (3)
@alexalexes
В вашем примере используется карусель, у которой прописаны стартовое положение:
state = {
    carouselDeg: 17,
    itemDeg: -17,

carouselDeg - поворот элементов основной окружности в градусах. Опытным путем можно понять, что оно задается как:
(360 / кол-во элементов) / 2
Элементов у вас 10, значит, должно быть 18 градусов, а не 17 (можно заметить, что с 17 неровное начальное смещение).
itemDeg - вращение контента внутри одного элемента. Если хотите, чтобы контент всегда был обращен горизонтально, то берете ту же формулу со знаком минус.
Далее, есть такие методы:
next = () => {
    this.getIdItems(true);
    this.setState(state => ({
      carouselDeg: state.carouselDeg - 36,
      itemDeg: state.itemDeg + 36
    }));
  };

  prev = () => {
    this.getIdItems(false);
    this.setState(state => ({
      carouselDeg: state.carouselDeg + 36,
      itemDeg: state.itemDeg - 36
    }));
  };

Число 36 - это шаг вращения, он вычисляется как:
360 / кол-во элементов
В принципе все, что нужно знать для правильной ориентации карусели.
Прорисовкой элементов карусели занимается сама библиотека, позиции элементов на плоскости вам вычислять не нужно.
Ответ написан
Комментировать