Neural Network Web Explorer

0

 Here's a **"Neural Network Web Explorer"** that visualizes websites as interconnected nodes in an artificial neural network that responds to your interactions:


```html

<!DOCTYPE html>

<html lang="en">

<head>

  <meta charset="UTF-8">

  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <title>Neural Web Explorer</title>

  <style>

    body {

      margin: 0;

      overflow: hidden;

      background: #111;

      font-family: 'Arial', sans-serif;

    }

    

    #neuralCanvas {

      position: absolute;

      top: 0;

      left: 0;

      z-index: 1;

    }

    

    .neuron {

      position: absolute;

      width: 60px;

      height: 60px;

      border-radius: 50%;

      background: radial-gradient(circle at 30% 30%, #3a0ca3, #1a1a6e);

      box-shadow: 0 0 20px rgba(58, 12, 163, 0.7);

      display: flex;

      align-items: center;

      justify-content: center;

      color: white;

      font-size: 10px;

      text-align: center;

      cursor: pointer;

      z-index: 2;

      transition: all 0.3s;

      overflow: hidden;

    }

    

    .neuron.active {

      box-shadow: 0 0 40px rgba(0, 255, 200, 0.9);

      transform: scale(1.1);

      z-index: 3;

    }

    

    .neuron-iframe {

      width: 100%;

      height: 100%;

      border: none;

      opacity: 0.3;

      transition: opacity 0.3s;

    }

    

    .neuron.active .neuron-iframe {

      opacity: 0.8;

    }

    

    #mainDisplay {

      position: fixed;

      top: 50%;

      left: 50%;

      transform: translate(-50%, -50%);

      width: 80vw;

      height: 70vh;

      background: rgba(20, 20, 40, 0.95);

      border-radius: 15px;

      box-shadow: 0 0 50px rgba(0, 200, 255, 0.6);

      z-index: 10;

      display: none;

      flex-direction: column;

      overflow: hidden;

      border: 1px solid rgba(0, 200, 255, 0.3);

    }

    

    #mainDisplay.active {

      display: flex;

    }

    

    #mainIframe {

      flex: 1;

      border: none;

      background: white;

    }

    

    #displayTitle {

      padding: 15px;

      background: linear-gradient(to right, #3a0ca3, #4361ee);

      color: white;

      text-align: center;

      font-size: 16px;

      text-transform: uppercase;

      letter-spacing: 2px;

    }

    

    #controls {

      position: fixed;

      bottom: 30px;

      left: 50%;

      transform: translateX(-50%);

      display: flex;

      gap: 20px;

      z-index: 20;

    }

    

    .control-btn {

      width: 60px;

      height: 60px;

      border-radius: 50%;

      background: rgba(30, 30, 70, 0.8);

      border: 1px solid #4361ee;

      color: #4cc9f0;

      display: flex;

      align-items: center;

      justify-content: center;

      cursor: pointer;

      font-size: 24px;

      box-shadow: 0 0 20px rgba(67, 97, 238, 0.5);

      transition: all 0.3s;

    }

    

    .control-btn:hover {

      background: rgba(67, 97, 238, 0.8);

      transform: scale(1.1);

    }

    

    #neuralStats {

      position: fixed;

      top: 20px;

      left: 20px;

      color: white;

      background: rgba(0, 0, 0, 0.5);

      padding: 10px;

      border-radius: 5px;

      z-index: 20;

      font-size: 12px;

    }

    

    .synapse {

      position: absolute;

      height: 2px;

      background: linear-gradient(to right, rgba(67, 97, 238, 0.3), rgba(77, 144, 254, 0.7));

      transform-origin: 0 0;

      z-index: 1;

      transition: all 0.3s;

    }

    

    .pulse {

      position: absolute;

      width: 10px;

      height: 10px;

      background: #4cc9f0;

      border-radius: 50%;

      filter: blur(2px);

      z-index: 2;

      opacity: 0;

    }

    

    @keyframes pulse {

      0% { transform: scale(0.5); opacity: 0.8; }

      100% { transform: scale(1.5); opacity: 0; }

    }

  </style>

</head>

<body>

  <canvas id="neuralCanvas"></canvas>

  

  <div id="neuronsContainer">

    <!-- Neurons will be added by JavaScript -->

  </div>

  

  <div id="synapsesContainer">

    <!-- Synapses will be added by JavaScript -->

  </div>

  

  <div id="mainDisplay">

    <div id="displayTitle">Neural Web Explorer</div>

    <iframe id="mainIframe" sandbox="allow-same-origin allow-scripts allow-popups allow-forms"></iframe>

  </div>

  

  <div id="controls">

    <div class="control-btn" id="addNeuronBtn">+</div>

    <div class="control-btn" id="trainBtn">⚡</div>

    <div class="control-btn" id="resetBtn">↻</div>

  </div>

  

  <div id="neuralStats">

    Neurons: <span id="neuronCount">0</span> | 

    Synapses: <span id="synapseCount">0</span> | 

    Active: <span id="activeNeuron">None</span>

  </div>


  <script>

    // Neural network parameters

    const LAYER_COUNT = 3;

    const NEURONS_PER_LAYER = 5;

    const INITIAL_SYNAPSE_PROBABILITY = 0.3;

    

    // Visual parameters

    const PULSE_SPEED = 2;

    const ACTIVATION_THRESHOLD = 0.7;

    

    // Sites data

    const sites = [

      { url: 'https://advertica13.blogspot.com/', title: 'Advertica 13' },

      { url: 'https://advertica12.blogspot.com/', title: 'Advertica 12' },

      { url: 'https://advertica08.blogspot.com/', title: 'Advertica 08' },

      { url: 'https://advertica07.blogspot.com/', title: 'Advertica 07' },

      { url: 'https://www.softmod.shop/', title: 'Softmod Shop' },

      { url: 'https://advertica06.blogspot.com/', title: 'Advertica 06' },

      { url: 'https://advertica18.blogspot.com/', title: 'Advertica 18' },

      { url: 'https://advertica19.blogspot.com/', title: 'Advertica 19' }

    ];

    

    // DOM elements

    const neuralCanvas = document.getElementById('neuralCanvas');

    const ctx = neuralCanvas.getContext('2d');

    const neuronsContainer = document.getElementById('neuronsContainer');

    const synapsesContainer = document.getElementById('synapsesContainer');

    const mainDisplay = document.getElementById('mainDisplay');

    const mainIframe = document.getElementById('mainIframe');

    const displayTitle = document.getElementById('displayTitle');

    const addNeuronBtn = document.getElementById('addNeuronBtn');

    const trainBtn = document.getElementById('trainBtn');

    const resetBtn = document.getElementById('resetBtn');

    const neuronCount = document.getElementById('neuronCount');

    const synapseCount = document.getElementById('synapseCount');

    const activeNeuron = document.getElementById('activeNeuron');

    

    // Neural network state

    let neurons = [];

    let synapses = [];

    let pulses = [];

    let activeNeuronId = null;

    

    // Canvas setup

    neuralCanvas.width = window.innerWidth;

    neuralCanvas.height = window.innerHeight;

    

    // Neuron class

    class Neuron {

      constructor(id, x, y, layer, url, title) {

        this.id = id;

        this.x = x;

        this.y = y;

        this.layer = layer;

        this.url = url;

        this.title = title;

        this.activation = 0;

        this.output = 0;

        this.element = this.createDOMElement();

        this.updatePosition();

      }

      

      createDOMElement() {

        const el = document.createElement('div');

        el.className = 'neuron';

        el.id = `neuron-${this.id}`;

        el.innerHTML = `

          <iframe class="neuron-iframe" src="${this.url}" 

                  sandbox="allow-same-origin allow-scripts allow-popups allow-forms"></iframe>

          <div>${this.title}</div>

        `;

        

        el.addEventListener('click', () => this.activate());

        neuronsContainer.appendChild(el);

        return el;

      }

      

      updatePosition() {

        this.element.style.left = `${this.x - 30}px`;

        this.element.style.top = `${this.y - 30}px`;

      }

      

      activate() {

        // Show in main display

        mainIframe.src = this.url;

        displayTitle.textContent = this.title;

        mainDisplay.classList.add('active');

        

        // Visual activation

        neurons.forEach(n => n.element.classList.remove('active'));

        this.element.classList.add('active');

        activeNeuronId = this.id;

        activeNeuron.textContent = this.title;

        

        // Send pulse through outgoing synapses

        this.sendPulse();

      }

      

      sendPulse() {

        const outgoingSynapses = synapses.filter(s => s.from === this.id);

        

        outgoingSynapses.forEach(synapse => {

          const toNeuron = neurons.find(n => n.id === synapse.to);

          if (toNeuron) {

            this.createPulse(this.x, this.y, toNeuron.x, toNeuron.y);

            

            // Random chance to activate connected neuron

            if (Math.random() > 0.7) {

              setTimeout(() => {

                toNeuron.activate();

              }, 300);

            }

          }

        });

      }

      

      createPulse(fromX, fromY, toX, toY) {

        const pulse = document.createElement('div');

        pulse.className = 'pulse';

        pulse.style.left = `${fromX - 5}px`;

        pulse.style.top = `${fromY - 5}px`;

        

        const angle = Math.atan2(toY - fromY, toX - fromX);

        const distance = Math.sqrt(Math.pow(toX - fromX, 2) + Math.pow(toY - fromY, 2));

        

        document.body.appendChild(pulse);

        

        let progress = 0;

        const duration = distance / PULSE_SPEED;

        

        const animatePulse = () => {

          progress += 16; // Roughly 60fps

          const ratio = progress / duration;

          

          if (ratio >= 1) {

            pulse.remove();

            return;

          }

          

          pulse.style.left = `${fromX + (toX - fromX) * ratio - 5}px`;

          pulse.style.top = `${fromY + (toY - fromY) * ratio - 5}px`;

          pulse.style.opacity = 1 - ratio;

          

          requestAnimationFrame(animatePulse);

        };

        

        animatePulse();

      }

    }

    

    // Synapse class

    class Synapse {

      constructor(id, from, to, weight) {

        this.id = id;

        this.from = from;

        this.to = to;

        this.weight = weight;

        this.element = this.createDOMElement();

        this.updatePosition();

      }

      

      createDOMElement() {

        const el = document.createElement('div');

        el.className = 'synapse';

        el.id = `synapse-${this.id}`;

        synapsesContainer.appendChild(el);

        return el;

      }

      

      updatePosition() {

        const fromNeuron = neurons.find(n => n.id === this.from);

        const toNeuron = neurons.find(n => n.id === this.to);

        

        if (fromNeuron && toNeuron) {

          const dx = toNeuron.x - fromNeuron.x;

          const dy = toNeuron.y - fromNeuron.y;

          const length = Math.sqrt(dx * dx + dy * dy);

          const angle = Math.atan2(dy, dx);

          

          this.element.style.width = `${length}px`;

          this.element.style.left = `${fromNeuron.x}px`;

          this.element.style.top = `${fromNeuron.y}px`;

          this.element.style.transform = `rotate(${angle}rad)`;

          this.element.style.opacity = this.weight;

        }

      }

    }

    

    // Initialize neural network

    function initNeuralNetwork() {

      clearNetwork();

      

      // Create neurons in layers

      for (let layer = 0; layer < LAYER_COUNT; layer++) {

        for (let i = 0; i < NEURONS_PER_LAYER; i++) {

          const x = (layer + 1) * (window.innerWidth / (LAYER_COUNT + 1));

          const y = (i + 1) * (window.innerHeight / (NEURONS_PER_LAYER + 1));

          

          const siteIndex = (layer * NEURONS_PER_LAYER + i) % sites.length;

          const site = sites[siteIndex];

          

          neurons.push(new Neuron(

            neurons.length,

            x,

            y,

            layer,

            site.url,

            site.title

          ));

        }

      }

      

      // Create random synapses

      neurons.forEach(fromNeuron => {

        neurons.forEach(toNeuron => {

          if (fromNeuron !== toNeuron && 

              toNeuron.layer > fromNeuron.layer &&

              Math.random() < INITIAL_SYNAPSE_PROBABILITY) {

            const weight = Math.random() * 0.5 + 0.3; // 0.3-0.8

            synapses.push(new Synapse(

              synapses.length,

              fromNeuron.id,

              toNeuron.id,

              weight

            ));

          }

        });

      });

      

      updateStats();

    }

    

    // Add random neuron

    function addRandomNeuron() {

      const x = Math.random() * (window.innerWidth - 100) + 50;

      const y = Math.random() * (window.innerHeight - 100) + 50;

      const layer = Math.floor(Math.random() * LAYER_COUNT);

      

      const site = sites[Math.floor(Math.random() * sites.length)];

      

      const newNeuron = new Neuron(

        neurons.length,

        x,

        y,

        layer,

        site.url,

        site.title

      );

      

      neurons.push(newNeuron);

      

      // Connect to existing neurons

      neurons.forEach(neuron => {

        if (neuron !== newNeuron) {

          if ((neuron.layer < newNeuron.layer && Math.random() > 0.7) ||

              (neuron.layer > newNeuron.layer && Math.random() > 0.7)) {

            const weight = Math.random() * 0.5 + 0.3;

            const from = neuron.layer < newNeuron.layer ? neuron.id : newNeuron.id;

            const to = neuron.layer < newNeuron.layer ? newNeuron.id : neuron.id;

            

            synapses.push(new Synapse(

              synapses.length,

              from,

              to,

              weight

            ));

          }

        }

      });

      

      updateStats();

    }

    

    // Train network (add/strengthen connections)

    function trainNetwork() {

      // Randomly add some new synapses

      if (Math.random() > 0.5 && synapses.length < neurons.length * 3) {

        const from = Math.floor(Math.random() * neurons.length);

        const to = Math.floor(Math.random() * neurons.length);

        

        if (from !== to && !synapses.find(s => s.from === from && s.to === to)) {

          const weight = Math.random() * 0.5 + 0.3;

          synapses.push(new Synapse(

            synapses.length,

            from,

            to,

            weight

          ));

        }

      }

      

      // Strengthen some existing synapses

      synapses.forEach(synapse => {

        if (Math.random() > 0.8) {

          synapse.weight = Math.min(1, synapse.weight + 0.1);

          synapse.element.style.opacity = synapse.weight;

        }

      });

      

      // Randomly activate a neuron

      if (Math.random() > 0.7 && neurons.length > 0) {

        const randomNeuron = neurons[Math.floor(Math.random() * neurons.length)];

        randomNeuron.activate();

      }

      

      updateStats();

    }

    

    // Clear entire network

    function clearNetwork() {

      neuronsContainer.innerHTML = '';

      synapsesContainer.innerHTML = '';

      neurons = [];

      synapses = [];

      activeNeuronId = null;

      activeNeuron.textContent = 'None';

    }

    

    // Update statistics display

    function updateStats() {

      neuronCount.textContent = neurons.length;

      synapseCount.textContent = synapses.length;

    }

    

    // Update all synapse positions

    function updateAllSynapses() {

      synapses.forEach(synapse => synapse.updatePosition());

    }

    

    // Event listeners

    addNeuronBtn.addEventListener('click', addRandomNeuron);

    trainBtn.addEventListener('click', trainNetwork);

    resetBtn.addEventListener('click', initNeuralNetwork);

    

    // Close main display when clicking outside

    document.addEventListener('click', (e) => {

      if (!mainDisplay.contains(e.target) {

        mainDisplay.classList.remove('active');

        neurons.forEach(neuron => {

          neuron.element.classList.remove('active');

        });

        activeNeuronId = null;

        activeNeuron.textContent = 'None';

      }

    });

    

    // Handle window resize

    window.addEventListener('resize', () => {

      neuralCanvas.width = window.innerWidth;

      neuralCanvas.height = window.innerHeight;

      updateAllSynapses();

    });

    

    // Initialize

    initNeuralNetwork();

    

    // Background animation

    function animateBackground() {

      ctx.fillStyle = 'rgba(10, 10, 20, 0.05)';

      ctx.fillRect(0, 0, neuralCanvas.width, neuralCanvas.height);

      

      // Draw faint grid

      ctx.strokeStyle = 'rgba(60, 60, 100, 0.05)';

      ctx.lineWidth = 1;

      

      const gridSize = 50;

      for (let x = 0; x < neuralCanvas.width; x += gridSize) {

        ctx.beginPath();

        ctx.moveTo(x, 0);

        ctx.lineTo(x, neuralCanvas.height);

        ctx.stroke();

      }

      

      for (let y = 0; y < neuralCanvas.height; y += gridSize) {

        ctx.beginPath();

        ctx.moveTo(0, y);

        ctx.lineTo(neuralCanvas.width, y);

        ctx.stroke();

      }

      

      requestAnimationFrame(animateBackground);

    }

    

    animateBackground();

  </script>

</body>

</html>

```


