Přejít k hlavnímu obsahu

qwen3-coder:30b

Alibaba (Qwen)

https://github.com/QwenLM/Qwen3

O modelu

Qwen3 Coder je specializovaná varianta modelu Qwen3 zaměřená na programování. S 30B parametry poskytuje vynikající výkon v generování a analýze kódu. Optimalizován pro technické úlohy.

Schopnosti

✅ Text 💻 Kód

Technické specifikace

Parameters 30B
Context window 131072
Architecture transformer

Hardware pro testy

CPUAMD Ryzen
GPUNVIDIA RTX 5060 Ti 16GB
RAM32 GB DDR5
OSUbuntu 24.04 LTS

Výsledky testů

Test Run Tokens/s TTFT (ms) Délka (s) Tokeny GPU VRAM Teplota Kvalita Datum Výstup
Python galaxie #1 9.30 1351 265.7 2448 15458 MB 52 °C - 19.05.2026
PHP Drupal modul #1 10.80 1362 140.6 1495 15458 MB 49 °C - 19.05.2026
HTML/JS animace #1 9.17 1383 318.3 2578 15456 MB 46 °C - 19.05.2026
Anglický článek #1 9.13 1416 333.8 2590 15456 MB 52 °C - 18.05.2026
Český článek #1 7.18 1434 567.8 3708 15456 MB 52 °C - 18.05.2026
Python galaxie #1 8.38 1490 401.3 2841 15456 MB 46 °C - 18.05.2026
HTML/JS animace #1 8.84 1767 393.8 2308 15461 MB 45 °C - 18.05.2026
PHP Drupal modul #1 10.31 16701 190.3 1111 15461 MB 39 °C - 18.05.2026

Vygenerované výstupy

Python galaxie Run #1 · 2448 tok · 9.3 tok/s
```python
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.colors as mcolors
import imageio
import os

# Set random seed for reproducibility
np.random.seed(42)

class GalaxyFlythrough:
    def __init__(self, num_stars=10000, num_frames=200):
        self.num_stars = num_stars
        self.num_frames = num_frames
        self.fig = plt.figure(figsize=(12, 10), dpi=100)
        self.ax = self.fig.add_subplot(111, projection='3d')
        
        # Generate galaxy data
        self.stars = self.generate_galaxy()
        self.dust_lanes = self.generate_dust_lanes()
        self.camera_path = self.generate_camera_path()
        
        # Setup plot
        self.ax.set_xlim(-50, 50)
        self.ax.set_ylim(-50, 50)
        self.ax.set_zlim(-20, 20)
        self.ax.set_facecolor('black')
        self.fig.patch.set_facecolor('black')
        self.ax.xaxis.pane.fill = False
        self.ax.yaxis.pane.fill = False
        self.ax.zaxis.pane.fill = False
        self.ax.xaxis.pane.set_edgecolor('w')
        self.ax.yaxis.pane.set_edgecolor('w')
        self.ax.zaxis.pane.set_edgecolor('w')
        self.ax.xaxis.pane.set_alpha(0.1)
        self.ax.yaxis.pane.set_alpha(0.1)
        self.ax.zaxis.pane.set_alpha(0.1)
        
        # Initialize plot elements
        self.star_scatter = None
        self.dust_scatter = None
        self.camera_point = None
        
        # Animation variables
        self.frame = 0
        
    def generate_galaxy(self):
        """Generate star positions in a spiral galaxy pattern"""
        stars = []
        
        # Spiral arms parameters
        arm_count = 4
        arm_width = 8
        disk_radius = 40
        disk_height = 8
        
        # Generate stars
        for i in range(self.num_stars):
            # Random position in disk
            r = np.random.uniform(0, disk_radius)
            theta = np.random.uniform(0, 2 * np.pi)
            
            # Add spiral arm structure
            arm_angle = (theta + np.random.normal(0, 0.3)) % (2 * np.pi)
            spiral_factor = 1 + 0.3 * np.sin(arm_angle * arm_count)
            
            # Apply spiral arm
            r *= spiral_factor
            
            # Add some randomness to spiral
            r += np.random.normal(0, 0.5)
            
            # Convert to 3D coordinates
            x = r * np.cos(theta)
            y = r * np.sin(theta)
            
            # Add some vertical distribution
            z = np.random.normal(0, disk_height * 0.3)
            
            # Star temperature (blue to red)
            temperature = np.random.uniform(3000, 7000)
            color = self.temperature_to_color(temperature)
            
            stars.append([x, y, z, temperature, color])
            
        return np.array(stars)
    
    def generate_dust_lanes(self):
        """Generate dust lanes in the galaxy"""
        lanes = []
        num_lanes = 8
        
        for i in range(num_lanes):
            # Create spiral dust lanes
            theta = np.linspace(0, 4 * np.pi, 100)
            r = 20 + 15 * np.sin(theta * 2 + i * np.pi/4)
            
            # Create 3D positions for dust
            x = r * np.cos(theta)
            y = r * np.sin(theta)
            z = np.random.normal(0, 2, len(theta))
            
            lanes.append(np.column_stack([x, y, z]))
            
        return lanes
    
    def generate_camera_path(self):
        """Generate camera path for flythrough"""
        # Create a circular path with some elevation changes
        t = np.linspace(0, 4 * np.pi, self.num_frames)
        
        # Camera positions (circular path with elevation)
        x = 60 * np.cos(t)
        y = 60 * np.sin(t)
        z = 15 * np.sin(t * 0.5)  # Gentle up/down motion
        
        return np.column_stack([x, y, z])
    
    def temperature_to_color(self, temperature):
        """Convert star temperature to color (blue to red)"""
        # Normalize temperature (3000K to 7000K)
        temp_norm = (temperature - 3000) / (7000 - 3000)
        
        # Create color gradient from blue to red
        if temp_norm < 0.25:
            # Blue to cyan
            r = 0
            g = temp_norm * 4
            b = 1
        elif temp_norm < 0.5:
            # Cyan to green
            r = 0
            g = 1
            b = 1 - (temp_norm - 0.25) * 4
        elif temp_norm < 0.75:
            # Green to yellow
            r = (temp_norm - 0.5) * 4
            g = 1
            b = 0
        else:
            # Yellow to red
            r = 1
            g = 1 - (temp_norm - 0.75) * 4
            b = 0
            
        return (r, g, b)
    
    def update_frame(self, frame):
        """Update function for animation"""
        self.frame = frame
        
        # Clear previous plot
        self.ax.clear()
        
        # Set up 3D plot
        self.ax.set_xlim(-50, 50)
        self.ax.set_ylim(-50, 50)
        self.ax.set_zlim(-20, 20)
        self.ax.set_facecolor('black')
        self.fig.patch.set_facecolor('black')
        
        # Set camera position
        camera_pos = self.camera_path[frame]
        self.ax.view_init(elev=15, azim=frame * 2)
        
        # Plot stars
        x = self.stars[:, 0]
        y = self.stars[:, 1]
        z = self.stars[:, 2]
        colors = self.stars[:, 4]
        
        # Add some visual effects
        sizes = 100 + 50 * np.random.random(len(x))  # Random star sizes
        
        self.star_scatter = self.ax.scatter(x, y, z, c=colors, s=sizes, alpha=0.8, depthshade=True)
        
        # Plot dust lanes
        for lane in self.dust_lanes:
            if len(lane) > 0:
                # Move dust lane with camera
                lane_x = lane[:, 0] + camera_pos[0]
                lane_y = lane[:, 1] + camera_pos[1]
                lane_z = lane[:, 2] + camera_pos[2]
                
                # Plot with transparency
                self.ax.plot(lane_x, lane_y, lane_z, 'w', alpha=0.3, linewidth=0.5)
        
        # Add some background stars
        background_stars = np.random.uniform(-60, 60, (500, 3))
        self.ax.scatter(background_stars[:, 0], background_stars[:, 1], background_stars[:, 2], 
                       c='white', s=1, alpha=0.5)
        
        # Set labels and title
        self.ax.set_xlabel('X (light years)', color='white')
        self.ax.set_ylabel('Y (light years)', color='white')
        self.ax.set_zlabel('Z (light years)', color='white')
        self.ax.set_title('Galaxy Flythrough', color='white', pad=20)
        
        # Set tick colors
        self.ax.tick_params(colors='white')
        self.ax.xaxis.label.set_color('white')
        self.ax.yaxis.label.set_color('white')
        self.ax.zaxis.label.set_color('white')
        
        # Add grid
        self.ax.grid(False)
        
        return self.star_scatter,
    
    def create_animation(self):
        """Create and save the animation"""
        print("Creating galaxy flythrough animation...")
        
        # Create animation
        anim = FuncAnimation(
            self.fig, 
            self.update_frame, 
            frames=self.num_frames, 
            interval=50, 
            blit=False,
            repeat=True
        )
        
        # Save as MP4
        print("Saving MP4 animation...")
        anim.save('galaxy_flythrough.mp4', writer='ffmpeg', fps=20)
        
        # Save as GIF
        print("Saving GIF animation...")
        anim.save('galaxy_flythrough.gif', writer='pillow', fps=20)
        
        print("Animation saved as galaxy_flythrough.mp4 and galaxy_flythrough.gif")
        
        return anim

def main():
    """Main function to run the galaxy visualization"""
    print("Generating 3D galaxy flythrough...")
    
    # Create galaxy flythrough
    galaxy = GalaxyFlythrough(num_stars=10000, num_frames=200)
    
    # Create and save animation
    animation = galaxy.create_animation()
    
    # Show the final frame
    plt.show()
    
    print("Galaxy visualization complete!")

if __name__ == "__main__":
    # Check if required packages are installed
    try:
        import matplotlib.animation
        import mpl_toolkits.mplot3d
        main()
    except ImportError as e:
        print(f"Error: {e}")
        print("Please install required packages: pip install matplotlib numpy pillow")
```

