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
shapes.js
js/shapes.js
Raw Download
Find: Go to:
/* V7 Shape Logic */
import { getJitter } from './utils.js';

export function drawStarPath(ctx, spikes, outerRadius, innerRadius, curveVal, twistVal) {
    let rot = Math.PI / 2 * 3;
    const step = Math.PI / spikes;
    const twistRad = (twistVal * Math.PI) / 180;

    ctx.beginPath();
    ctx.moveTo(0 + getJitter(), -outerRadius + getJitter());

    for (let i = 0; i < spikes; i++) {
        let twistedInnerRot = rot + step + twistRad;
        let innerX = Math.cos(twistedInnerRot) * innerRadius + getJitter();
        let innerY = Math.sin(twistedInnerRot) * innerRadius + getJitter();

        if (curveVal === 0) {
            ctx.lineTo(innerX, innerY);
        } else {
            let cpAngle = (rot + twistedInnerRot) / 2;
            let cpR = (outerRadius + innerRadius) / 2 + curveVal;
            let cpX = Math.cos(cpAngle) * cpR + getJitter();
            let cpY = Math.sin(cpAngle) * cpR + getJitter();
            ctx.quadraticCurveTo(cpX, cpY, innerX, innerY);
        }

        rot += step;

        let outerRot = rot + step;
        let outerX = Math.cos(outerRot) * outerRadius + getJitter();
        let outerY = Math.sin(outerRot) * outerRadius + getJitter();

        if (curveVal === 0) {
            ctx.lineTo(outerX, outerY);
        } else {
            let cpAngle = (rot + twistRad + outerRot) / 2;
            let cpR = (outerRadius + innerRadius) / 2 + curveVal;
            let cpX = Math.cos(cpAngle) * cpR + getJitter();
            let cpY = Math.sin(cpAngle) * cpR + getJitter();
            ctx.quadraticCurveTo(cpX, cpY, outerX, outerY);
        }

        rot += step;
    }

    ctx.closePath();
}
48 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