Processing math: 100%

2 votos

Evitar colores consecutivos similares para un gráfico circular

Antecedentes

Calcular los colores de las cuñas del gráfico circular. Considere:

d(n)=θt×n

Dónde:

  • θ son los grados de un círculo (360)
  • t es el número total de cuñas (puede ser impar), y 0tθ
  • n es el número de la cuña, y un número entero
  • d(n) es el tono calculado asignado a una cuña

Para t=12 y n={1,2,3,...,t} el cálculo en Espacio de color LCH produce:

Pie Chart

Problema

Los colores similares son adyacentes, lo que no es deseable.

Intercambio de colores

Algorítmicamente, las cuñas se pueden intercambiar. Cuando el número de cuñas, n está en paz:

ifnt2, thenn=n+t2; otherwise,n=nt2

Esto podría funcionar, pero me pregunto si hay una forma mejor.

Pregunta

¿Qué cálculo único (utilizando aritmética simple, si es posible) para d(n) ¿Impedirían los colores adyacentes similares?

1voto

marco trevi Puntos 1162

Dado t colores y n en {1,2,...,t} Entonces:

te=t+(1(t%2))na=[(n(t%2))t2%te]+(t%2)d(na)=θt×na

El suelo ( ) y el módulo ( % ) se implementan en la mayoría de los lenguajes de programación:

te = t + (1- (t mod 2))
((n-(t mod 2)) * floor(t / 2) mod te) + (t mod 2)

1voto

Simon Hayter Puntos 145

Si t es impar, entonces el algoritmo obvio es dar un paso alrededor de t puntos uniformemente espaciados en la carta de colores por t12 puntos cada vez, dibujando el mayor número posible de t -grama (el pentagrama (13524), el heptagrama (147362), etc).

En general, se puede tomar el siguiente número entero t2 que es coprima a t para una solución razonablemente buena. No es óptima para los casos especiales t=4 , t=6 para el que ese número entero es 1, cuando las secuencias (1324) y (142536) dan menos pares de colores adyacentes. Así que supongo que hay mayores t donde también se puede hacer mejor, aunque no veo inmediatamente el patrón.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X