Я пытаюсь разработать компонент, который должен выглядеть somewhat like thisСчетные соседние сегменты круга
Я использую RaphaelJS сделать это, и что работает просто отлично. У меня есть массив углов, который я использую для вычисления путей отдельных сегментов. Я храню эти пути в простом массиве, поэтому внутренний круг находится в сегментах [0] и так далее, вращаясь наружу.
Моя проблема в том, что мне нужно, чтобы каждый сегмент знал о смежных сегментах как по часовой стрелке, так и против часовой стрелки, внутрь и наружу, и мне трудно понять, как вычислить их положение - это мой сегментный массив. Так, например, в случае вышеприведенной диаграммы красный сегмент на уровне 2 (где 0 - самый внутренний круг) имеет красный, ярко-зеленый, каки, светло-фиолетовый и темно-фиолетовый соседи.
Возможно, мне нужна другая система координат. Если бы каждый уровень имел одинаковое число и угловое распределение сегментов, это был бы простой случай использования модуля, подобного индексированию кругового массива, но это не так.
Любая помощь будет высоко оценена.
Большое спасибо,
Энтони
Что происходит, когда один сегмент перекрывает два внешних или внутренних сегмента? Или больше? – TheZ
С точки зрения данного сегмента, если более чем один внешний сегмент «накладывает» сегмент, все они считаются смежными с этим исходным сегментом. То же самое для внутренних сегментов. –
Вам придется проходить через соседние внешние и внутренние сегменты и проверить, находятся ли углы обоих концов среза в пределах/равны концам каждого другого сегмента и наоборот. Не «быстрый» процесс, а скорее самый простой. – TheZ