### Key Features of This Neural Network Explorer:


1. **Interactive Neural Network Visualization**:

   - Websites represented as neurons in different layers

   - Dynamic connections (synapses) between them

   - Visual pulses that travel along connections


2. **Organic Navigation**:

   - Click any neuron to view its website

   - Activations propagate through the network

   - Discover related sites through connections


3. **Dynamic Network Behavior**:

   - "Train" button strengthens/creates connections

   - Add new random neurons with websites

   - Reset the entire network structure


4. **Visual Effects**:

   - Glowing neuron nodes with live website previews

   - Animated pulses traveling between connected nodes

   - Semi-transparent synapse connections

   - Dark futuristic interface with grid background


5. **Real-time Statistics**:

   - Neuron and synapse counters

   - Currently active website display

   - Network evolves as you interact


This implementation creates a completely unique way to explore and discover websites by treating them as nodes in a living neural network. The organic connections and propagation of activations make web browsing feel more like exploring a living system than clicking static links.


Additional features you could add:

- Save/load network configurations

- Search functionality to find specific sites

- Custom website addition form

- Different network layout algorithms

- More advanced training/learning algorithms

- Sound effects for network activity

Post a Comment

0 Comments
* Please Don't Spam Here. All the Comments are Reviewed by Admin.

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Learn More
Accept !