This Python script creates a stunning 3D galaxy flythrough visualization with the following features:

## Key Features:

1. **Spiral Galaxy Structure**: Generates 10,000 stars in a realistic spiral galaxy pattern with multiple arms
2. **Temperature-Based Coloring**: Stars are colored from blue (hot) to red (cool) based on their temperature
3. **Dust Lanes**: Creates visible dust lanes throughout the galaxy
4. **Smooth Camera Flythrough**: Animated camera path that circles the galaxy with elevation changes
5. **3D Visualization**: Full 3D rendering with proper perspective and lighting
6. **Multiple Output Formats**: Saves as both MP4 and GIF animations
7. **Visual Effects**: 
   - Depth shading for 3D effect
   - Random star sizes for realism
   - Background stars for cosmic context
   - Black background with white elements for contrast

## Requirements:

```bash
pip install matplotlib numpy pillow
```

## Usage:

Simply run the script and it will:
1. Generate the galaxy data
2. Create the animation
3. Save both MP4 and GIF files
4. Display the final visualization

The animation shows a camera flying through a spiral galaxy, with stars of different temperatures, visible dust lanes, and a beautiful cosmic background. The camera path creates a smooth, engaging flythrough experience that captures the grandeur of galactic structure.
PHP Drupal modul Run #1 · 1495 tok · 10.8 tok/s
Here's a complete Drupal 11 module called "hello_world_benchmark" with all the requested components:

### hello_world_benchmark.info.yml
```yaml
name: Hello World Benchmark
type: module
description: A benchmark module for demonstration purposes
core_version_requirement: ^11
package: Custom
```

### hello_world_benchmark.routing.yml
```yaml
hello_world_benchmark.hello:
  path: '/hello-world-benchmark'
  defaults:
    _controller: '\Drupal\hello_world_benchmark\Controller\HelloWorldController::hello'
    _title: 'Hello World Benchmark'
  requirements:
    _access: 'TRUE'
```

### src/Controller/HelloWorldController.php
```php
<?php

namespace Drupal\hello_world_benchmark\Controller;

use Drupal\Core\Controller\ControllerBase;
use Symfony\Component\HttpFoundation\Response;

/**
 * Hello world controller.
 */
class HelloWorldController extends ControllerBase {

  /**
   * Returns a simple hello world response.
   */
  public function hello(): Response {
    return new Response('Hello World from AI Arena benchmark!');
  }

}
```

### src/Service/HelloWorldService.php
```php
<?php

namespace Drupal\hello_world_benchmark\Service;

/**
 * Simple service for hello world benchmark.
 */
class HelloWorldService {

  /**
   * Returns a greeting message.
   */
  public function getGreeting(): string {
    return 'Hello World from AI Arena benchmark!';
  }

}
```

### hello_world_benchmark.services.yml
```yaml
services:
  hello_world_benchmark.hello_world_service:
    class: Drupal\hello_world_benchmark\Service\HelloWorldService
    public: true
```

### src/Plugin/Block/HelloWorldBlock.php
```php
<?php

namespace Drupal\hello_world_benchmark\Plugin\Block;

use Drupal\Core\Block\BlockBase;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Drupal\hello_world_benchmark\Service\HelloWorldService;
use Symfony\Component\DependencyInjection\ContainerInterface;

/**
 * Provides a 'HelloWorldBlock' block.
 *
 * @Block(
 *   id = "hello_world_benchmark_block",
 *   admin_label = @Translation("Hello World Benchmark Block"),
 * )
 */
class HelloWorldBlock extends BlockBase implements ContainerFactoryPluginInterface {

  /**
   * The hello world service.
   */
  protected readonly HelloWorldService $helloWorldService;

  /**
   * {@inheritdoc}
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition, HelloWorldService $hello_world_service) {
    parent::__construct($configuration, $plugin_id, $plugin_definition);
    $this->helloWorldService = $hello_world_service;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
    return new static(
      $configuration,
      $plugin_id,
      $plugin_definition,
      $container->get('hello_world_benchmark.hello_world_service')
    );
  }

  /**
   * {@inheritdoc}
   */
  public function build() {
    $message = $this->helloWorldService->getGreeting();
    return [
      '#markup' => $message,
    ];
  }

}
```

### hello_world_benchmark.install
```php
<?php

/**
 * @file
 * Install, update and uninstall functions for the hello_world_benchmark module.
 */

use Drupal\Core\Database\Database;

/**
 * Implements hook_schema().
 */
function hello_world_benchmark_schema(array &$schema) {
  $schema['hello_benchmark_messages'] = [
    'description' => 'Stores benchmark messages.',
    'fields' => [
      'id' => [
        'description' => 'The primary identifier for a message.',
        'type' => 'serial',
        'unsigned' => TRUE,
        'not null' => TRUE,
      ],
      'message' => [
        'description' => 'The message content.',
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => '',
      ],
      'created' => [
        'description' => 'The timestamp when the message was created.',
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ],
      'updated' => [
        'description' => 'The timestamp when the message was last updated.',
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
      ],
    ],
    'primary key' => ['id'],
  ];
}
```

### hello_world_benchmark.module
```php
<?php

/**
 * @file
 * Main module file for hello_world_benchmark.
 */

use Drupal\Core\Routing\RouteMatchInterface;

/**
 * Implements hook_help().
 */
function hello_world_benchmark_help($route_name, RouteMatchInterface $route_match) {
  switch ($route_name) {
    case 'hello_world_benchmark.hello':
      return '<p>' . t('This is the hello world benchmark page.') . '</p>';
  }
}
```

### composer.json (if needed for module dependencies)
```json
{
    "name": "drupal/hello_world_benchmark",
    "description": "A benchmark module for demonstration purposes",
    "type": "drupal-module",
    "require": {
        "php": ">=8.3"
    },
    "autoload": {
        "psr-4": {
            "Drupal\\hello_world_benchmark\\": "src/"
        }
    }
}
```

### Directory Structure
```
hello_world_benchmark/
├── hello_world_benchmark.info.yml
├── hello_world_benchmark.routing.yml
├── hello_world_benchmark.install
├── hello_world_benchmark.module
├── src/
│   ├── Controller/
│   │   └── HelloWorldController.php
│   ├── Plugin/
│   │   └── Block/
│   │       └── HelloWorldBlock.php
│   └── Service/
│       └── HelloWorldService.php
└── hello_world_benchmark.services.yml
```

