L’Histoire de l’Observatoire
🚀
Mai 2015
Les tous débuts du projet
Les premières idées émergent.
Image : coupole Pulsar de 2,7m
- Première demande d'installation d'une coupole sur l'Université Toulouse III.
- Premières discussions d'une installation sur la Maison des Étudiants et des Personnels (MEP).
Février 2018
Le lancement concret du projet
Relance et structuration.
Image : plan études d'avant-projet définitif (APD)
- Relance du projet et structuration.
- Première présentation du projet pour une commission de l'Université Toulouse III – Paul Sabatier.
- Lancement de l'appel d'offre du bâtiment (septembre 2018).
2019
Une première étape fondamentale
Ouverture aux scolaires, premier permis.
Image : plan dossier de demande de permis de construire (PC)
- Changement du but premier de l'OJBT avec une ouverture aux scolaires.
- Première subvention du projet grâce à la Faculté Sciences et Ingénierie (FSI).
- Première campagne de crowdfunding (été).
- Demande de permis de construire du bâtiment (septembre 2019).
2020
La professionnalisation du projet
Premières grosses subventions.
Image : plan études de projet (PRO)
- Réforme interne de l'association.
- Premières grosses subventions du projet : Région Occitanie, Fondation Catalyses.
- Finalisation du choix des instruments et premiers achats.
- Finalisation des plans de la coupole sur la MEP.
- Définition de la gestion de l'observatoire.
2021
Les premiers achats d'instrumentation
Choix du nom de l'observatoire.
Image : plan dossier de consultation des entreprises (DCE)
- Première subvention directe de l'UT3.
- Acquisition des instruments secondaires.
- Premiers tests du matériel.
- Seconde campagne de crowdfunding (octobre-novembre).
- Choix du nom de l'observatoire – Observatoire Jocelyn Bell de Toulouse.
2022
Les premières phases opérationnelles
Premières formations et projets.
Image : Maison des Étudiants et des Personnels (septembre)
- Premières formations.
- Premiers projets en lien avec l'OJBT.
- Choix des noms des instruments.
2024–2026
L'observatoire se met en route
Commissioning et portes ouvertes.
Image actuelle de l'instrumentation avec câblage définitif
- Phase de commissioning, de tests et amélioration.
- Inauguration de l'observatoire avec nos partenaires.
- Portes ouvertes en présence de Jocelyn Bell.
2025
Concrétisation de notre rêve
Arrivée et inauguration de l'observatoire.
Image : vue d'artiste de l'observatoire
- Réception du télescope principal.
- Installation de la coupole et de toute l'instrumentation (mars).
- Tests de l'OJBT.
- Inauguration de l'OJBT.
Janvier 2027
L'observatoire est prêt à vous accueillir
Ouverture au public.
Vue aérienne de l'OJBT
- Ouverture de l'OJBT au public (1er janvier).
.upsis-vtl-wrap {
background: #1a1632;
padding: 50px 30px 60px;
font-family: 'Josefin Sans', sans-serif;
position: relative;
overflow: hidden;
}
.upsis-vtl-stars {
position: absolute;
inset: 0;
pointer-events: none;
}
.upsis-vtl-stars span {
position: absolute;
width: 3px;
height: 3px;
border-radius: 50%;
background: #ffffff;
opacity: 0.5;
animation: upsis-twinkle 3s ease-in-out infinite;
}
@keyframes upsis-twinkle {
0%, 100% { opacity: 0.15; transform: scale(1); }
50% { opacity: 0.85; transform: scale(1.4); }
}
.upsis-vtl-track {
position: relative;
max-width: 640px;
margin: 0 auto;
}
.upsis-vtl-svg {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
overflow: visible;
pointer-events: none;
z-index: 1;
}
.upsis-vtl-path {
fill: none;
stroke: url(#upsis-grad);
stroke-width: 2;
}
.upsis-vtl-rocket {
position: absolute;
left: 0;
top: 0;
font-size: 20px;
transform: translate(-50%, -50%);
transition: left 0.15s ease-out, top 0.15s ease-out;
z-index: 3;
filter: drop-shadow(0 0 4px rgba(255,255,255,0.5));
}
.upsis-vtl-item {
display: flex;
align-items: flex-start;
gap: 20px;
position: relative;
z-index: 2;
margin-bottom: 64px;
opacity: 0;
transform: translateY(16px);
transition: opacity 0.6s ease, transform 0.6s ease;
}
.upsis-vtl-item.is-visible {
opacity: 1;
transform: translateY(0);
}
.upsis-vtl-item:last-child {
margin-bottom: 0;
}
.upsis-vtl-item:nth-child(odd) {
justify-content: flex-start;
}
.upsis-vtl-item:nth-child(even) {
justify-content: flex-end;
flex-direction: row-reverse;
}
.upsis-vtl-marker {
flex-shrink: 0;
width: 28px;
}
.upsis-vtl-item:nth-child(even) .upsis-vtl-content {
text-align: right;
}
.upsis-vtl-item:nth-child(even) .upsis-vtl-detail {
text-align: left;
}
.upsis-vtl-content {
max-width: 68%;
padding-top: 2px;
transition: transform 0.25s ease;
}
.upsis-vtl-item:nth-child(odd):hover .upsis-vtl-content { transform: translateX(4px); }
.upsis-vtl-item:nth-child(even):hover .upsis-vtl-content { transform: translateX(-4px); }
.upsis-vtl-dot {
width: 28px;
height: 28px;
border-radius: 50%;
background: #1a1632;
border: 2px solid #ffffff;
color: #ffffff;
font-size: 16px;
line-height: 1;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
position: relative;
z-index: 2;
transition: background 0.2s ease, transform 0.25s ease, box-shadow 0.25s ease;
padding: 0;
}
.upsis-vtl-dot::after {
content: "";
position: absolute;
inset: -6px;
border-radius: 50%;
border: 1px solid #ffffff;
opacity: 0;
transform: scale(0.8);
transition: opacity 0.3s ease, transform 0.3s ease;
}
.upsis-vtl-dot:hover {
background: #ffffff;
color: #1a1632;
transform: scale(1.15) rotate(-8deg);
}
.upsis-vtl-dot:hover::after {
opacity: 0.5;
transform: scale(1);
}
.upsis-vtl-dot[aria-expanded="true"] {
background: #ffffff;
color: #1a1632;
transform: rotate(45deg);
}
.upsis-vtl-spark {
position: absolute;
width: 4px;
height: 4px;
border-radius: 50%;
background: #ffffff;
left: 14px;
top: 14px;
pointer-events: none;
animation: upsis-spark-fly 0.6s ease-out forwards;
}
@keyframes upsis-spark-fly {
to {
transform: translate(var(--sx), var(--sy)) scale(0);
opacity: 0;
}
}
.upsis-vtl-year {
display: block;
font-size: 18px;
font-weight: 600;
letter-spacing: 0.02em;
margin-bottom: 2px;
}
.upsis-vtl-item:nth-child(3n+1) .upsis-vtl-year { color: #aea7ec; }
.upsis-vtl-item:nth-child(3n+2) .upsis-vtl-year { color: #5dcaa5; }
.upsis-vtl-item:nth-child(3n+3) .upsis-vtl-year { color: #f0997b; }
.upsis-vtl-wrap .upsis-vtl-title {
color: #ffffff !important;
font-size: 16px;
font-weight: 600;
margin: 0 0 6px;
line-height: 1.3;
}
.upsis-vtl-summary {
color: #cfceea;
font-size: 14px;
margin: 0;
line-height: 1.5;
}
.upsis-vtl-detail {
max-height: 0;
overflow: hidden;
transition: max-height 0.4s ease, margin-top 0.3s ease;
margin-top: 0;
}
.upsis-vtl-image-note {
color: #9d9bc4;
font-size: 12px;
font-style: italic;
margin: 0 0 8px;
padding-top: 10px;
border-top: 1px solid #3a3556;
}
.upsis-vtl-detail ul {
margin: 0;
padding: 0 0 0 16px;
list-style: disc;
}
.upsis-vtl-item:nth-child(even) .upsis-vtl-detail ul {
padding: 0 16px 0 0;
}
.upsis-vtl-detail li {
color: #cfceea;
font-size: 13px;
line-height: 1.6;
margin-bottom: 4px;
}
.upsis-vtl-item.is-open .upsis-vtl-detail {
max-height: 420px;
margin-top: 10px;
}
@media (max-width: 600px) {
.upsis-vtl-item:nth-child(even) {
flex-direction: row;
justify-content: flex-start;
}
.upsis-vtl-item:nth-child(even) .upsis-vtl-content,
.upsis-vtl-item:nth-child(even) .upsis-vtl-detail ul {
text-align: left;
padding: 0 0 0 16px;
}
.upsis-vtl-content { max-width: 80%; }
}
(function() {
var starsWrap = document.querySelector('.upsis-vtl-stars');
if (starsWrap) {
for (var i = 0; i < 40; i++) {
var s = document.createElement('span');
s.style.left = Math.random() * 100 + '%';
s.style.top = Math.random() * 100 + '%';
s.style.animationDelay = (Math.random() * 3) + 's';
starsWrap.appendChild(s);
}
}
var dots = document.querySelectorAll('.upsis-vtl-dot');
dots.forEach(function(dot) {
dot.addEventListener('click', function() {
var item = dot.closest('.upsis-vtl-item');
var isOpen = item.classList.contains('is-open');
item.classList.toggle('is-open');
dot.setAttribute('aria-expanded', !isOpen);
dot.textContent = isOpen ? '+' : '\u2212';
if (!isOpen) {
var marker = dot.closest('.upsis-vtl-marker');
for (var i = 0; i < 8; i++) {
var spark = document.createElement('span');
spark.className = 'upsis-vtl-spark';
var angle = (Math.PI * 2 * i) / 8;
var dist = 22 + Math.random() * 10;
spark.style.setProperty('--sx', Math.cos(angle) * dist + 'px');
spark.style.setProperty('--sy', Math.sin(angle) * dist + 'px');
marker.appendChild(spark);
(function(s) { setTimeout(function() { s.remove(); }, 650); })(spark);
}
}
setTimeout(buildPath, 420);
});
});
var items = document.querySelectorAll('.upsis-vtl-item');
if ('IntersectionObserver' in window) {
var observer = new IntersectionObserver(function(entries) {
entries.forEach(function(entry) {
if (entry.isIntersecting) entry.target.classList.add('is-visible');
});
}, { threshold: 0.2 });
items.forEach(function(item) { observer.observe(item); });
} else {
items.forEach(function(item) { item.classList.add('is-visible'); });
}
var track = document.querySelector('.upsis-vtl-track');
var svg = document.querySelector('.upsis-vtl-svg');
var path = document.querySelector('.upsis-vtl-path');
var rocket = document.querySelector('.upsis-vtl-rocket');
var markers = document.querySelectorAll('.upsis-vtl-marker');
if (svg && !document.getElementById('upsis-grad')) {
var defs = document.createElementNS('http://www.w3.org/2000/svg', 'defs');
defs.innerHTML = '' +
'' +
'' +
'' +
'' +
'';
svg.appendChild(defs);
}
function getPoints() {
var trackRect = track.getBoundingClientRect();
var pts = [];
markers.forEach(function(m) {
var dot = m.querySelector('.upsis-vtl-dot');
var r = dot.getBoundingClientRect();
pts.push({
x: r.left + r.width / 2 - trackRect.left,
y: r.top + r.height / 2 - trackRect.top
});
});
return pts;
}
function buildPath() {
if (!track || !svg || !path) return;
track.style.height = '';
var fullHeight = track.scrollHeight;
svg.style.height = fullHeight + 'px';
var pts = getPoints();
if (pts.length < 2) return;
var d = 'M ' + pts[0].x + ' ' + pts[0].y;
for (var i = 1; i < pts.length; i++) {
var p0 = pts[i - 1], p1 = pts[i];
var midY = (p0.y + p1.y) / 2;
d += ' C ' + p0.x + ' ' + midY + ', ' + p1.x + ' ' + midY + ', ' + p1.x + ' ' + p1.y;
}
path.setAttribute('d', d);
updateRocket();
}
function updateRocket() {
if (!path || !rocket) return;
var len = path.getTotalLength();
if (!len) return;
var trackRect = track.getBoundingClientRect();
var viewportCenter = window.innerHeight / 2;
var progress = (viewportCenter - trackRect.top) / trackRect.height;
progress = Math.max(0, Math.min(1, progress));
var pt = path.getPointAtLength(progress * len);
rocket.style.left = pt.x + 'px';
rocket.style.top = pt.y + 'px';
}
window.addEventListener('scroll', updateRocket, { passive: true });
window.addEventListener('resize', buildPath);
window.addEventListener('load', buildPath);
setTimeout(buildPath, 100);
setTimeout(buildPath, 600);
})();