Red Moon 3D
Simple model
of the recent Moon Eclipse in 3D Space. The model uses an actual picture of the red moon to recreate eclipse effect.
by brady houseknecht
HTML
<script src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/297733/Three.js"></script>
<script src="https://code.jquery.com/jquery-1.6.4.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.13/jquery.mousewheel.min.js"></script>
<div id="fiddleHook"></div>
<a id="githubLink" href="https://github.com/bradyhouse/house/tree/master/fiddles/three/fiddle-0024-Eclipse" target="_blank"><img style="z-index: 1000; position: absolute; top: 0; right: 0; border: 0;" src="https://camo.githubusercontent.com/652c5b9acfaddf3a9c326fa6bde407b87f7be0f4/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f6f72616e67655f6666373630302e706e67" alt="Fork me on GitHub"></a>
CSS
body {
background: black;
}
JavaScript
(function(app) {
"use strict";
let metadata = {
urls: {
github: 'https://github.com/bradyhouse/house/blob/master/fiddles/three/fiddle-0024-Eclipse',
moon: {
surfaceMaterial: 'https://s3.amazonaws.com/brady.house/red-moon.jpg'
}
}
};
app.toolkit = app.toolkit || {};
app.toolkit.three = app.toolkit.three || {};
app.view = app.view || {};
app.view.milkyway = app.view.milkyway || {};
app.toolkit.three.Publisher = class {
constructor() {
this._messageTypes = {};
}
get messageTypes() {
return this._messageTypes;
}
subscribe(message, subscriber, callback) {
var subscribers = this.messageTypes[message];
if (subscribers) {
if (this.findSubscriber(subscribers, subscriber) != -1) {
return;
}
} else {
subscribers = [];
this.messageTypes[message] = subscribers;
}
subscribers.push({
subscriber: subscriber,
callback: callback
});
}
unsubscribe(message, subscriber, callback) {
if (subscriber) {
var subscribers = this.messageTypes[message];
if (subscribers) {
var i = this.findSubscriber(subscribers, subscriber, callback);
if (i != -1) {
this.messageTypes[message].splice(i, 1);
}
}
} else {
delete this.messageTypes[message];
}
}
publish(message) {
var subscribers = this.messageTypes[message];
if (subscribers) {
for (var i = 0; i < subscribers.length; i++) {
var args = [];
for (var j = 0; j < arguments.length - 1; j++) {
...