Rainbow galaxy
How do I make an rainbow galaxy?
Trying to remake this image, failed miserably, but still got somehting cool :D !(http://hd4desktop.com/images/m/a-colours-circle-rainbow-HD-Wallpaper.jpg). What is a rainbow galaxy? How do you make a rainbow galaxy? This script and codes were developed by Matei Copot on 12 June 2022, Sunday.
Rainbow galaxy - Script Codes HTML Codes
<!DOCTYPE html>
<html >
<head> <meta charset="UTF-8"> <title>rainbow galaxy</title> <style> /* NOTE: The styles were added inline because Prefixfree needs access to your styles and they must be inlined if they are on local disk! */ body { overflow: hidden;
}
canvas { position: absolute; top: 0; left: 0; background-color: black;
}
a { width: 200px; height: 200px; position: absolute; left: calc( 100% - 200px ); top: calc( 100% - 130px );
}
img { width: 200px;
} </style> <script src="https://cdnjs.cloudflare.com/ajax/libs/prefixfree/1.0.7/prefixfree.min.js"></script>
</head>
<body> <canvas id=c></canvas>
<a href=http://hd4desktop.com/669-colours-circle-rainbow-hd-wallpaper/><img src=http://hd4desktop.com/images/m/a-colours-circle-rainbow-HD-Wallpaper.jpg ></a> <script src='https://cdnjs.cloudflare.com/ajax/libs/dat-gui/0.5.1/dat.gui.min.js'></script> <script src="js/index.js"></script>
</body>
</html>
Rainbow galaxy - Script Codes CSS Codes
body { overflow: hidden;
}
canvas { position: absolute; top: 0; left: 0; background-color: black;
}
a { width: 200px; height: 200px; position: absolute; left: calc( 100% - 200px ); top: calc( 100% - 130px );
}
img { width: 200px;
}
Rainbow galaxy - Script Codes JS Codes
// base image: http://hd4desktop.com/images/m/a-colours-circle-rainbow-HD-Wallpaper.jpg
var w = c.width = window.innerWidth, h = c.height = window.innerHeight, ctx = c.getContext( '2d' ), opts = { lineCount: 100, starCount: 30, radVel: .01, lineBaseVel: .1, lineAddedVel: .1, lineBaseLife: .4, lineAddedLife: .01, starBaseLife: 10, starAddedLife: 10, ellipseTilt: -.3, ellipseBaseRadius: .15, ellipseAddedRadius: .02, ellipseAxisMultiplierX: 2, ellipseAxisMultiplierY: 1, ellipseCX: w / 2, ellipseCY: h / 2, repaintAlpha: .015 }, gui = new dat.GUI, lines = [], stars = [], tick = 0, first = true;
function init() { lines.length = stars.length = 0; ctx.globalCompositeOperation = 'source-over'; ctx.fillStyle = '#333'; ctx.fillRect( 0, 0, w, h ); if( first ) { var f = gui.addFolder( 'logics' ); f.add( opts, 'lineCount', 1, 300 ); f.add( opts, 'starCount', 1, 300 ); f.add( opts, 'radVel', 0, 1 ); f.add( opts, 'lineBaseVel', .01, 1 ); f.add( opts, 'lineAddedVel', 0, 1 ); f.add( opts, 'lineBaseLife', 0, 1 ); f.add( opts, 'lineAddedLife', 0, 1 ); f.add( opts, 'starBaseLife', 0, 100 ); f.add( opts, 'starAddedLife', 0, 100 ); f = gui.addFolder( 'graphics' ); f.add( opts, 'ellipseTilt', -Math.PI, Math.PI ).step( .1 ); f.add( opts, 'ellipseBaseRadius', 0, .5 ); f.add( opts, 'ellipseAddedRadius', 0, .5 ); f.add( opts, 'ellipseAxisMultiplierX', 0, 3 ); f.add( opts, 'ellipseAxisMultiplierY', 0, 3 ); f.add( opts, 'ellipseCX', 0, w ); f.add( opts, 'ellipseCY', 0, h ); f.add( opts, 'repaintAlpha', 0, 1 ); gui.add( window, 'init' ).name( 'reset animation' ); gui.add( window, 'LuukLamers' ); loop(); first = false; }
}
function loop() { window.requestAnimationFrame( loop ); step(); draw();
}
function step() { tick += .5; if( lines.length < opts.lineCount && Math.random() < .5 ) lines.push( new Line ); if( stars.length < opts.starCount ) stars.push( new Star ); lines.map( function( line ) { line.step(); } ); stars.map( function( star ) { star.step(); } );
}
function draw() { ctx.shadowBlur = 0; ctx.globalCompositeOperation = 'source-over'; ctx.fillStyle = 'rgba(0,0,0,alp)'.replace( 'alp', opts.repaintAlpha ); ctx.fillRect( 0, 0, w, h ); ctx.globalCompositeOperation = 'lighter'; ctx.translate( opts.ellipseCX, opts.ellipseCY ); ctx.rotate( opts.ellipseTilt ); ctx.scale( opts.ellipseAxisMultiplierX, opts.ellipseAxisMultiplierY ); // ctx.shadowBlur here almost does nothing lines.map( function( line ) { line.draw(); } ); ctx.scale( 1/opts.ellipseAxisMultiplierX, 1/opts.ellipseAxisMultiplierY ); ctx.rotate( -opts.ellipseTilt ); ctx.translate( -opts.ellipseCX, -opts.ellipseCY ); stars.map( function( star ) { star.draw(); } );
}
function Line() { this.reset();
}
Line.prototype.reset = function() { this.rad = Math.random() * Math.PI * 2, this.len = w * ( opts.ellipseBaseRadius + Math.random() * opts.ellipseAddedRadius ); this.lenVel = opts.lineBaseVel + Math.random() * opts.lineAddedVel; this.x = this.px = Math.cos( this.rad ) * this.len; this.y = this.py = Math.sin( this.rad ) * this.len; this.life = this.originalLife = w * ( opts.lineBaseLife + Math.random() * opts.lineAddedLife ); this.alpha = .2 + Math.random() * .8;
}
Line.prototype.step = function() { --this.life; var ratio = 1 - .1 * this.life / this.originalLife; this.px = this.x; this.py = this.y; this.rad += opts.radVel; this.len -= this.lenVel; this.x = Math.cos( this.rad ) * this.len; this.y = Math.sin( this.rad ) * this.len; if( this.life <= 0 ) this.reset();
}
Line.prototype.draw = function() { var ratio = Math.abs( this.life / this.originalLife - 1/2 ); ctx.lineWidth = ratio * 5; ctx.strokeStyle = ctx.shadowColor = 'hsla(hue, 80%, light%, alp)' .replace( 'hue', tick + this.x / ( w * ( opts.ellipseBaseRadius + opts.ellipseAddedRadius ) ) * 100 ) .replace( 'light', 75 - ratio * 150 ) .replace( 'alp', this.alpha ); ctx.beginPath(); ctx.moveTo( this.px, this.py ); ctx.lineTo( this.x, this.y ); ctx.stroke();
}
function Star() { this.reset();
};
Star.prototype.reset = function() { this.x = Math.random() * w; this.y = Math.random() * h; this.life = opts.starBaseLife + Math.random() * opts.starAddedLife;
}
Star.prototype.step = function() { --this.life; if( this.life <= 0 ) this.reset();
}
Star.prototype.draw = function(){ ctx.fillStyle = ctx.shadowColor = 'hsla(hue, 80%, 50%, .2)' .replace( 'hue', tick + this.x / w * 100 ); ctx.shadowBlur = this.life; ctx.fillRect( this.x, this.y, 1, 1 );
};
window.addEventListener( 'resize', function() { w = c.width = window.innerWidth; h = c.height = window.innerHeight; opts.ellipseCX = w / 2; opts.ellipseCY = h / 2; init();
} );
function LuukLamers() { var i = 0, array = [ 300, 74, 0.04, 0.1, 0.1, .55, 10, 100, 10, -.15, .18, .01, 3, 1, w / 2, h / 2, 0.02 ]; for( var key in opts ) { opts[ key ] = array[ i ]; ++i; } init();
}
init();
Developer | Matei Copot |
Username | towc |
Uploaded | June 12, 2022 |
Rating | 4.5 |
Size | 3,633 Kb |
Views | 40,480 |
Find the perfect freelance services for your business! Fiverr's mission is to change how the world works together. Fiverr connects businesses with freelancers offering digital services in 500+ categories. Find Developer!
Name | Size |
Rotating tunnel of rainbowness | 2,885 Kb |
Rainbow transfer | 2,566 Kb |
Binary spiral | 2,370 Kb |
Swirly electric rainbow lines | 2,505 Kb |
Neon hexagon-forming particles | 2,821 Kb |
Organic lines of staring-atness | 2,415 Kb |
Neural Network visualization | 4,562 Kb |
Plasma background | 3,338 Kb |
Progression of ideas through willpower and motivation | 2,968 Kb |
Rainbow rain | 2,171 Kb |
Jasper is the AI Content Generator that helps you and your team break through creative blocks to create amazing, original content 10X faster. Discover all the ways the Jasper AI Content Platform can help streamline your creative workflows. Start For Free!
Name | Username | Size |
Flying Bee | Pwsm50 | 3,711 Kb |
Awesome Full Page Menu Nav | Ey_intuitive | 4,194 Kb |
Sort the Knowlege | Eprouver | 3,915 Kb |
A Pen by Jim Savage | Madebyjam | 2,418 Kb |
Learning canvas drawing | Aurer | 2,204 Kb |
NT Tribute | Skybutterfly | 2,850 Kb |
Incremental game | Eprouver | 5,868 Kb |
Gradients | Karpovsystems | 2,394 Kb |
Highbrow Basic HTML Lesson 7 | Kimlarocca | 1,662 Kb |
Multi-step GSAP animation | Acacheung | 2,668 Kb |
Surf anonymously, prevent hackers from acquiring your IP address, send anonymous email, and encrypt your Internet connection. High speed, ultra secure, and easy to use. Instant setup. Hide Your IP Now!