Documentación técnica

Motores de cálculo

Especificaciones fórmulas y ejemplos de código de los tres motores que impulsan Molino. Código abierto, auditable, sin cajas negras.

Motor de Numerología

Calcula Camino de Vida, Expresión, Alma, Personalidad, Día de Nacimiento y Ciclos de vida basados en la fecha y el nombre completo.

FórmulaDescripciónEjemplo
Camino de Vida (Life Path)Suma reductiva de DD + MM + AAAA → dígito 1-9 (11, 22, 33 como maestros)15/03/1990 → 1+5+0+3+1+9+9+0 = 28 → 2+8 = 10 → 1+0 = 1
Expresión (Destiny)Suma de valores pitagóricos de cada letra del nombre completo → reducido a 1-9JUAN PEREZ → J(1)+U(3)+A(1)+N(5) + P(7)+E(5)+R(9)+E(5)+Z(8) = 44 → 4+4 = 8
Alma (Soul Urge)Suma solo de vocales del nombre completoJUAN PEREZ → U(3)+A(1)+E(5)+E(5) = 14 → 1+4 = 5
PersonalidadSuma solo de consonantes del nombre completoJUAN PEREZ → J(1)+N(5)+P(7)+R(9)+Z(8) = 30 → 3+0 = 3
Día de NacimientoDía del mes reducido (1-31 → 1-9)15 → 1+5 = 6
Ciclos de Vida (Pinnacles/Challenges)Basados en fecha de nacimiento: 4 ciclos de ~27-28 años cada unoCiclo 1: 0-27 años, Ciclo 2: 28-55, Ciclo 3: 56-83, Ciclo 4: 84+
TypeScript — Implementación de referencia
// Cálculo Camino de Vida (simplificado)
function lifePath(day: number, month: number, year: number): number {
  const sum = digits(day) + digits(month) + digits(year);
  return reduceToMaster(sum); // 1-9, 11, 22, 33
}

// Valores pitagóricos A=1, B=2... I=9, J=1...
const PYTHAGOREAN: Record<string, number> = {
  A:1, J:1, S:1, B:2, K:2, T:2, C:3, L:3, U:3,
  D:4, M:4, V:4, E:5, N:5, W:5, F:6, O:6, X:6,
  G:7, P:7, Y:7, H:8, Q:8, Z:8, I:9, R:9
};

Motor de Astrología Tropical

Calcula signo solar, lunar, ascendente, casas, aspectos y posiciones planetarias usando efemérides suizas (Swiss Ephemeris) para precisión astronómica.

FórmulaDescripciónEjemplo
Signo SolarPosición geocéntrica del Sol en el zodíaco tropical al momento exacto de nacimientoSol a 23°15' Aries → Signo: Aries, Grado: 23°15'
Signo LunarPosición geocéntrica de la Luna (rápida: ~13°/día, requiere hora exacta)Luna a 12°40' Cáncer → Signo: Cáncer
Ascendente (ASC)Punto del eclíptico que surge en el horizonte este al nacer (depende de lat/lon/hora)ASC a 5°30' Libra → Casa 1 en Libra
Casas (Placidus)División temporal del espacio local en 12 casas desigualesCasa 10 (MC) a 5°30' Capricornio
Aspectos mayoresÁngulos entre planetas: Conjunción(0°), Oposición(180°), Cuadratura(90°), Trígono(120°), Sextil(60°)Sol 23° Aries □ Luna 12° Cáncer (orbe ~8°)
Elementos / ModalidadesConteo de planetas en Fuego/Tierra/Aire/Agua y Cardinal/Fijo/MutableFuego: 4, Tierra: 2, Aire: 3, Agua: 1 → Dominante: Fuego
TypeScript — Implementación de referencia
// Cálculo signo solar (aprox., sin efemérides)
function sunSign(day: number, month: number): string {
  const boundaries = [
    [20, 1, "Acuario"], [19, 2, "Piscis"], [21, 3, "Aries"],
    [20, 4, "Tauro"], [21, 5, "Géminis"], [21, 6, "Cáncer"],
    [23, 7, "Leo"], [23, 8, "Virgo"], [23, 9, "Libra"],
    [23, 10, "Escorpio"], [22, 11, "Sagitario"], [22, 12, "Capricornio"]
  ];
  for (const [d, m, sign] of boundaries) {
    if (month === m && day <= d) return sign;
  }
  return "Capricornio";
}

// Para precisión real: Swiss Ephemeris (sweph)
// swe_calc_ut(jd, SE_SUN, SEFLG_SPEED, &pos, &ret);
// signo = Math.floor(pos[0] / 30);

Motor de Zodíaco Chino

Determina animal del año, elemento, pilares (Año, Mes, Día, Hora) y ciclo sexagenario (60 combinaciones) usando calendario lunisolar chino.

FórmulaDescripciónEjemplo
Animal del Año(Año - 4) % 12 → índice 0-11: Rata, Buey, Tigre, Conejo, Dragón, Serpiente, Caballo, Cabra, Mono, Gallo, Perro, Cerdo1990 → (1990-4)%12 = 6 → Caballo
Elemento del AñoPiso((Año - 4) % 10 / 2) → 0:Madera, 1:Fuego, 2:Tierra, 3:Metal, 4:Agua1990 → (1986%10)/2 = 3 → Metal → Caballo de Metal
Ciclo Sexagenario (Ganzhi)Combinación de 10 Troncos Celestiales × 12 Ramas Terrestres = 60 pares únicos1990 = Geng Wu (Metal Caballo) - año 27 del ciclo
Pilar del MesBasado en mes solar chino (Jieqi) + año; usa tablas de correspondenciaMarzo 1990 → Pilar Mes: Ji Mao (Tierra Conejo)
Pilar del DíaCuenta días desde época base (ej. 1900-01-01 = Jia Zi) módulo 6015/03/1990 → Día #32874 → 32874%60 = 54 → Ding Hai
Pilar de la HoraCada hora china = 2h occidental; 12 horas × 5 elementos = ciclo 6014:30 → Hora Wei (13-15h) → Pilar Hora según día
TypeScript — Implementación de referencia
// Animal y Elemento del Año
const ANIMALES = [
  "Rata", "Buey", "Tigre", "Conejo", "Dragón", "Serpiente",
  "Caballo", "Cabra", "Mono", "Gallo", "Perro", "Cerdo"
];

const ELEMENTOS = ["Madera", "Fuego", "Tierra", "Metal", "Agua"];

function chineseYearInfo(year: number) {
  const offset = year - 4; // 1984 = Jia Zi (Madera Rata) = inicio ciclo 60
  const animalIdx = ((offset % 12) + 12) % 12;
  const elementIdx = Math.floor((((offset % 10) + 10) % 10) / 2);
  return {
    animal: ANIMALES[animalIdx],
    elemento: ELEMENTOS[elementIdx],
    ganzhiIndex: ((offset % 60) + 60) % 60 // 0-59
  };
}

// Para pilares exactos: requiere conversión fecha gregoriana → calendario chino
// Librería recomendada: chinese-calendar o implementación propia de Jieqi

Todas las fórmulas son implementaciones de referencia. Los motores de producción usanSwiss Ephemeris para posiciones planetarias de precisión astronómica y bibliotecas validadas para conversión de calendario chino.