CubeIcons

Biblioteca SVG de ícones de twisty puzzles para projetos web

Abrir Icon Builder

Ferramenta visual para criar e configurar ícones

Funções

1 Instalação

Adicione os dois arquivos ao seu projeto e inclua-os no HTML:

<link rel="stylesheet" href="cube-icons.css">
<script src="cube-icons.js"></script>

Nenhuma dependência externa. O script detecta e renderiza automaticamente ao carregar a página.

Também funciona via npm install cube-icons.

2 Puzzles Disponíveis

Use a tag <i> com a classe base ci + o tipo do puzzle + um tamanho:

Cubos NxN (2x2 a 7x7)

ci-2x2
ci-3x3
ci-4x4
ci-5x5
ci-6x6
ci-7x7

Puzzles Especiais

ci-skewb
ci-pyraminx
ci-megaminx
ci-fto
ci-square1
ci-clock
Clique em qualquer card para ver o código HTML.

3 Ângulos de Visão

ci-front — Vista frontal (padrão)

3x3
skewb
fto

ci-iso — Vista isométrica

2x2
3x3
4x4
5x5
skewb

ci-top — Vista de cima

Cubos NxN e Megaminx: face U com bordas laterais. Skewb: face U com centros e cantos adjacentes.

3x3
5x5
skewb
skewb scrambled
megaminx
fto
fto dual
clock (dual)

ci-net — Vista planificada

Cubos NxN: cruz com as 6 faces quadradas. Skewb e Megaminx: faces desdobradas. Pyraminx e Square-1: planificada com ci-net (SQ1: U + barra + D).

2x2
3x3
4x4
skewb
megaminx
pyraminx
square-1

ci-back — Face traseira (Clock)

front
back

4 Modos de Cor

colorful
ci-mono
ci-outlined
fto mono
fto outlined
pyra mono
mega outlined
sq1 mono
clock outlined

Cor Personalizada

Use data-ci-color com ci-mono ou ci-outlined:

mono #e06c75
mono #61afef
fto outlined
pyra #c678dd

Esquemas de Cores

Use data-ci-scheme na vista planificada. Esquemas: wca, japanese, pastel, monokai.

wca
japanese
pastel
monokai

5 Tamanhos

Classes ci-1x a ci-10x, mais ci-15x, ci-20x, ci-30x, ci-40x e ci-50x em unidades em:

1x
2x
3x
4x
5x
6x
7x
8x
9x
10x
15x
20x
30x
40x
50x

6 Stickers Arredondados

Use data-ci-rounded (0 a 0.5). Padrão: 0.15.

0 (reto)
0.15 (padrão)
0.3
0.5 (máximo)

7 Embaralhamento (ci-scrambled)

Estado aleatório a cada carregamento (Square-1: scramble WCA de 10 movimentos via generateSquare1ScrambleAlg()).

3x3 iso
5x5 iso
3x3 top
3x3 net
skewb
skewb net
pyraminx
megaminx
fto
fto dual
square-1 scrambled
clock dual

data-ci-alg — Algoritmos

Aplica movimentos ao estado resolvido. Exemplos representativos por puzzle:

R U R' U' R' F R F'
x y x' y' R U R'
Skewb: y2 R U R' U'
Rw U Rw' U Rw U2 Rw'
R U R' U' B L B' L'
R U R' U L R U' L'
R-- D++ R++ D++ R-- D++ R++ D--
U R F L' D B BL BR'
(3,0) / (0,-3) / (0,3) / (-3,0) / (0,3) / (3,0) / (6,6) / (0,3) /
UR3+ DR6- DL2+ UL1- U4- R0+ D1- L5+ ALL4+

ci-inverse — Algoritmos inversos

Inverte a sequência de data-ci-alg automaticamente. Ex.: R U vira U' R'. Suportado em todos os puzzles com algoritmo, exceto Clock.

3x3: R U => U' R'
2x2: R U F
4x4: Rw U Rw' U2
5x5: R U2 L' F
Skewb: R U B
Pyraminx: U L' R
Megaminx: R-- D++ R++
FTO: U R F L'
Square-1: (3,0) / (0,-3) /
3x3 animate inverso

data-ci-state — Estado manual

Define stickers individualmente. Formato NxN: 6 faces com n×n letras.

estado custom
fto estado

Notação NxN (data-ci-alg)

