Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html><html lang="ru"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><title>Матрица Войн</title><style>body{margin:0;overflow:hidden;background:#0d1117;font-family:sans-serif;color:#c9d1d9;user-select:none;touch-action:none}#c{display:block}.p{position:absolute;top:15px;left:15px;background:rgba(22,27,34,.93);padding:12px;border-radius:6px;border:1px solid #30363d;pointer-events:none;max-width:320px;font-size:11px;line-height:1.4}h1{font-size:13px;margin:0 0 5px;color:#58a6ff;text-transform:uppercase;letter-spacing:.5px}b{color:#f4c430}i{color:#ff7b72}span{color:#00f2fe}em{color:#ff3333}</style></head><body><div class="p"><h1>Смысл Матрицы v12.1</h1>• <b>Золотой Корень (862 г.)</b> избирателен. Он активирует связи в моменты: <i>«Быть Руси или не быть»</i>.<br>• <em>Алый узел</em> — текущий незавершенный конфликт.<br>• <span>Бирюзовые линии</span> — календарный резонанс точных дат (вспыхивают при тапе).</div><canvas id="c"></canvas><script>
- const canvas=document.getElementById('c'),ctx=canvas.getContext('2d');function res(){canvas.width=window.innerWidth;canvas.height=window.innerHeight}window.addEventListener('resize',res);res();
- let ox=canvas.width/2,oy=canvas.height/2+60,zm=.7,isDrag=false,sx,sy,hover=null,distS=0,zmS=1;
- // === [НАЧАЛО БЛОКА ДАННЫХ] ===
- N=[
- {i:'root',l:'КОРЕНЬ РУСИ',x:0,y:-500,t:'r',d:'21 сентября 862 г.'},
- {i:'led',l:'Ледовое побоище',x:-120,y:-380,t:'w',d:'5 апреля 1242 г.'},
- {i:'led_d',l:'6ч / 1242',x:-120,y:-320,t:'d',d:''},
- {i:'kul',l:'Куликовская битва',x:120,y:-380,t:'w',d:'8 сентября 1380 г.'},
- {i:'kul_d',l:'1д 4ч / 1380',x:120,y:-310,t:'d',d:''},
- {i:'smu',l:'Смутное время',x:-280,y:-320,t:'w',d:'26 октября 1612 г.'},
- {i:'smu_d',l:'16 и 12',x:-280,y:-250,t:'d',d:''},
- {i:'pol',l:'Полтавская битва',x:280,y:-320,t:'w',d:'27 июня 1709 г.'},
- {i:'pol_d',l:'9ч / 1709',x:280,y:-250,t:'d',d:''},
- {i:'vov',l:'ВОВ (СССР)',x:0,y:-180,t:'w',d:'22 июня 1941 г.'},
- {i:'vov_d',l:'1418 дней',x:0,y:-110,t:'d',d:''},
- {i:'y1914',l:'1914 год',x:-100,y:-40,t:'p',d:''},
- {i:'y1918',l:'1918 год',x:100,y:-40,t:'p',d:''},
- {i:'pmv',l:'ПМВ (для РФ)',x:-180,y:20,t:'w',d:'1 августа 1914 г.'},
- {i:'pmv_d',l:'1312 дней',x:-180,y:90,t:'d',d:''},
- {i:'y1813',l:'1813 год',x:-280,y:150,t:'p',d:''},
- {i:'y1812',l:'1812 год',x:-100,y:150,t:'p',d:''},
- {i:'nap',l:'Наполеон',x:-20,y:210,t:'w',d:'24 июня 1812 г.'},
- {i:'nap_d',l:'645 дней',x:80,y:210,t:'d',d:''},
- {i:'y1756',l:'1756 год',x:180,y:150,t:'p',d:''},
- {i:'y1945',l:'1945 год',x:180,y:-130,t:'p',d:''},
- {i:'ch1',l:'1-я Чеченская',x:280,y:10,t:'w',d:'11 декабря 1994 г.'},
- {i:'ch1_d',l:'630 дней',x:280,y:80,t:'d',d:''},
- {i:'y2030',l:'2030 ГОД',x:360,y:60,t:'f',d:'7 августа 2030 г.'},
- {i:'ch2',l:'2-я Чеченская',x:-20,y:300,t:'w',d:'7 августа 1999 г.'},
- {i:'ch2_d',l:'3541 день',x:-20,y:370,t:'d',d:''},
- {i:'y2035',l:'2035 ГОД',x:200,y:410,t:'f',d:'16 апреля 2035 г.'},
- {i:'y1941',l:'1941 год',x:-140,y:370,t:'p',d:''},
- {i:'afg',l:'Афганская',x:-350,y:-90,t:'w',d:'25 декабря 1979 г.'},
- {i:'afg_d',l:'2238 дней',x:-350,y:-10,t:'d',d:''},
- {i:'y1922',l:'1922 год',x:-460,y:60,t:'p',d:''},
- {i:'y1938',l:'1938 год',x:-460,y:-20,t:'p',d:''},
- {i:'kry',l:'Крымская',x:350,y:-160,t:'w',d:'16 октября 1853 г.'},
- {i:'kry_d',l:'896 дней',x:350,y:-80,t:'d',d:''},
- {i:'y1996',l:'1996 год',x:460,y:-20,t:'p',d:''},
- {i:'y1808',l:'1808 год',x:460,y:-120,t:'p',d:''},
- {i:'jap',l:'Русско-япон.',x:-250,y:250,t:'w',d:'9 февраля 1904 г.'},
- {i:'jap_d',l:'578 дней',x:-250,y:320,t:'d',d:''},
- {i:'y1978',l:'1978 год',x:-360,y:390,t:'p',d:''},
- {i:'y1905',l:'1905 год',x:-360,y:310,t:'p',d:''},
- {i:'y1999',l:'1999 год',x:460,y:160,t:'p',d:''},
- {i:'y1904',l:'1904 год',x:-460,y:210,t:'p',d:''},
- {i:'y1980',l:'1980 год',x:-460,y:-160,t:'p',d:''},
- {i:'y1942',l:'1942 год',x:-140,y:-250,t:'p',d:''},
- {i:'y1916',l:'1916 год',x:-380,y:-230,t:'p',d:''},
- {i:'y1917',l:'1917 год',x:380,y:-230,t:'p',d:''},
- {i:'y2009',l:'2009 год',x:380,y:250,t:'p',d:''},
- {i:'sev',l:'Северная война',x:-520,y:-220,t:'w',d:'19 августа 1700 г.'},
- {i:'sev_d',l:'8020 дней',x:-520,y:-140,t:'d',d:''},
- {i:'y2020',l:'2020 год',x:-640,y:-140,t:'p',d:''},
- {i:'liv',l:'Ливонская война',x:520,y:-220,t:'w',d:'17 января 1558 г.'},
- {i:'liv_d',l:'9307 дней',x:520,y:-140,t:'d',d:''},
- {i:'y1993',l:'1993 год',x:640,y:-140,t:'p',d:''},
- {i:'y2007',l:'2007 год',x:640,y:-60,t:'p',d:''},
- {i:'kav',l:'Кавказская война',x:520,y:330,t:'w',d:'1817-1864 гг.'},
- {i:'kav_d',l:'17930 дней',x:520,y:400,t:'d',d:''},
- {i:'y1939',l:'1939 год',x:0,y:20,t:'p',d:''},
- {i:'rtw',l:'Кризис 1739',x:120,y:20,t:'w',d:''},
- {i:'y1962',l:'1962 год',x:-180,y:-500,t:'p',d:''},
- {i:'y1986',l:'1986 год',x:180,y:-500,t:'p',d:''},
- {i:'ukr',l:'УКРАИНА',x:-360,y:180,t:'a',d:'Начало: 24.02.2022. Конфликт идёт'}
- ];
- L=[
- {f:'root',t:'y1962',l:'62'},{f:'root',t:'y1986',l:'86'},{f:'root',t:'y1980',l:'80'},{f:'root',t:'y2020',l:'20'},{f:'root',t:'smu',l:'16'},
- {f:'led',t:'led_d'},{f:'led_d',t:'y1756',l:'06'},{f:'led_d',t:'y1999',l:'99'},{f:'led_d',t:'y1812',l:'12'},{f:'led_d',t:'y1942',l:'42'},
- {f:'kul',t:'kul_d'},{f:'kul_d',t:'y1904',l:'04'},{f:'kul_d',t:'y1812',l:'12'},{f:'kul_d',t:'y1914',l:'14'},{f:'kul_d',t:'y1813',l:'13'},{f:'kul_d',t:'y1980',l:'80'},
- {f:'smu',t:'smu_d'},{f:'smu_d',t:'y1812',l:'12'},{f:'smu_d',t:'y1916',l:'16'},{f:'smu_d',t:'y1914',l:'14'},
- {f:'pol',t:'pol_d'},{f:'pol_d',t:'y1917',l:'17'},{f:'pol_d',t:'y2009',l:'09'},
- {f:'vov',t:'vov_d'},{f:'vov_d',t:'y1914',l:'14'},{f:'vov_d',t:'y1918',l:'18'},{f:'y1914',t:'pmv'},{f:'pmv',t:'pmv_d'},
- {f:'pmv_d',t:'y1813',l:'13'},{f:'pmv_d',t:'y1812',l:'12'},{f:'y1812',t:'nap'},{f:'nap',t:'nap_d'},{f:'nap_d',t:'y1756',l:'06'},
- {f:'nap_d',t:'y1945',l:'45'},{f:'y1945',t:'vov'},{f:'ch1',t:'ch1_d'},{f:'ch1_d',t:'y1756',l:'06'},{f:'ch1_d',t:'y2030',l:'30'},
- {f:'ch2',t:'ch2_d'},{f:'ch2_d',t:'y1941',l:'41'},{f:'ch2_d',t:'y2035',l:'35'},{f:'ch2_d',t:'y2009',l:'09'},{f:'y1999',t:'ch2'},
- {f:'afg',t:'afg_d'},{f:'afg_d',t:'y1922',l:'22'},{f:'afg_d',t:'y1938',l:'38'},
- {f:'kry',t:'kry_d'},{f:'kry_d',t:'y1996',l:'96'},{f:'kry_d',t:'y1808',l:'08'},
- {f:'jap',t:'jap_d'},{f:'jap_d',t:'y1978',l:'78'},{f:'jap_d',t:'y1905',l:'05'},{f:'y2030',t:'y2035',l:'ЦИКЛ'},
- {f:'sev',t:'sev_d'},{f:'sev_d',t:'y1980',l:'80'},{f:'sev_d',t:'y2020',l:'20'},
- {f:'liv',t:'liv_d'},{f:'liv_d',t:'y1993',l:'93'},{f:'liv_d',t:'y2007',l:'07'},
- {f:'kav',t:'kav_d'},{f:'kav_d',t:'y1917',l:'17'},{f:'kav_d',t:'y1993',l:'93'},{f:'kav_d',t:'y2030',l:'30'},
- {f:'kav_d',t:'rtw',l:'1739'},{f:'rtw',t:'y1939',l:'39'},{f:'rtw',t:'y1917',l:'17'},{f:'y1939',t:'vov'},
- {f:'nap',t:'vov',l:'ИЮНЬ',c:1},{f:'pmv',t:'ch2',l:'АВГ',c:1},{f:'pmv',t:'y2030',l:'АВГ',c:1},
- {f:'root',t:'kul',l:'СЕН',c:1},{f:'root',t:'smu',l:'ОСЕНЬ',c:1},{f:'kry',t:'smu',l:'ОКТ',c:1},
- {f:'ukr',t:'y2020',l:'20'},{f:'ukr',t:'y1922',l:'22'},{f:'ukr',t:'nap',l:'24-е число',c:1}
- ];
- // === [КОНЕЦ БЛОКА ДАННЫХ] ===
- function draw(){
- ctx.clearRect(0,0,canvas.width,canvas.height);ctx.strokeStyle='#161b22';ctx.lineWidth=1;let gS=50*zm;
- for(let x=ox%gS;x<canvas.width;x+=gS){ctx.beginPath();ctx.moveTo(x,0);ctx.lineTo(x,canvas.height);ctx.stroke()}
- for(let y=oy%gS;y<canvas.height;y+=gS){ctx.beginPath();ctx.moveTo(0,y);ctx.lineTo(canvas.width,y);ctx.stroke()}
- L.forEach(l=>{const f=N.find(n=>n.i===l.f),t=N.find(n=>n.i===l.t);if(!f||!t)return;
- let h=hover&&(hover.i===l.f||hover.i===l.t);if(l.c&&!h)return;const x1=f.x*zm+ox,y1=f.y*zm+oy,x2=t.x*zm+ox,y2=t.y*zm+oy;ctx.beginPath();ctx.moveTo(x1,y1);ctx.lineTo(x2,y2);
- let isFut=(f.t==='f'&&t.t==='f');if(l.c){ctx.strokeStyle='rgba(0,242,254,0.9)';ctx.lineWidth=zm*2;ctx.shadowBlur=15;ctx.shadowColor='#00f2fe'}
- else if(isFut){ctx.strokeStyle=h?'#ff00ff':'rgba(255,0,255,1)';ctx.lineWidth=zm*(h?7:5);ctx.shadowBlur=25;ctx.shadowColor='#ff00ff'}
- else if(f.t==='r'||t.t==='r'){ctx.strokeStyle=h?'#f4c430':'rgba(244,196,48,.4)';ctx.lineWidth=zm*(h?4:2)}
- else if(f.t==='a'||t.t==='a'){ctx.strokeStyle=h?'#ff3333':'rgba(255,51,51,.3)';ctx.lineWidth=zm*(h?4:1.8)}
- else if(t.t==='f'||f.t==='f'){ctx.strokeStyle=h?'#ff00ff':'rgba(255,0,255,.3)';ctx.lineWidth=zm*(h?3.5:1.8)}
- else{ctx.strokeStyle=h?'#58a6ff':'#21262d';ctx.lineWidth=zm*(h?2.5:.8)}ctx.stroke();ctx.shadowBlur=0;
- if(l.l){const mx=(x1+x2)/2,my=(y1+y2)/2;ctx.fillStyle=l.c?'#00f2fe':'#8b949e';ctx.font=(9*zm)+'px monospace';ctx.textAlign='center';ctx.textBaseline='middle';ctx.clearRect(mx-14*zm,my-6*zm,24*zm,12*zm);ctx.fillText(l.l,mx,my)}});
- N.forEach(n=>{const nx=n.x*zm+ox,ny=n.y*zm+oy,h=hover&&hover.i===n.i;ctx.beginPath();let r=26*zm;
- if(n.t==='r'){ctx.fillStyle='#3a2f05';ctx.strokeStyle='#f4c430';ctx.shadowBlur=h?35:15;ctx.shadowColor='#f4c430';r=34*zm}
- else if(n.t==='a'){ctx.fillStyle='#4a0d0d';ctx.strokeStyle='#ff3333';ctx.shadowBlur=h?35:15;ctx.shadowColor='#ff3333';r=34*zm}
- else if(n.t==='w'){ctx.fillStyle='#21262d';ctx.strokeStyle=h?'#ff7b72':'#f0883e';r=32*zm}
- else if(n.t==='d'){ctx.fillStyle='#161b22';ctx.strokeStyle=h?'#58a6ff':'#30363d';r=22*zm}
- else if(n.t==='f'){ctx.fillStyle='#4c0847';ctx.strokeStyle='#ff00ff';ctx.shadowBlur=h?30:15;ctx.shadowColor='#ff00ff';r=30*zm}
- else{ctx.fillStyle='#1f242c';ctx.strokeStyle=h?'#f4c430':'#a5d6ff';r=28*zm}
- ctx.lineWidth=h?3:1.5;ctx.arc(nx,ny,r,0,Math.PI*2);ctx.fill();ctx.stroke();ctx.shadowBlur=0;
- ctx.fillStyle=h?'#fff':'#c9d1d9';ctx.font=(n.t==='w'||n.t==='r'||n.t==='a')?'bold '+(8*zm)+'px sans-serif':(8*zm)+'px sans-serif';ctx.textAlign='center';ctx.textBaseline='middle';ctx.fillText(n.l,nx,ny);
- if(h&&n.d){ctx.fillStyle='rgba(22,27,34,.95)';ctx.strokeStyle='#30363d';ctx.lineWidth=1;const w=ctx.measureText(n.d).width+16;ctx.fillRect(nx-w/2,ny-r-28,w,20);ctx.strokeRect(nx-w/2,ny-r-28,w,20);ctx.fillStyle='#58a6ff';ctx.font='10px sans-serif';ctx.fillText(n.d,nx,ny-r-18)}})}
- function gND(x,y){return N.find(nd=>Math.hypot(x-(nd.x*zm+ox),y-(nd.y*zm+oy))<34*zm)}
- canvas.addEventListener('mousedown',e=>{if(!gND(e.clientX,e.clientY)){isDrag=true;sx=e.clientX-ox;sy=e.clientY-oy}});
- canvas.addEventListener('mousemove',e=>{if(isDrag){ox=e.clientX-sx;oy=e.clientY-sy;draw()}else{const p=hover;hover=gND(e.clientX,e.clientY);if(hover!==p)draw()}});
- canvas.addEventListener('mouseup',()=>isDrag=false);canvas.addEventListener('mouseleave',()=>isDrag=false);
- canvas.addEventListener('wheel',e=>{e.preventDefault();const dZ=e.deltaY<0?1.1:0.9,nX=(e.clientX-ox)*dZ,nY=(e.clientY-oy)*dZ;ox=e.clientX-nX;oy=e.clientY-nY;zm*=dZ;zm=Math.max(0.1,Math.min(zm,4));draw()},{passive:false});
- canvas.addEventListener('touchstart',e=>{if(e.touches.length===1){isDrag=true;sx=e.touches[0].clientX-ox;sy=e.touches[0].clientY-oy}else if(e.touches.length===2){isDrag=false;distS=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);zmS=zm}});
- canvas.addEventListener('touchmove',e=>{if(isDrag&&e.touches.length===1){ox=e.touches[0].clientX-sx;oy=e.touches[0].clientY-sy;draw()}else if(e.touches.length===2){const dist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY),cX=(e.touches[0].clientX+e.touches[1].clientX)/2,cY=(e.touches[0].clientY+e.touches[1].clientY)/2,dZ=dist/distS,nZm=Math.max(0.1,Math.min(zmS*dZ,4)),ratio=nZm/zm,nX=(cX-ox)*ratio,nY=(cY-oy)*ratio;ox=cX-nX;oy=cY-nY;zm=nZm;draw()}});canvas.addEventListener('touchend',()=>isDrag=false);setTimeout(draw,50);
- </script></body></html>
Advertisement
Add Comment
Please, Sign In to add comment