This module includes:

1. **Module Info File** - Defines the module with proper Drupal 11 naming conventions
2. **Routing File** - Defines the `/hello-world-benchmark` route
3. **Controller** - Returns the required "Hello World from AI Arena benchmark!" message
4. **Service** - A simple service with proper namespacing
5. **Database Schema** - Creates a `hello_benchmark_messages` table with id, message, created, and updated fields
6. **Block Plugin** - Demonstrates service usage in a block
7. **Proper PHP 8.3 Syntax** - Uses readonly properties where appropriate
8. **Drupal 11 Namespacing** - Follows Drupal 11 coding standards

To install:
1. Place the module in `modules/custom/hello_world_benchmark`
2. Enable the module via `drush en hello_world_benchmark` or through the UI
3. Visit `/hello-world-benchmark` to see the page
4. The database table will be created automatically during module installation
HTML/JS animace Run #1 · 2578 tok · 9.2 tok/s
# Interactive 3D Galaxy Particle Animation

I'll create an impressive interactive 3D galaxy animation with 5000 particles, mouse interaction, starfield background, and FPS counter - all in a single HTML file.

```html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Interactive 3D Galaxy</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/three@0.128.0/examples/js/controls/OrbitControls.min.js"></script>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        
        body {
            overflow: hidden;
            background: #000;
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            color: white;
        }
        
        #container {
            position: relative;
            width: 100vw;
            height: 100vh;
        }
        
        #info {
            position: absolute;
            top: 20px;
            left: 20px;
            z-index: 100;
            background: rgba(0, 0, 0, 0.7);
            padding: 15px;
            border-radius: 10px;
            backdrop-filter: blur(5px);
            border: 1px solid rgba(255, 255, 255, 0.1);
        }
        
        #info h1 {
            font-size: 1.8rem;
            margin-bottom: 10px;
            background: linear-gradient(90deg, #ff7eb3, #ff70a6, #ff5296);
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
            text-shadow: 0 0 10px rgba(255, 110, 179, 0.3);
        }
        
        #info p {
            margin: 5px 0;
            font-size: 0.9rem;
            opacity: 0.8;
        }
        
        #fps-counter {
            position: absolute;
            top: 20px;
            right: 20px;
            z-index: 100;
            background: rgba(0, 0, 0, 0.7);
            padding: 10px 15px;
            border-radius: 10px;
            backdrop-filter: blur(5px);
            border: 1px solid rgba(255, 255, 255, 0.1);
            font-family: monospace;
            font-size: 1.2rem;
        }
        
        #instructions {
            position: absolute;
            bottom: 20px;
            left: 50%;
            transform: translateX(-50%);
            z-index: 100;
            background: rgba(0, 0, 0, 0.7);
            padding: 10px 20px;
            border-radius: 20px;
            backdrop-filter: blur(5px);
            border: 1px solid rgba(255, 255, 255, 0.1);
            text-align: center;
            font-size: 0.9rem;
            opacity: 0.8;
        }
        
        canvas {
            display: block;
        }
    </style>
</head>
<body>
    <div id="container">
        <div id="info">
            <h1>Interactive 3D Galaxy</h1>
            <p>5,000 colorful particles in spiral formation</p>
            <p>Move mouse to tilt the galaxy</p>
        </div>
        <div id="fps-counter">FPS: 0</div>
        <div id="instructions">Move mouse to interact | Scroll to zoom</div>
    </div>

    <script>
        // Main variables
        let scene, camera, renderer, controls;
        let particles, particleSystem;
        let mouseX = 0, mouseY = 0;
        let windowHalfX = window.innerWidth / 2;
        let windowHalfY = window.innerHeight / 2;
        let clock = new THREE.Clock();
        let stats = { fps: 0, lastTime: 0 };
        
        // Initialize the scene
        function init() {
            // Create scene
            scene = new THREE.Scene();
            scene.background = new THREE.Color(0x000011);
            scene.fog = new THREE.Fog(0x000011, 100, 200);
            
            // Create camera
            camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 2000);
            camera.position.z = 150;
            
            // Create renderer
            renderer = new THREE.WebGLRenderer({ antialias: true });
            renderer.setSize(window.innerWidth, window.innerHeight);
            renderer.setPixelRatio(window.devicePixelRatio);
            document.getElementById('container').appendChild(renderer.domElement);
            
            // Add orbit controls
            controls = new THREE.OrbitControls(camera, renderer.domElement);
            controls.enableDamping = true;
            controls.dampingFactor = 0.05;
            controls.rotateSpeed = 0.5;
            
            // Create galaxy particles
            createGalaxy();
            
            // Create starfield background
            createStarfield();
            
            // Add event listeners
            document.addEventListener('mousemove', onDocumentMouseMove);
            window.addEventListener('resize', onWindowResize);
            
            // Start animation loop
            animate();
        }
        
        // Create galaxy particles
        function createGalaxy() {
            const particleCount = 5000;
            const geometry = new THREE.BufferGeometry();
            const positions = new Float32Array(particleCount * 3);
            const colors = new Float32Array(particleCount * 3);
            const sizes = new Float32Array(particleCount);
            
            const color = new THREE.Color();
            
            for (let i = 0; i < particleCount; i++) {
                const i3 = i * 3;
                
                // Spiral galaxy formation
                const radius = Math.sqrt(Math.random()) * 50;
                const angle = Math.random() * Math.PI * 2;
                const height = (Math.random() - 0.5) * 10;
                
                positions[i3] = Math.cos(angle) * radius;
                positions[i3 + 1] = height;
                positions[i3 + 2] = Math.sin(angle) * radius;
                
                // Color variations
                const hue = (angle / (Math.PI * 2)) + Math.random() * 0.2;
                color.setHSL(hue, 0.8, 0.6);
                
                colors[i3] = color.r;
                colors[i3 + 1] = color.g;
                colors[i3 + 2] = color.b;
                
                // Random sizes
                sizes[i] = Math.random() * 2 + 0.5;
            }
            
            geometry.setAttribute('position', new THREE.BufferAttribute(positions, 3));
            geometry.setAttribute('color', new THREE.BufferAttribute(colors, 3));
            geometry.setAttribute('size', new THREE.BufferAttribute(sizes, 1));
            
            // Create material
            const material = new THREE.PointsMaterial({
                size: 1.5,
                vertexColors: true,
                transparent: true,
                opacity: 0.9,
                sizeAttenuation: true,
                blending: THREE.AdditiveBlending
            });
            
            // Create particle system
            particleSystem = new THREE.Points(geometry, material);
            scene.add(particleSystem);
        }
        
        // Create starfield background
        function createStarfield() {
            const starGeometry = new THREE.BufferGeometry();
            const starMaterial = new THREE.PointsMaterial({
                color: 0xffffff,
                size: 0.2,
                transparent: true,
                opacity: 0.8
            });
            
            const starVertices = [];
            for (let i = 0; i < 10000; i++) {
                const x = (Math.random() - 0.5) * 2000;
                const y = (Math.random() - 0.5) * 2000;
                const z = (Math.random() - 0.5) * 2000;
                starVertices.push(x, y, z);
            }
            
            starGeometry.setAttribute('position', new THREE.Float32BufferAttribute(starVertices, 3));
            const stars = new THREE.Points(starGeometry, starMaterial);
            scene.add(stars);
        }
        
        // Handle mouse movement
        function onDocumentMouseMove(event) {
            mouseX = (event.clientX - windowHalfX) * 0.0005;
            mouseY = (event.clientY - windowHalfY) * 0.0005;
        }
        
        // Handle window resize
        function onWindowResize() {
            camera.aspect = window.innerWidth / window.innerHeight;
            camera.updateProjectionMatrix();
            renderer.setSize(window.innerWidth, window.innerHeight);
            windowHalfX = window.innerWidth / 2;
            windowHalfY = window.innerHeight / 2;
        }
        
        // Animation loop
        function animate() {
            requestAnimationFrame(animate);
            
            const delta = clock.getDelta();
            const elapsedTime = clock.getElapsedTime();
            
            // Update particle system rotation
            if (particleSystem) {
                particleSystem.rotation.y += 0.001;
                particleSystem.rotation.x = mouseY * 0.5;
                particleSystem.rotation.z = mouseX * 0.2;
            }
            
            // Update camera position based on mouse
            camera.position.x += (mouseX * 50 - camera.position.x) * 0.05;
            camera.position.y += (-mouseY * 50 - camera.position.y) * 0.05;
            camera.lookAt(scene.position);
            
            // Update controls
            controls.update();
            
            // Update FPS counter
            updateFPS();
            
            // Render the scene
            renderer.render(scene, camera);
        }
        
        // Update FPS counter
        function updateFPS() {
            const now = performance.now();
            if (now >= stats.lastTime + 1000) {
                document.getElementById('fps-counter').textContent = `FPS: ${stats.fps}`;
                stats.lastTime = now;
                stats.fps = 0;
            } else {
                stats.fps++;
            }
        }
        
     
Anglický článek Run #1 · 2590 tok · 9.1 tok/s
# How AI is Transforming Scientific Research in 2026: The Fourth Industrial Revolution in Science

The year 2026 marks a pivotal moment in scientific history, where artificial intelligence has evolved from a promising tool to an indispensable partner in advancing human knowledge. As we stand at the threshold of what some call the "Fourth Industrial Revolution in Science," AI systems are not merely assisting researchers but actively shaping the direction of scientific discovery. From identifying novel drug compounds in days rather than years to predicting climate patterns with unprecedented accuracy, the integration of artificial intelligence into research methodologies has fundamentally altered how we approach scientific challenges. This transformation represents more than just technological advancement—it signifies a paradigm shift in how humanity discovers, understands, and solves the most pressing problems of our time.

## The Drug Discovery Revolution: From Lab to Market in Record Time

The pharmaceutical industry has undergone a seismic transformation in 2026, largely driven by AI-powered drug discovery platforms that are revolutionizing the entire development pipeline. Traditional drug discovery, which once took 10-15 years and cost billions of dollars, has been compressed into timelines measured in months, thanks to sophisticated machine learning algorithms that can predict molecular behavior with remarkable accuracy.

One of the most significant breakthroughs came from DeepMind's AlphaFold 3 system, which has successfully predicted protein structures with 99% accuracy, enabling researchers to understand how potential drugs interact with target proteins at the atomic level. This achievement has particularly revolutionized the treatment of previously "undruggable" targets, such as certain types of cancer and neurodegenerative diseases where traditional approaches had failed.

In 2026, the AI-driven pipeline has produced several notable successes. Insilico Medicine's AI platform identified a novel compound for treating idiopathic pulmonary fibrosis in just 18 months, a process that would have traditionally taken over 10 years. The system utilized generative adversarial networks (GANs) to design molecules with specific therapeutic properties, then employed reinforcement learning to optimize their pharmaceutical characteristics. This approach has resulted in a 70% reduction in the time required for lead compound identification and a 40% improvement in success rates during clinical trials.

The pharmaceutical giant Novartis has implemented an AI system called "MediAI" that can analyze vast datasets of chemical compounds, biological interactions, and clinical trial outcomes to predict which drug candidates have the highest probability of success. This system has already identified three promising candidates for rare genetic disorders that had previously been considered hopeless cases, demonstrating AI's potential to address orphan diseases that typically receive little research attention due to their limited market potential.

Furthermore, AI platforms are now capable of repurposing existing drugs for new therapeutic applications, a process that has shown tremendous promise in 2026. Researchers at Stanford University developed an AI system that identified 12 existing drugs that could potentially treat multiple sclerosis, with several candidates already entering clinical trials. This approach, known as "drug repositioning," has reduced the cost of developing new treatments by an estimated 60% while accelerating the time to market.

## Climate Modeling: Predicting the Future with Unprecedented Precision

Climate science has experienced a remarkable transformation in 2026, with AI systems providing unprecedented insights into Earth's complex climate systems and enabling more accurate long-term predictions. The integration of machine learning with traditional climate models has created hybrid systems that can process massive amounts of atmospheric, oceanic, and terrestrial data to generate more reliable forecasts than ever before.

The European Centre for Medium-Range Weather Forecasts (ECMWF) has deployed an AI-enhanced climate model called "ClimateNet 2.0" that combines neural networks with physics-based simulations to predict climate patterns up to 50 years into the future. This system has demonstrated remarkable accuracy in forecasting extreme weather events, with prediction errors reduced by 35% compared to traditional models. The AI component excels at identifying subtle patterns in climate data that human scientists might overlook, particularly in regions with sparse monitoring infrastructure.

One of the most significant breakthroughs has been the development of AI systems capable of predicting regional climate impacts with unprecedented granularity. Researchers at MIT have created an AI platform called "GeoPredictor" that can forecast local climate effects at the neighborhood level, helping communities prepare for specific risks such as flooding, drought, or heat waves. This system has been particularly valuable in developing countries where climate monitoring infrastructure is limited, providing decision-makers with actionable information to protect vulnerable populations.

The AI revolution in climate science has also enabled more sophisticated understanding of feedback loops within the Earth system. Deep learning networks have identified previously unknown correlations between atmospheric chemistry, ocean currents, and land use patterns that contribute to climate change. These insights have led to more accurate projections of carbon cycle dynamics and improved estimates of the planet's carbon absorption capacity, informing international climate negotiations with greater precision.

Additionally, AI systems are now being used to optimize renewable energy deployment by predicting optimal locations for wind farms and solar installations based on detailed climate modeling. Companies like Siemens Energy have implemented AI-driven optimization platforms that can predict energy generation with 95% accuracy, significantly improving the economic viability of renewable energy projects and accelerating the transition to clean energy.

## Particle Physics: Unraveling the Universe's Deepest Secrets

The field of particle physics has witnessed an extraordinary transformation in 2026, with AI systems playing an increasingly crucial role in analyzing the vast amounts of data generated by modern particle accelerators and detectors. The Large Hadron Collider (LHC) at CERN, which produces petabytes of data annually, has become the testing ground for revolutionary AI applications that are helping scientists discover new particles and phenomena that were previously invisible to human analysis.

The breakthrough came with the development of "QuantumNet," an AI system specifically designed to identify rare particle interactions in the massive datasets generated by the LHC. This system employs quantum machine learning algorithms that can process data at speeds impossible for traditional computing methods, identifying potential new particles with a 92% accuracy rate. In 2026, QuantumNet contributed to the discovery of several new subatomic particles that may provide insights into dark matter and the fundamental structure of the universe.

AI has also revolutionized the way physicists design experiments and interpret results. The "ExperimentAI" platform developed by CERN allows researchers to simulate thousands of experimental scenarios in minutes, identifying the most promising approaches before committing valuable resources to actual experiments. This has led to a 60% reduction in experimental design time and has enabled more ambitious research projects that would have been considered too risky or expensive in previous decades.

Machine learning algorithms have proven particularly effective in analyzing neutrino data, where the particles interact so rarely that traditional detection methods often miss crucial information. AI systems can now identify subtle patterns in neutrino interactions that suggest new physics beyond the Standard Model, potentially leading to breakthrough discoveries about the fundamental nature of matter and energy.

The integration of AI with space-based particle detection has also yielded remarkable results. The AI-powered "CosmicWatcher" system, deployed on multiple satellites, can now track cosmic ray particles and their interactions with Earth's atmosphere with unprecedented precision. This has provided valuable insights into solar activity, space weather, and the behavior of particles in extreme gravitational fields, contributing to our understanding of both local and cosmic phenomena.

## Genomics: Decoding Life's Blueprint at Unprecedented Scale

The genomics field has experienced perhaps the most dramatic transformation in 2026, with AI systems enabling researchers to decode genetic information at scales and speeds that were unimaginable just a few years ago. The integration of machine learning with genomic sequencing has revolutionized our understanding of genetic variation, disease susceptibility, and evolutionary biology, opening new frontiers in personalized medicine and agricultural biotechnology.

One of the most significant achievements has been the development of AI systems capable of predicting gene function and regulation with remarkable accuracy. The "GenomePredictor 3.0" platform, developed by researchers at Harvard Medical School, can analyze entire genomes and predict how specific genetic variations will affect protein function, gene expression, and disease risk. This system has already identified over 10,000 genetic variants associated with previously unknown diseases, leading to the development of targeted therapies for conditions that were once considered incurable.

AI-driven genomics has also transformed the field of precision medicine, where treatment plans are now tailored
Český článek Run #1 · 3708 tok · 7.2 tok/s
**Titulek: Jak umělá inteligence transformuje české školství: Odborně, ale přístupně**

**Perex:**  
Umělá inteligence (AI) se postupně dostává do škol a vzdělávacích institucí, změňuje způsob, jakým se učíme, učíme a hodnotíme. V České republice se v posledních letech zvyšuje zájem o využití AI v školství – od automatizace úkolů a personalizovaného učení až po vytváření učebních materiálů. V tomto článku se podíváme na konkrétní příklady AI nástrojů, jejich výhody i rizika a zároveň se zamyslíme nad tím, jaké budoucnosti čeká české školství s AI.  

---

### Úvod: Umělá inteligence v školství – od teorie k praxi

V roce 2024 se české školství nachází na přechodníku mezi tradičním vzdělávacím modelem a novým, digitálním světem, kde umělá inteligence (AI) získává stále větší význam. Přestože je využití AI ve školství stále v počáteční fázi, rychle se rozšiřuje. V rámci evropského digitálního transformačního programu a zároveň v rámci českého národního plánu digitalizace vzdělávání se výuka s využitím AI stává neoddělitelnou součástí moderního vzdělávacího procesu.  

Nástroje jako ChatGPT, Google Gemini, Microsoft Copilot nebo vlastní AI systémy využívané školami (např. systémy pro personalizované učení) se stávají běžnými součástmi denního chodu ve školách. V tomto článku se podíváme na konkrétní příklady využití AI ve školství, výhody i rizika a zároveň se zamyslíme nad tím, jaké změny nás čekají v budoucnosti.

---

### 1. Využití AI v učení: Personalizace a adaptivní výuka

Jedním z největších přínosů AI ve školství je schopnost personalizovat výuku podle individuálních potřeb žáků. Systémy jako **Knewton**, **DreamBox** nebo **Carnegie Learning** využívají algoritmy, které sledují, jak žák řeší úkoly, a přizpůsobují učební materiály podle jeho výkonnosti. V České republice se také objevují vlastní řešení, například **Školní AI systémy**, které se zaměřují na výuku matematiky a češtiny.

AI může například rozpoznat, že žák má problémy s násobením, a automaticky mu přizpůsobí cvičení s jinými metodami, nebo mu předloží video vysvětlení v jiném stylu. Tento přístup se nazývá **adaptivní výuka** a zajišťuje, aby žák nezůstal „zaostalý“ nebo se nezbytečně „nepřetížil“.

V praxi to znamená, že žák si může učit ve vlastním tempu, s podporou inteligence, která v průběhu výuky sleduje jeho pokroky a upozorňuje učitele na problémy. Tato metoda je výrazně efektivnější než tradiční frontální výuka, kde všichni žáci postupují stejným tempem.

---

### 2. Učitelé a AI: Spolupráce, ne nahrazení

Mnoho lidí se obává, že AI nahradí učitele. Ve skutečnosti však AI neznamená „konec učitele“, ale spíše novou formu spolupráce. Učitelé mohou využít AI k tomu, aby se zaměřili na kreativní a emocionální aspekty výuky – tedy na vztahy, motivaci, empatii a kritické myšlení – zatímco AI se stará o opakované úkoly, jako jsou kontrola domácích úkolů, tvorba testů nebo poskytování informací.

V České republice se již několik škol vyzkouší využití AI v podobě **AI asistentů pro učitele**, které pomáhají s tvorbou prezentací, kontrolou textů, generováním otázek nebo přípravou pracovních listů. Například nástroj **Canva for Education** nebo **Grammarly for Education** se stávají běžnými nástroji, které učitelé používají ve výuce.

Příkladem je i systém **EduAI**, který se zaměřuje na podporu učitelů v přípravě výuky a výběru vhodných nástrojů pro různé věkové skupiny. V rámci pilotního projektu v několika základních školách se ukázalo, že učitelé se věnují více výuce, která vyžaduje lidský přístup, a méně rutinním úkolům.

---

### 3. Nové nástroje AI ve výuce: Jak to vypadá v praxi

V praxi se AI ve školství využívá v různých formách. Nástroje jako **ChatGPT**, **Gemini**, nebo **Claude** se stávají běžnými pomocníky pro žáky i učitele. Například žák může pomocí AI vytvořit rozpravní text, vysvětlit složité pojmy nebo se naučit češtinu, zatímco učitel může pomocí AI vygenerovat otázky pro kontrolní práci nebo zpětnou vazbu k domácímu úkolu.

V některých školách se využívají **AI výukové platformy**, které poskytují interaktivní učební materiály, například v oblasti informatiky, biologie nebo historie. Například platforma **Khan Academy** využívá AI k přizpůsobení učebního obsahu podle výkonnosti žáků. V České republice se v rámci pilotního projektu využívá i nástroj **Mentimeter**, který umožňuje interaktivní prezentace a kvízy, které mohou být automaticky vyhodnoceny AI.

V oblasti jazykové výuky se také objevují AI nástroje, které pomáhají žákům vylepšovat hovorové dovednosti, například **LinguaLift** nebo **Duolingo AI**, které využívají vlastní AI algoritmy pro výuku cizích jazyků.

---

### 4. Výhody AI ve školství: Efektivita, dostupnost a inovace

Výhody využití AI ve školství jsou mnohé. První z nich je **efektivita** – AI dokáže rychle zpracovat velké množství dat, což je velmi užitečné při hodnocení žáků, kontrolách a vytváření učebních materiálů. Například systém pro automatické hodnocení písemek může výrazně ušetřit učitelům čas, který můžou věnovat k výuce.

Druhá výhoda je **přístupnost** – AI nástroje mohou pomoci žákům s různými potřebami, například žákům se speciálními vzdělávacími potřebami. Například AI může přizpůsobit výuku pro žáky s poruchou učení nebo s narušením sluchu, vytvářet vizuální nebo hlasové výukové materiály.

Třetí výhodou je **inovace** – AI otevírá nové možnosti pro učení, například výukové simulace, virtuální reality, interaktivní učební prostředí. Například **Microsoft’s AI for Education** poskytuje nástroje pro vytváření virtuálních laboratoří, kde žáci mohou experimentovat s různými fyzikálními nebo chemickými procesy.

---

### 5. Rizika a etické otázky: Kdo kontroluje AI?

Přestože využití AI ve školství přináší mnoho výhod, není bez rizik. První problém je **kvalita informací**, které AI poskytuje. Například ChatGPT může vytvořit falešné informace nebo „zamlčet“ některé skutečnosti. Učitelé a žáci se musí naučit kriticky posuzovat informace, které dostanou od AI.

Druhý problém je **ochrana osobních údajů** – AI systémy shromažďují velké množství dat o žácích, včetně jejich výkonnosti, chování a preferencí. Pokud nejsou tyto údaje správně chráněny, mohou být využity k nekalým účelům.

Třetí riziko je **ztráta lidského kontaktu** – pokud se výuka stane příliš automatizovanou, může dojít k ztrátě empatie, motivace a sociální komunikace, které jsou zásadní pro kvalitní vzdělávání.

Z toho důvodu je důležité, aby školy při využívání AI přijaly **etické standardy** a zároveň vytvářely pravidla pro bezpečné a odpovědné využití těchto nástrojů.

---

### 6. Budoucnost výuky s AI: Co nás čeká?

V budoucnosti bude AI ve školství stále důležitější. Očekává se, že v několika letech bude každý žák mít přístup k **inteligentnímu učitelskému asistentovi**, který bude mít přehled o jeho výkonech, přizpůsobí učební materiály a bude vytvářet individuální cestu k učení.

Navíc se očekává rozšíření **výuky s využitím AI v rámci základních i středních škol**, kde bude AI podporovat nejen učení, ale i kreativní a kritické myšlení. Například AI může pomoci žákům při tvorbě projektů, výuce programování nebo výuce umění.

V České republice se již v rámci národního plánu digitalizace vzdělávání připravují **vzdělávací programy zaměřené na digitální dovednosti a AI**, které budou v budoucnosti součástí školního vzdělávacího programu. V rámci těchto programů se budou žáci učit, jak efektivně využívat AI, ale i jak ji kriticky posuzovat.

---

### Závěr: AI jako nástroj, nikoli cíl

Umělá inteligence ve školství není „konec učitele“, ale spíše nová forma podpory, která může zlepšit kvalitu výuky, přizpůsobit učení jednotlivcům a otevřít nové možnosti pro učení. V České republice se v tomto směru posouváme dopředu, ale zároveň je důležité, aby školství přijalo odpovědný přístup k využití AI – s ohledem na ochranu osobních údajů, kvalitu informací a udržení lidského kontaktu ve výuce.

Výuka s AI je nejen příležitostí, ale také zodpovědností. Je na nás, abychom se ujistili, že AI bude sloužit k tomu, aby žáci byli lepší, ne aby je nahradila. Ať už je to výuka, hodnocení, personalizace nebo inovace – AI nás přivede k lepšímu školství, pokud ji využijeme správně.

---

**Poznámka:** Tento článek vychází z aktuálních trendů ve vzdělávání a využití AI ve školách v rámci Evropy i České republiky. Všechny zmíněné nástroje a systémy byly vybrány na základě dostupných informací a praxí, které se v současnosti využívají ve vzdělávacích institucích.
Python galaxie Run #1 · 2841 tok · 8.4 tok/s
```python
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.colors as mcolors
import imageio
import os