Movimentos aceitos em data-ci-alg, ci-animate e ci-steps. Use espaço entre movimentos. Aspas: ' ou ' para primo; 2 para metade de giro (180° onde aplicável). A notação dos demais puzzles está na seção de cada um.

TipoSintaxeExemplos
FaceU R L F B D + ' / 2R U R' U', F2
Camada2R, 3U … (nº = camada, 1 = face externa)2R U 2R'
Widew ou minúscula sem prefixo numéricoRw, r, 2Rw
Wide explícito 1ª camada1f = F (não wide)1f, 1u
SlicesM E S + ' / 2M' E
Rotação do cubox y z + ' / 2x y x' y'

Rotações do cubo (x, y, z)

Gira o puzzle inteiro em data-ci-alg. Exemplos em 4x4:

x
x'
y
y'
z
z'
x y
x y z
x y x' y'
3x3: x y x' y' R U R'
ci-inverse inverte a sequência (exceto Clock). Algoritmos inválidos são ignorados silenciosamente.

8 Modo OLL

ci-oll ativa vista top. Nos cubos NxN, FTO e Skewb, adesivos amarelos coloridos e demais em cinza; no Megaminx, face U em amarelo.

3x3 resolvido
3x3: F R U R' U' F'
3x3: R U R' U R U2 R'
megaminx
fto resolvido
fto: U R F L'
fto scrambled
skewb resolvido
skewb: R U R' U'
skewb scrambled
Funções avançadas

9 Visual Enhancements

Face Labels ci-labels

Letras nas faces para identificar cada lado. Ativado pela classe ci-labels. Tamanho via data-ci-label-size (multiplicador, padrão 1).

3x3 iso
3x3 top
3x3 net
3x3 front
Skewb
Pyraminx
Megaminx
FTO
Pequeno (0.5)
Grande (2)

Highlighting data-ci-highlight

Destacar peças específicas. Aceita notação WCA (3x3), sticker refs (U0) ou nomes de face.

UFR corner
U edges
F face
Front corners
U corners
Skewb U face
Pyraminx F
FTO U+R

Arrows / Markers data-ci-arrows

Setas entre stickers. Sintaxe: Face+Index>Face+Index. Estilos: ->, <->, --. Cores: :cor. Tamanho via data-ci-arrow-size (multiplicador, padrão 1).

Diagonais
Iso cross
Bidirecional
Linhas
Cross-face
Pyraminx
Skewb
Combinado
Setas finas (0.5)
Setas grossas (2.5)

10 Step-by-Step Viewer

Container div.ci-steps gera um ícone por move automaticamente.

<div class="ci-steps ci-4x" data-ci-type="3x3" data-ci-angle="iso" data-ci-alg="R U R' U' R' F R F'"></div>

Layout vertical

11 Sequence Player

Classe ci-animate com controles play/pause/step. Velocidade via data-ci-speed.

R U R' U' R' F R F'
R U R' U' B L B' L'
Puzzles

12 Clock

Formato de estado: "front/back/pins". Cada parte tem 9 horas (0-11). Pins: 4 binários.

Notação

TipoSintaxeExemplos
Pino + horasUR3+ DR6- ALL4+UR3+ DR6- ALL4+
Pin sóU R D L UR DR DL UL ALLUR (sobe pino UR)
Virar puzzley2UR3+ y2 UR2-
Multi-pin(UR DR)(UR DR)3+
horas custom
cor front
dual + estado
dual scrambled

Algoritmos Clock

Com data-ci-alg, a visão dual é usada automaticamente.

UR3+ DR6- DL2+ UL1- U4- R0+ D1- L5+ ALL4+
UR3+ DR6- ALL4+ y2 UR2-
U4- R3- D1+ L5+ ALL4- y2 U4+ R3- D5- L1- ALL6+
UR2- DR1+ DL1+ UL1- U4- R0+ D1- L5+ ALL4+ y2 U4+ R3- D5- L1- ALL6+

13 Square-1

Formato: "face_U/face_D". Peças: C (corner=2) ou E (edge=1). Cada face soma 12, total 8C+8E.

Por padrão mostra apenas a face U. Use ci-net para a vista planificada (U + barra central + D).

Notação

TipoSintaxeExemplos
Turno(U,D) em passos de 30°(3,0), (0,-3)
Slice/(3,0) / (0,3) /

Scramble: 10 movimentos gerados por generateSquare1ScrambleAlg().

face U (padrão)
net (U + barra + D)
scrambled
net scrambled

