help@rskworld.in +91 93305 39277
RSK World
  • Home
  • Development
    • Web Development
    • Mobile Apps
    • Software
    • Games
    • Project
  • Technologies
    • Data Science
    • AI Development
    • Cloud Development
    • Blockchain
    • Cyber Security
    • Dev Tools
    • Testing Tools
  • About
  • Contact

Theme Settings

Color Scheme
Display Options
Font Size
100%
Back to Project
RSK World
star-pattern-maker
/
js
RSK World
star-pattern-maker
Star Pattern Maker - HTML5 Canvas + 3D Rendering + Physics Simulation + AI Patterns + Generative Audio + Modern UI + Glassmorphism Design
js
  • 3d-engine.js3.8 KB
  • ai-patterns.js5.6 KB
  • animations.js1.4 KB
  • audio.js1.3 KB
  • controls.js12.2 KB
  • export.js3.9 KB
  • filters.js3.5 KB
  • fractals.js3.5 KB
  • gallery.js2.5 KB
  • main.js1.9 KB
  • particles.js1.4 KB
  • physics.js1.7 KB
  • presets.js2.8 KB
  • randomizer.js1.4 KB
  • renderer.js7 KB
  • shaders.js6.5 KB
  • shapes.js1.7 KB
  • sound-gen.js4.4 KB
  • state.js1.9 KB
  • symmetry.js3.9 KB
  • themes.js1.4 KB
  • timeline.js4.2 KB
  • utils.js546 B
physics.js
js/physics.js
Raw Download
Find: Go to:
/* V12 Physics Module */
import { state } from './state.js';

// Gravity state (persistent)
let velocityX = 0;
let velocityY = 0;
let offsetX = 0;
let offsetY = 0;

/**
 * Apply gravity pull toward mouse position
 * Returns offset to apply to star position
 */
export function applyGravity(canvasWidth, canvasHeight) {
    if (!state.gravityEnabled) {
        // Reset when disabled
        velocityX *= 0.95;
        velocityY *= 0.95;
        offsetX *= 0.95;
        offsetY *= 0.95;
        return { x: offsetX, y: offsetY };
    }

    // Target position (mouse or center)
    const targetX = state.mouseX || 0;
    const targetY = state.mouseY || 0;

    // Calculate attraction force
    const dx = targetX - offsetX;
    const dy = targetY - offsetY;
    const distance = Math.sqrt(dx * dx + dy * dy);

    if (distance > 5) {
        const force = 0.02; // Gravity strength
        const ax = (dx / distance) * force;
        const ay = (dy / distance) * force;

        velocityX += ax;
        velocityY += ay;
    }

    // Apply friction
    velocityX *= 0.98;
    velocityY *= 0.98;

    // Update position
    offsetX += velocityX;
    offsetY += velocityY;

    return { x: offsetX, y: offsetY };
}

/**
 * Calculate orbital position around center
 */
export function calculateOrbit(time, radius = 100) {
    if (!state.orbitEnabled) return { x: 0, y: 0 };

    const speed = 0.001; // Orbit speed
    const angle = time * speed;

    return {
        x: Math.cos(angle) * radius,
        y: Math.sin(angle) * radius
    };
}

/**
 * Reset physics state
 */
export function resetPhysics() {
    velocityX = 0;
    velocityY = 0;
    offsetX = 0;
    offsetY = 0;
}
77 lines•1.7 KB
javascript

About RSK World

Founded by Molla Samser, with Designer & Tester Rima Khatun, RSK World is your one-stop destination for free programming resources, source code, and development tools.

Founder: Molla Samser
Designer & Tester: Rima Khatun

Development

  • Game Development
  • Web Development
  • Mobile Development
  • AI Development
  • Development Tools

Legal

  • Terms & Conditions
  • Privacy Policy
  • Disclaimer

Contact Info

Nutanhat, Mongolkote
Purba Burdwan, West Bengal
India, 713147

+91 93305 39277

hello@rskworld.in
support@rskworld.in

© 2026 RSK World. All rights reserved.

Content used for educational purposes only. View Disclaimer