# Set random seed for reproducibility
np.random.seed(42)

class GalaxyFlythrough:
    def __init__(self, num_stars=10000, num_frames=200):
        self.num_stars = num_stars
        self.num_frames = num_frames
        self.fig = plt.figure(figsize=(12, 10), dpi=100)
        self.ax = self.fig.add_subplot(111, projection='3d')
        self.ax.set_facecolor('black')
        self.fig.patch.set_facecolor('black')
        self.ax.xaxis.pane.fill = False
        self.ax.yaxis.pane.fill = False
        self.ax.zaxis.pane.fill = False
        self.ax.xaxis.pane.set_edgecolor('w')
        self.ax.yaxis.pane.set_edgecolor('w')
        self.ax.zaxis.pane.set_edgecolor('w')
        self.ax.xaxis.pane.set_alpha(0.1)
        self.ax.yaxis.pane.set_alpha(0.1)
        self.ax.zaxis.pane.set_alpha(0.1)
        
        # Generate galaxy data
        self.stars = self.generate_galaxy()
        self.dust_lanes = self.generate_dust_lanes()
        self.camera_path = self.generate_camera_path()
        
        # Animation variables
        self.frame = 0
        self.star_scatter = None
        self.dust_scatter = None
        
    def generate_galaxy(self):
        """Generate star positions in a spiral galaxy pattern"""
        # Generate spiral arms with some randomness
        stars = []
        temperatures = []
        
        for i in range(self.num_stars):
            # Spiral arm parameters
            arm = np.random.randint(0, 4)  # 4 arms
            angle = np.random.normal(0, 1) + arm * np.pi/2  # Spread across arms
            
            # Radial distribution (more stars closer to center, fewer further out)
            radius = np.random.exponential(2.0)
            
            # Add some spiral distortion
            angle += 0.2 * np.sin(radius * 0.5) * np.random.uniform(0.5, 1.5)
            
            x = radius * np.cos(angle)
            y = radius * np.sin(angle)
            z = np.random.normal(0, 0.2)  # Vertical distribution
            
            # Add some noise to make it look more realistic
            x += np.random.normal(0, 0.1)
            y += np.random.normal(0, 0.1)
            z += np.random.normal(0, 0.05)
            
            stars.append([x, y, z])
            
            # Temperature based on position (hotter near center, cooler further out)
            temp = 3000 + 10000 * (1 - min(radius/10, 1))
            temperatures.append(temp)
            
        return np.array(stars), np.array(temperatures)
    
    def generate_dust_lanes(self):
        """Generate dust lanes in the galaxy"""
        lanes = []
        num_lanes = 8
        
        for i in range(num_lanes):
            # Create curved dust lanes
            t = np.linspace(0, 2*np.pi, 100)
            lane = []
            
            for j in range(100):
                angle = t[j] + i * np.pi/4 + np.random.normal(0, 0.1)
                radius = 2 + 3 * np.sin(3 * t[j] + i * np.pi/4) + np.random.normal(0, 0.3)
                x = radius * np.cos(angle)
                y = radius * np.sin(angle)
                z = np.random.normal(0, 0.1)  # Very thin dust lanes
                
                lane.append([x, y, z])
            
            lanes.append(np.array(lane))
            
        return lanes
    
    def generate_camera_path(self):
        """Generate smooth camera path for flythrough"""
        # Create a circular path with some vertical movement
        t = np.linspace(0, 4*np.pi, self.num_frames)
        path = []
        
        for i in range(self.num_frames):
            # Circular motion with spiral movement
            radius = 8 + 2 * np.sin(t[i] * 0.5)
            x = radius * np.cos(t[i])
            y = radius * np.sin(t[i])
            z = 2 * np.sin(t[i] * 0.3)  # Vertical oscillation
            
            # Add some randomness to make it more interesting
            x += np.random.normal(0, 0.5)
            y += np.random.normal(0, 0.5)
            z += np.random.normal(0, 0.2)
            
            path.append([x, y, z])
            
        return np.array(path)
    
    def get_star_color(self, temperature):
        """Convert temperature to RGB color"""
        # Normalize temperature (3000K to 25000K)
        temp_norm = (temperature - 3000) / (25000 - 3000)
        
        # Create color map from blue to red
        if temp_norm < 0.2:
            # Blue to blue-white
            r = 0.2
            g = 0.3 + 0.5 * temp_norm / 0.2
            b = 0.8 + 0.2 * temp_norm / 0.2
        elif temp_norm < 0.6:
            # White to yellow-white
            r = 0.8 + 0.2 * (temp_norm - 0.2) / 0.4
            g = 0.8 + 0.2 * (temp_norm - 0.2) / 0.4
            b = 0.8 - 0.6 * (temp_norm - 0.2) / 0.4
        else:
            # Yellow to red
            r = 0.8 + 0.2 * (temp_norm - 0.6) / 0.4
            g = 0.6 - 0.4 * (temp_norm - 0.6) / 0.4
            b = 0.2 - 0.2 * (temp_norm - 0.6) / 0.4
            
        return [r, g, b]
    
    def update_frame(self, frame):
        """Update function for animation"""
        self.frame = frame
        
        # Clear previous plot
        self.ax.clear()
        
        # Set camera position and look direction
        camera_pos = self.camera_path[frame]
        look_at = self.camera_path[(frame + 10) % self.num_frames] if frame + 10 < self.num_frames else self.camera_path[0]
        
        # Set view
        self.ax.set_xlim(-15, 15)
        self.ax.set_ylim(-15, 15)
        self.ax.set_zlim(-5, 5)
        
        # Set camera position
        self.ax.view_init(elev=10, azim=frame * 2)
        
        # Plot stars
        if self.star_scatter:
            self.star_scatter.remove()
            
        star_positions, temperatures = self.stars
        star_colors = [self.get_star_color(temp) for temp in temperatures]
        
        # Plot stars with size based on temperature (larger for hotter stars)
        sizes = 5 + 15 * (temperatures - 3000) / (25000 - 3000)
        
        self.star_scatter = self.ax.scatter(
            star_positions[:, 0], 
            star_positions[:, 1], 
            star_positions[:, 2],
            c=star_colors,
            s=sizes,
            alpha=0.7,
            edgecolors='white',
            linewidth=0.1
        )
        
        # Plot dust lanes
        if self.dust_scatter:
            self.dust_scatter.remove()
            
        dust_colors = plt.cm.Greys(np.linspace(0.3, 0.8, len(self.dust_lanes)))
        
        for i, lane in enumerate(self.dust_lanes):
            if len(lane) > 0:
                # Add some randomness to make lanes look more natural
                lane = lane + np.random.normal(0, 0.1, lane.shape)
                self.ax.plot(lane[:, 0], lane[:, 1], lane[:, 2], 
                           color=dust_colors[i], alpha=0.3, linewidth=1)
        
        # Add some background stars (very faint)
        background_stars = np.random.normal(0, 20, (500, 3))
        self.ax.scatter(background_stars[:, 0], background_stars[:, 1], background_stars[:, 2], 
                       c='white', s=0.5, alpha=0.3)
        
        # Set title and labels
        self.ax.set_title(f'Galaxy Flythrough - Frame {frame}', color='white', fontsize=12)
        self.ax.set_xlabel('X (kpc)', color='white')
        self.ax.set_ylabel('Y (kpc)', color='white')
        self.ax.set_zlabel('Z (kpc)', color='white')
        
        # Set tick colors
        self.ax.tick_params(colors='white')
        self.ax.xaxis.label.set_color('white')
        self.ax.yaxis.label.set_color('white')
        self.ax.zaxis.label.set_color('white')
        
        # Set face color to black
        self.ax.xaxis.pane.fill = False
        self.ax.yaxis.pane.fill = False
        self.ax.zaxis.pane.fill = False
        
        return self.star_scatter,
    
    def create_animation(self):
        """Create the animation"""
        print("Creating galaxy flythrough animation...")
        
        # Create animation
        self.ani = FuncAnimation(
            self.fig, 
            self.update_frame, 
            frames=self.num_frames,
            interval=50,
            blit=False,
            repeat=True
        )
        
        return self.ani
    
    def save_animation(self, filename):
        """Save animation as MP4 and GIF"""
        print(f"Saving animation as {filename}...")
        
        # Save as MP4
        mp4_filename = filename.replace('.gif', '.mp4')
        self.ani.save(mp4_filename, writer='ffmpeg', fps=20)
        print(f"Saved MP4: {mp4_filename}")
        
        # Save as GIF
        gif_filename = filename
        self.ani.save(gif_filename, writer='pillow', fps=20)
        print(f"Saved GIF: {gif_filename}")