Algoritmos Square-1

Use data-ci-alg com notação WCA. Vista planificada (ci-net) mostra ambas camadas e barra central.

(1,0) / (-1,-1) / (0,1) / (3,0) / (0,-3) / (0,3) / (-3,0) / (0,3) /
(3,3) / (0,3) / (3,3) / (0,3) / (3,0) / (0,-3) / (0,3) / (-3,0) /
(3,0) / (0,-3) / (0,3) / (-3,0) / (0,3) / (3,0) / (6,6) / (0,3) / (3,0) /
(3,0) / (0,-3) / (0,3) / (-3,0) / (0,3) / (3,0) / (6,6) / (0,3) /

14 FTO (Face-Turning Octahedron)

Octaedro com 8 faces triangulares, cada uma subdividida em 9 stickers. Suporta vistas front, top (8 faces), ci-dual (frente + 4 faces opostas) e OLL mode.

Notação

TipoSintaxeExemplos
Face (120°)U R F L D B BL BR + ' / 2U R F L' D B BL BR'
front
top
dual (U R F L + B BL D BR)
dual scrambled
OLL
scrambled
top scrambled
OLL scrambled

Estado: "FACE_U,FACE_R,FACE_F,FACE_L,FACE_D,FACE_B,FACE_BR,FACE_BL" — 9 letras por face.

