← Back to Home
About the Author

Guilherme Almeida Zeni

Senior software engineer with 10+ years of experience. Currently pursuing a second Master's degree in Applied Mathematics at IMECC, Universidade Estadual de Campinas (Unicamp), Brazil.

Previous academic work includes research on the Traveling Salesman Problem applied to postal routing and Vehicle Routing Problems for large-scale urban delivery, including a book chapter in the Elsevier volume Smart Delivery Systems (2020).

g146284@dac.unicamp.br
🏛 IMECC / Unicamp
github.com/Guillhermm/multidimensional-ideological-model
About the Model

The Multidimensional Ideological Model treats political ideologies as vectors in a continuous 3D unit sphere, with each axis capturing an independent dimension of political thought.

Unlike quiz-based tools, this model introduces temporal dynamics: historical events act as gravitational forces, pulling ideologies through the space over time. Ideologies attract and repel each other via a relational interaction term.

The model is grounded in academic literature on sociophysics, multidimensional ideology mapping, and spatial models of political competition.

Development History

Project Timeline

February 2026
Foundation

Initial Concept

Project conceived as a 3D extension of the 2D political compass. HTML5 Canvas chosen for zero-dependency, cross-platform rendering. First commit: base HTML/CSS structure and canvas helper scripts.

February 2026
RenderingMath

Core 3D Engine

Implemented full 3D rendering pipeline: Euler rotation (Y then X axes), perspective projection, and Phong-inspired lighting with ambient and diffuse components. Sphere rendered as 2,500 random surface points with RGB-from-coordinate color mapping.

February 2026
DataSimulation

Ideological Data & Historical Trails

20 political ideologies hand-positioned in 3D space with historical start years. Trail system added to visualize ideological drift — each ideology stores its last 80 positions, rendered as white path lines.

February 2026
PhysicsSimulation

Historical Gravity Physics

Major historical events (1789, 1917, 1933, 1945, 1989, 2008) modeled as gravitational forces in ideological space. Linear temporal decay within 60-year windows. Inter-ideology interaction term added using dot-product attraction/repulsion.

February 2026
AlgorithmUX

K-Means Clustering & User Position

Implemented spherical K-means (k=3) using angular/cosine distance. Active ideologies are clustered in real time, revealing dominant groupings. User self-placement added via X/Y/Z sliders with radicality metric and nearest-ideology detection.

February 2026
UXArchitecture

Full Navigation & Script Modularization

Added zoom (scroll + +/− keys), full keyboard rotation (arrow keys), PNG export. Codebase split into 9 specialized modules: core, data, projection, interaction, physics, clustering, rendering, time, main.

February 2026
ResearchDocumentation

Academic Documentation

Formal mathematical documentation published: ideology vectors, base positions, historical force equations with Σ notation, clustering centroid formulas, perspective projection derivation, and an end-to-end numerical example (Fascism, 1935).

March 2026
TestingDevOps

Testing, CI/CD & Instability Metric

44 unit tests across 4 modules (clustering, projection, physics, data) using Jest. System instability metric added — average velocity of active ideologies per frame. GitHub Actions pipeline: tests on every PR, deploy to GitHub Pages on main.

March 2026 Current
LaunchUX

Public Launch: Astro, Quiz & About Page

Full migration to Astro 5 + Tailwind CSS v4. Home page with model explanation, 15-question ideological positioning quiz (Likert scale, 3 axes), mobile touch support, URL params for quiz-to-tool handoff, and this About page.

Mathematics

Core Formalism

Ideology Vector
v_i = (x_i, y_i, z_i) ∈ [−1,1]³
Each ideology is a point in a 3D unit cube, constrained to unit sphere.
Historical Force
f_e(t) = s_e · g · (1 − |t−t_e| / T)
Events pull ideologies within a 60-year temporal window, scaled by gravity g.
Ideology Update
v_i(t) = v_i_base + Σ f_e(t) · (h_e − v_i_base)
Position shifts toward event coordinates, proportional to influence.
Radicality
r_u = ||v_u|| = √(x² + y² + z²)
Distance from origin — zero is centrist, one is maximally radical.
Clustering
C_j = normalize(Σ v_i ∈ G_j / |G_j|)
Spherical K-means with angular (cosine) distance, k=3 clusters.
Projection
scale = r · zoom / (2 − z_rot)
Perspective projection with Euler rotation (Y→X axes), Phong lighting.

Full formal documentation available in docs/ACADEMICAL_DOCUMENTATION.md and docs/TECHNICAL_DOCUMENTATION.md.

Literature

Academic References

[1] American Politics in 3D — Applied Network Science (2023) [2] Charting Multidimensional Ideological Polarization — Nature Human Behaviour (2025) [3] Nonlinear Feedback Dynamics of Political Polarization — PNAS (2021) [4] Multidimensional Political Polarization in Online Social Networks — arXiv (2023) [5] Political Science Meets Physical Science — PNAS Nexus (2023) [6] Navigating Multidimensional Ideologies with Reddit's Political Compass — arXiv (2024)