def main():
    # Create galaxy flythrough
    galaxy = GalaxyFlythrough(num_stars=10000, num_frames=200)
    
    # Create animation
    ani = galaxy.create_animation()
    
    # Save animation
    try:
        galaxy.save_animation('galaxy_flythrough.gif')
        print("Animation saved successfully!")
    except Exception as e:
        print(f"Error saving animation: {e}")
        print("Make sure you have ffmpeg installed for MP4 export")
        print("For MP4 export, install: conda install -c conda-forge ffmpeg")
        
    # Show the final frame
    plt.show()

if __name__ == "__main__":
    main()
```

This Python script creates a stunning 3D galaxy flythrough visualization with the following features:

## Key Features:

1. **Realistic Spiral Galaxy**: Generates 10,000 stars in a spiral pattern with realistic arm structure
2. **Temperature-based Star Colors**: Stars range from blue (hot) to red (cool) based on their temperature
3. **Dust Lanes**: Eight curved dust lanes throughout the galaxy
4. **Smooth Camera Flythrough**: Camera moves in a c
HTML/JS animace Run #1 · 2308 tok · 8.8 tok/s
# Interactive 3D Galaxy Particle Animation

I'll create an immersive galaxy animation with 5000 colorful particles, responsive to mouse movement, with a starfield background and FPS counter.

```html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Interactive 3D Galaxy Animation</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/three@0.128.0/examples/js/controls/OrbitControls.min.js"></script>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        
        body {
            overflow: hidden;
            background: #000;
            font-family: 'Arial', sans-serif;
            color: white;
        }
        
        #container {
            position: relative;
            width: 100vw;
            height: 100vh;
        }
        
        #fps-counter {
            position: absolute;
            top: 20px;
            right: 20px;
            background: rgba(0, 0, 0, 0.7);
            padding: 10px 15px;
            border-radius: 10px;
            font-size: 14px;
            z-index: 100;
        }
        
        #title {
            position: absolute;
            top: 20px;
            left: 20px;
            background: rgba(0, 0, 0, 0.7);
            padding: 15px 20px;
            border-radius: 10px;
            font-size: 24px;
            z-index: 100;
            text-align: center;
        }
        
        #instructions {
            position: absolute;
            bottom: 20px;
            left: 50%;
            transform: translateX(-50%);
            background: rgba(0, 0, 0, 0.7);
            padding: 10px 20px;
            border-radius: 10px;
            font-size: 14px;
            text-align: center;
            z-index: 100;
        }
        
        canvas {
            display: block;
        }
    </style>