Algoritmo: data-ci-alg com movimentos U, R, F, L, D, B, BL, BR e primes ('). No FTO, X2 equivale a X'. Modo OLL: ver seção 8.

15 Skewb

Vistas front, iso, top e net.

Notação

TipoSintaxeExemplos
CantoR L U B + 'R U R' U'
Rotação do puzzlex y z + ' / 2y2 R U R' U'

Rotações do puzzle (x, y, z)

x
x'
y
y'
z
z'
x y
x y z
x y x' y'
y2 R U R' U'

Vista Frontal

R U R' U' B L B' L'
R L U B' R' L' U' B
scrambled

Vista Isométrica

R U R' U' B L B' L'
R L U B' R' L' U' B
scrambled

Vista de Cima (Top)

Face U no centro, centros laterais (B, F, L, R) e dois cantos adjacentes em cada vértice.

solved
scrambled
R U R' U' B L B' L'
highlight U

Visão Planificada (Net)

R U R' U' B L B' L'
scrambled

16 Pyraminx

Vistas front, iso e net.

Notação

TipoSintaxeExemplos
Camada (120°)U L R B + 'R U R' U L
Tip (120°)u l r b + 'u l r b, R u R'
R U R' U L R U' L'
L R U' L' R' U B L
scrambled

Tips (u, l, r, b)

Letras minúsculas giram apenas a ponta de 120°. Maiúsculas giram a camada inteira.

u
u'
l
l'
r
r'
b
b'
u l r b
U u R r
R u R' l' B r
tips + camadas
scrambled (com tips)

17 Megaminx

Vistas top e net.

Notação

TipoSintaxeExemplos
PochmannR++ R-- D++ D--R-- D++ R++ D++
Face (72°)U F R BR BL L D DL DR DBR B DBL + ' / 2R F L' BR BL' U
FacesTopo: U F R BR BL L — Base: D DL DR DBR B DBL

Pochmann

R-- D++ R++ D++ R-- D++ R++ D--
R++ D-- R++ D-- R++ D-- R-- D++
scrambled

Notação por Faces

R F L' BR BL' U R' F'
R F L' BR BL' U R' F'
scrambled net

18 Vista 3D

Ângulos via data-ci-rotate="X,Y" (graus). Cada puzzle com sua rotação padrão.

3x3
25,35 — inclinação + rotação Y
skewb
20,40 — faces U, F e R visíveis
pyraminx
20,40 — perspectiva 3D padrão
megaminx
25,50 — face U inclinada
fto
25,50 — face frontal + topo
square-1
25,30 — cubeshape em 3D

Interativo (ci-interactive)

Arraste com mouse ou toque para girar o puzzle.

3x3
25,35 (padrão interativo)
skewb
20,40 (auto)
pyraminx
20,35 (padrão interativo)
megaminx
25,35 (padrão interativo)
fto
20,35 (padrão interativo)
square-1
25,30 (auto)

19 Uso Inline

Ícones se alinham com o texto como FontAwesome:

Eu resolvo o em 20 segundos! Também pratico e . O FTO é meu próximo desafio. Até o clock é divertido!
Eu resolvo o <i class="ci ci-3x3 ci-iso ci-2x"></i> em 20 segundos!
Referência

20 Referência Rápida

Classes CSS

CategoriaClassesDescrição
Puzzleci-2x2 ci-3x3 ci-4x4 ci-5x5 ci-6x6 ci-7x7Cubos NxN
ci-skewb ci-pyraminx ci-megaminx ci-fto ci-square1 ci-clockPuzzles especiais
Ânguloci-front ci-iso ci-top ci-dual ci-net ci-backVista do puzzle
Corci-colorful ci-mono ci-outlinedModo de cor
Tamanhoci-1xci-10x, ci-15x, ci-20x, ci-30x, ci-40x, ci-50xEm unidades em
Estadoci-scrambled ci-oll ci-interactive ci-animate ci-labels ci-inverseModifica estado / interação / visual
Containerci-steps ci-steps-verticalVisualizador passo a passo

Atributos data-*

AtributoDescriçãoExemplo
data-ci-rotateRotação 3D (rotX, rotY em graus)"20,40"
data-ci-algAlgoritmo (notação na seção de cada puzzle)"R U R' U'" "R++ D--" "UR3+" "(3,0) /"
data-ci-stateEstado manual dos stickers"WWW...,RRR..."
data-ci-roundedArredondamento (0–0.5)"0.25"
data-ci-colorCor para mono/outlined"#e06c75"
data-ci-schemeEsquema de cores"japanese" "pastel" "monokai"
data-ci-themeTema (claro/escuro)"light" "dark"
data-ci-clock-frontCor de fundo (clock front)"#1a3a5c"
data-ci-clock-backCor de fundo (clock back)"#5c1a1a"
data-ci-speedVelocidade do player (ci-animate)"600"
data-ci-loopLoop automático no player(boolean)
data-ci-autoplayInicia player automaticamente(boolean)
data-ci-highlightDestacar peças (WCA ou face)"UFR,UF"
data-ci-arrowsSetas entre stickers"U0>U2"
data-ci-label-sizeTamanho das letras (ci-labels)"1.5" "0.5"
data-ci-arrow-sizeTamanho das setas"2" "0.5"

Compatibilidade de Ângulos

Vista 3D via data-ci-rotate ou ci-interactive (arrastar para girar).

PuzzlefrontisotopdualnetbackOLLAlgScramble3D
Cubos NxNsimsimsimsimsimsimsimsim
Skewbsimsimsimsimsimsimsimsim
Pyraminxsimsimsimsimsim
Megaminxsimsimsimsimsimsimsim
FTOsimsimsimsimsimsimsim
Square-1simsimsimsimsim
Clocksimsimsimsimsim

21 API JavaScript

Objeto global CubeIcons exposto após carregar cube-icons.js:

// Renderização
CubeIcons.render({ type: "3x3", angle: "iso", scrambled: true });
CubeIcons.processAll();
CubeIcons.watch();

// Estados iniciais (createState)
CubeIcons.createState.nxn(3);
CubeIcons.createState.skewb();
CubeIcons.createState.pyraminx();
CubeIcons.createState.megaminx();
CubeIcons.createState.fto();
CubeIcons.createState.square1();
CubeIcons.createState.clock();

// Aplicar algoritmos
CubeIcons.applyAlgorithm(state, "R U R' U'", 3);
CubeIcons.applySkewbAlgorithm(state, "R U R' U' B L B' L'");
CubeIcons.applyPyraminxAlgorithm(state, "R u R' U l");
CubeIcons.applyMegaminxAlgorithm(state, "R++ D-- R++ D--");
CubeIcons.applyFTOAlgorithm(state, "U R F L' D B BL BR'");
CubeIcons.applySquare1Algorithm(state, "(3,0) / (0,3) /");
CubeIcons.applyClockAlgorithm(state, "UR3+ DR6- y2");

// Square-1 helpers
CubeIcons.parseSquare1Moves("(3,0) /");
CubeIcons.applySquare1MoveParsed(state, move);
CubeIcons.sq1CanSlash(state);

// Step viewer
CubeIcons.getAlgorithmSteps({ type: "3x3", alg: "R U R' U'" });

// Cores e tema
CubeIcons.COLORS;
CubeIcons.COLOR_SCHEMES;
CubeIcons.setScheme("pastel");
CubeIcons.setTheme("dark");