Oto ciekawe złudzenie optyczne - widzisz małe białe kropki na przecięciach szarych linii tam, gdzie skupiasz wzrok, ale wydają się one znikać z pozostałej części obrazu (z peryferii twojego obszaru widzenia). Zwróć uwagę, że to obraz statyczny - nie zmienia się, mimo że tak to odbiera twój mózg.
Kod potrzebny do stworzenia tego efektu jest bardzo prosty:
[Linie 4-6]: ustawiamy HTML5 Canvas
[7-9]: przygotowujemy się do rysowania szarych linii
[10-12]: rysujemy linie w kierunku południowo-zachodnim
[13-16]: rysujemy linie w kierunku południowo-wschodnim
[18-24]: rysujemy białe kropki (koła). W każdej iteracji pętli y rysujemy dwie kropki - ta druga jest przesunięta w dół i w prawo, by pokryć każde skrzyżowanie.
<html> |
<body style='background-color:black'> |
<canvas id="myCanvas" width="800" height="340"></canvas> |
<script> |
let canvas = document.getElementById('myCanvas'); |
let context = canvas.getContext('2d'); |
context.lineWidth = 5; |
context.strokeStyle = 'gray' |
context.beginPath(); |
for(let x=0;x<28;x++){ |
context.moveTo(x*40-304,0); |
context.lineTo(x*40+20,340); |
context.moveTo(x*40,0); |
context.lineTo(x*40-324,340); |
} |
context.stroke(); |
|
context.fillStyle = 'white'; |
for(let x=0;x<20;x++) |
for(let y=0;y<9;y++){ |
context.beginPath(); |
context.arc(8+x*40, y*42-9, 3, 0, 2 * Math.PI); |
context.arc(28+x*40, y*42-29, 3, 0, 2 * Math.PI); |
context.fill(); |
} |
</script> |
</body> |
</html> |
Ciekawe efekty powoduje zmiana rozmiaru i redukcja liczby kropek. Miłego robienia wody z mózgu!
Inne poradniki:
Fraktale w JavaScript - tylko 25 linii kodu
Rozbiajanie muru kulą - 14 linii kodu Python/Blender 3d
Efekt domino - 10 linii kodu Python/Blender 3d