</head>
<body>
    <div id="container">
        <div id="title">3D Galaxy Particle System</div>
        <div id="fps-counter">FPS: 0</div>
        <div id="instructions">Move your mouse to tilt the galaxy | Click and drag to rotate</div>
    </div>

    <script>
        // Main variables
        let scene, camera, renderer, particles, controls;
        let mouseX = 0, mouseY = 0;
        let windowHalfX = window.innerWidth / 2;
        let windowHalfY = window.innerHeight / 2;
        let clock = new THREE.Clock();
        let stats = { fps: 0, lastTime: 0 };
        
        // Initialize the scene
        function init() {
            // Create scene
            scene = new THREE.Scene();
            scene.background = new THREE.Color(0x000011);
            
            // Create camera
            camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 2000);
            camera.position.z = 500;
            
            // Create renderer
            renderer = new THREE.WebGLRenderer({ antialias: true });
            renderer.setSize(window.innerWidth, window.innerHeight);
            renderer.setPixelRatio(window.devicePixelRatio);
            document.getElementById('container').appendChild(renderer.domElement);
            
            // Add orbit controls
            controls = new THREE.OrbitControls(camera, renderer.domElement);
            controls.enableDamping = true;
            controls.dampingFactor = 0.05;
            controls.rotateSpeed = 0.5;
            
            // Create galaxy particles
            createGalaxy();
            
            // Create starfield background
            createStarfield();
            
            // Add event listeners
            document.addEventListener('mousemove', onDocumentMouseMove);
            window.addEventListener('resize', onWindowResize);
            
            // Start animation loop
            animate();
        }
        
        // Create galaxy particles
        function createGalaxy() {
            const particleCount = 5000;
            const galaxyRadius = 300;
            const armCount = 4;
            const armWidth = 0.5;
            
            // Create particle geometry
            const geometry = new THREE.BufferGeometry();
            const positions = new Float32Array(particleCount * 3);
            const colors = new Float32Array(particleCount * 3);
            const sizes = new Float32Array(particleCount);
            
            // Create particles in spiral arms
            for (let i = 0; i < particleCount; i++) {
                const radius = Math.random() * galaxyRadius;
                const angle = Math.random() * Math.PI * 2;
                
                // Create spiral arms
                const armAngle = angle + Math.sin(radius / 50) * 0.5;
                const spiralRadius = radius * (0.8 + Math.sin(radius / 30) * 0.2);
                
                const x = Math.cos(armAngle) * spiralRadius;
                const y = Math.sin(armAngle) * spiralRadius;
                const z = (Math.random() - 0.5) * 20;
                
                positions[i * 3] = x;
                positions[i * 3 + 1] = y;
                positions[i * 3 + 2] = z;
                
                // Color based on position
                const color = new THREE.Color();
                const hue = (radius / galaxyRadius) * 0.3 + 0.5;
                color.setHSL(hue, 1, 0.5);
                
                colors[i * 3] = color.r;
                colors[i * 3 + 1] = color.g;
                colors[i * 3 + 2] = color.b;
                
                // Size based on distance from center
                sizes[i] = 1 + Math.random() * 3;
            }
            
            geometry.setAttribute('position', new THREE.BufferAttribute(positions, 3));
            geometry.setAttribute('color', new THREE.BufferAttribute(colors, 3));
            geometry.setAttribute('size', new THREE.BufferAttribute(sizes, 1));
            
            // Create material
            const material = new THREE.PointsMaterial({
                size: 2,
                vertexColors: true,
                transparent: true,
                opacity: 0.8,
                sizeAttenuation: true
            });
            
            // Create particle system
            particles = new THREE.Points(geometry, material);
            scene.add(particles);
        }
        
        // Create starfield background
        function createStarfield() {
            const starCount = 10000;
            const starGeometry = new THREE.BufferGeometry();
            const starPositions = new Float32Array(starCount * 3);
            
            for (let i = 0; i < starCount; i++) {
                const radius = 500 + Math.random() * 1000;
                const theta = Math.random() * Math.PI * 2;
                const phi = Math.acos(2 * Math.random() - 1);
                
                const x = radius * Math.sin(phi) * Math.cos(theta);
                const y = radius * Math.sin(phi) * Math.sin(theta);
                const z = radius * Math.cos(phi);
                
                starPositions[i * 3] = x;
                starPositions[i * 3 + 1] = y;
                starPositions[i * 3 + 2] = z;
            }
            
            starGeometry.setAttribute('position', new THREE.BufferAttribute(starPositions, 3));
            
            const starMaterial = new THREE.PointsMaterial({
                color: 0xffffff,
                size: 1.5,
                sizeAttenuation: true
            });
            
            const stars = new THREE.Points(starGeometry, starMaterial);
            scene.add(stars);
        }
        
        // Mouse move handler
        function onDocumentMouseMove(event) {
            mouseX = (event.clientX - windowHalfX) * 0.001;
            mouseY = (event.clientY - windowHalfY) * 0.001;
        }
        
        // Window resize handler
        function onWindowResize() {
            camera.aspect = window.innerWidth / window.innerHeight;
            camera.updateProjectionMatrix();
            renderer.setSize(window.innerWidth, window.innerHeight);
            windowHalfX = window.innerWidth / 2;
            windowHalfY = window.innerHeight / 2;
        }
        
        // Animation loop
        function animate() {
            requestAnimationFrame(animate);
            
            // Update FPS counter
            const delta = clock.getDelta();
            stats.fps = Math.round(1 / delta);
            document.getElementById('fps-counter').textContent = `FPS: ${stats.fps}`;
            
            // Rotate particles
            if (particles) {
                particles.rotation.x += 0.0005;
                particles.rotation.y += 0.001;
            }
            
            // Tilt based on mouse position
            if (camera) {
                camera.position.x += (mouseX * 10 - camera.position.x) * 0.05;
                camera.position.y += (-mouseY * 10 - camera.position.y) * 0.05;
                camera.lookAt(scene.position);
            }
            
            // Update controls
            controls.update();
            
            // Render scene
            renderer.render(scene, camera);
        }
        
        // Start everything
        init();
    </script>
</body>
</html>
```

## Features of this Galaxy Animation:

1. **5000 Colorful Particles**: Created in a spiral galaxy pattern with varying colors and sizes
2. **Interactive Controls**:
   - Mouse movement tilts the galaxy
   - Click and drag to rotate the view
3. **Starfield Background**: 10,000 stars in a distant background
4. **FPS Counter**: Displays real-time frame rate in the top-right corner
5. **Responsive Design**: Adapts to any screen size
6. **Smooth Animations**: Optimized with requestAnimationFrame and damping controls
7. **Visual Effects**:
   - Particle sizes vary bas
PHP Drupal modul Run #1 · 1111 tok · 10.3 tok/s
Here's a complete Drupal 11 module called "hello_world_benchmark" with all the requested components:

### 1. hello_world_benchmark.info.yml
```yaml
name: Hello World Benchmark
type: module
description: A simple benchmark module for demonstration purposes
core_version_requirement: ^11
package: Custom
```

### 2. hello_world_benchmark.routing.yml
```yaml
hello_world_benchmark.hello:
  path: '/hello-world-benchmark'
  defaults:
    _controller: '\Drupal\hello_world_benchmark\Controller\HelloWorldController::hello'
    _title: 'Hello World Benchmark'
  requirements:
    _access: 'TRUE'
```

### 3. src/Controller/HelloWorldController.php
```php
<?php

namespace Drupal\hello_world_benchmark\Controller;

use Drupal\Core\Controller\ControllerBase;
use Symfony\Component\HttpFoundation\Response;

/**
 * Hello world controller.
 */
class HelloWorldController extends ControllerBase {

  /**
   * Returns a simple hello world message.
   */
  public function hello(): Response {
    return new Response('Hello World from AI Arena benchmark!');
  }

}
```

### 4. src/Service/HelloWorldBenchmarkService.php
```php
<?php

namespace Drupal\hello_world_benchmark\Service;

/**
 * Simple benchmark service.
 */
class HelloWorldBenchmarkService {

  /**
   * The service name.
   */
  public readonly string $name;

  /**
   * Constructs a new HelloWorldBenchmarkService object.
   */
  public function __construct() {
    $this->name = 'hello_world_benchmark_service';
  }

  /**
   * Returns the service name.
   */
  public function getName(): string {
    return $this->name;
  }

}
```

### 5. hello_world_benchmark.services.yml
```yaml
services:
  hello_world_benchmark.service:
    class: Drupal\hello_world_benchmark\Service\HelloWorldBenchmarkService
    public: true
```

### 6. hello_world_benchmark.install
```php
<?php

/**
 * @file
 * Install, update and uninstall functions for the hello_world_benchmark module.
 */

use Drupal\Core\Database\Database;

/**
 * Implements hook_schema().
 */
function hello_world_benchmark_schema(array &$schema) {
  $schema['hello_benchmark_messages'] = [
    'description' => 'Stores benchmark messages.',
    'fields' => [
      'id' => [
        'description' => 'The primary identifier for a message.',
        'type' => 'serial',
        'unsigned' => TRUE,
        'not null' => TRUE,
      ],
      'message' => [
        'description' => 'The benchmark message.',
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => '',
      ],
      'created' => [
        'description' => 'The timestamp when the message was created.',
        'type' => 'timestamp',
        'not null' => TRUE,
        'default' => 0,
      ],
      'status' => [
        'description' => 'The status of the message.',
        'type' => 'int',
        'unsigned' => TRUE,
        'not null' => TRUE,
        'default' => 1,
      ],
    ],
    'primary key' => ['id'],
    'indexes' => [
      'created' => ['created'],
      'status' => ['status'],
    ],
  ];
}
```

### 7. hello_world_benchmark.module
```php
<?php

/**
 * @file
 * Main module file for hello_world_benchmark.
 */

/**
 * Implements hook_help().
 */
function hello_world_benchmark_help($route_name, \Drupal\Core\Routing\RouteMatchInterface $route_match) {
  switch ($route_name) {
    case 'hello_world_benchmark.hello':
      return '<p>' . t('This is a simple benchmark module that displays a hello world message.') . '</p>';
  }
}
```

### Directory Structure
```
modules/custom/hello_world_benchmark/
├── hello_world_benchmark.info.yml
├── hello_world_benchmark.routing.yml
├── hello_world_benchmark.services.yml
├── hello_world_benchmark.install
├── hello_world_benchmark.module
└── src/
    ├── Controller/
    │   └── HelloWorldController.php
    └── Service/
        └── HelloWorldBenchmarkService.php
```

### Key Features:

1. **Proper Drupal 11 Namespacing**: Uses `Drupal\hello_world_benchmark` namespace
2. **PHP 8.3 Syntax**: Uses readonly properties in service class
3. **Routing**: Defines `/hello-world-benchmark` route
4. **Controller**: Returns "Hello World from AI Arena benchmark!" message
5. **Service**: Includes a simple service with readonly property
6. **Database Schema**: Creates `hello_benchmark_messages` table with proper fields and indexes
7. **Module Structure**: Follows Drupal 11 module structure conventions

To install:
1. Place the module in `modules/custom/hello_world_benchmark`
2. Enable the module via `drush en hello_world_benchmark` or admin UI
3. Visit `/hello-world-benchmark` to see the message
4. The database table will be created automatically during installation
X

Nezmeškejte novinky!

Přihlaste se k odběru novinek a aktualit.