461 lines
18 KiB
HTML
461 lines
18 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
|
"http://www.w3.org/TR/html4/strict.dtd">
|
|
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
|
<link rel="stylesheet" type="text/css" href="stylesheets.css"/>
|
|
<html lang="de" dir="ltr" class="client-nojs">
|
|
<title>Appguru EU - Applications</title>
|
|
|
|
<div class="doc">
|
|
<div class="parent">
|
|
<div class="menu">
|
|
<ul id="Navigation">
|
|
<li><span>Applications</span></li>
|
|
<li><a href="index.html">Home</a></li>
|
|
<li><a href="aboutme.html">About Me</a></li>
|
|
<li><a href="gallery.html">Gallery</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<meta name="description" content="Appguru EU Website">
|
|
<meta name="keywords" content="apps,Apps,appguru-eu,appguru.eu,Appguru EU,">
|
|
<meta name="author" content="Lars Müller">
|
|
<meta name="DC.Publisher" content="GitHub">
|
|
<meta name="DC.Date" content="2018,3.1">
|
|
<meta name="DC.Identifier" content="appguru.eu">
|
|
<meta name="DC.Language" content="de">
|
|
<meta name="DC.Rights" content="free">
|
|
<meta name="DC.Date.created" content="2018-1-3T08:00+01:00">
|
|
<meta name="SELF.Pagetype" content="html">
|
|
<link rel="icon" type="image/ico" href="favicon.ico"/>
|
|
<h1>Applications</h1>
|
|
<h3>Rotational Game</h3>
|
|
<a id="t">A simple game based on a BWINF task.</a></br>
|
|
<a id="t">Language : German.</a></br>
|
|
<a id="u">Download : </a></br>
|
|
<a class="link" id="t" href="Rotationsspiel.jar">Rotational Game Download</a><br>
|
|
<h3>Defender</h3>
|
|
<a id="t">A Pygame based game coded in Python.</a></br>
|
|
<a id="t">Languages : English and German.</a></br>
|
|
<a id="u">Screenshot : </a></br>
|
|
<input type="image" class="bild" id="defender_advertisement" src="defender_screenie.png" data-title="Unnamed" data-description="No description available." onclick="show_image_popup(this.id);"></input>
|
|
</br>
|
|
<a id="u">Download : </a></br>
|
|
<a class="link" id="t" href="Defender.zip">Defender - the Game - Download</a><br>
|
|
<h3>BWINF Solutions</h3>
|
|
<a id="t">The solutions to the 34., 35. and 36. BWINF, the "Bundeswettbewerb Informatik". I teamed with my brother for the 35. and 36.</a></br>
|
|
<a id="t">Language : Obviously only German.</a></br>
|
|
<a id="u">Downloads : </a></br>
|
|
<a class="link" id="t" href="BWINF36.zip">36. BWINF - complete solutions - download</a><br>
|
|
<a class="link" id="t" href="BWINF35.zip">35. BWINF - some solutions - download</a><br>
|
|
<a class="link" id="t" href="BWINF34.zip">34. BWINF - almost nothing - download</a><br>
|
|
<h3>Model Creator</h3>
|
|
<a id="t">An useful application for creating blocky 3D-Models of depthmaps. Download, execute and use !</a></br>
|
|
<a id="t">Hope it helps !</a></br>
|
|
<a id="t">This one is only available in English.</a></br>
|
|
<a id="u">Screenshots : </a></br>
|
|
<input type="image" class="bild" id="model_advertisement1" data-title="Unnamed" data-description="No description available." src="http://forum.minetest.net/download/file.php?mode=view&id=13396" onclick="show_image_popup(this.id);"></input>
|
|
</br>
|
|
<input type="image" class="bild" id="model_advertisement2" data-title="Unnamed" data-description="No description available." src="http://forum.minetest.net/download/file.php?mode=view&id=13397&sid=f9f6a94a9cd4b622d90944c130ed5a7a" onclick="show_image_popup(this.id);"></input>
|
|
</br>
|
|
<a id="u">Forum Thread : </a></br>
|
|
<a class="link" id="t" href="https://forum.minetest.net/viewtopic.php?f=14&t=18780">Model Creator Forum Thread</a><br>
|
|
<a id="u">Download : </a></br>
|
|
<a class="link" id="t" href="https://forum.minetest.net/download/file.php?id=13425">Model Creator Download</a><br>
|
|
<h3>Schematic Creator</h3>
|
|
<a id="t">An useful application for creating schematics/buildings out of blueprints in a Minetest world. Download, execute and use !</a></br>
|
|
<a id="t">Hope it helps !</a></br>
|
|
<a id="t">Also in English.</a></br>
|
|
<a id="u">Screenshot : </a></br>
|
|
<input type="image" class="bild" id="s_advertisement1" data-title="Unnamed" data-description="No description available." src="https://forum.minetest.net/download/file.php?mode=view&id=13321&sid=37968944da7cbeadd96607818f5001ed" onclick="show_image_popup(this.id);"></input>
|
|
</br>
|
|
<a id="u">Forum Thread : </a></br>
|
|
<a class="link" id="t" href="https://forum.minetest.net/viewtopic.php?f=14&t=18992">Schematic Creator Forum Thread</a><br>
|
|
<a id="u">Download : </a></br>
|
|
<a class="link" id="t" href="https://forum.minetest.net/download/file.php?id=13323">Schematic Creator Download</a><br>
|
|
<h3>Colorful Library</h3>
|
|
<a id="t">A Minetest library which aims at making Minetest more colorful.</a></br>
|
|
<a id="t">May be useful !</a></br>
|
|
<a id="u">Screenshots : </a></br>
|
|
<input type="image" class="bild" id="c_advertisement2" data-title="Unnamed" data-description="No description available." src="http://forum.minetest.net/download/file.php?mode=view&id=13354" onclick="show_image_popup(this.id);"></input>
|
|
</br>
|
|
<a id="u">Forum Thread : </a></br>
|
|
<a class="link" id="t" href="https://forum.minetest.net/viewtopic.php?f=9&t=19010">Colorful Library Forum Thread</a><br>
|
|
<a id="u">Download : </a></br>
|
|
<a class="link" id="t" href="https://github.com/appgurueu/colorful/tree/master">Colorful Library Download on GitHub</a><br>
|
|
<h3>Baubles Mod</h3>
|
|
<a id="t">A Mod for Minetest based on Colorful, adding many colorful baubles with many different themes.</a></br>
|
|
<a id="t">Merry christmas !</a></br>
|
|
<a id="u">Screenshots : </a></br>
|
|
<input type="image" class="bild" id="d_advertisement2" data-title="Unnamed" data-description="No description available." src="https://forum.minetest.net/download/file.php?mode=view&id=13421&sid=e9302f697f9419ad34b6386e860fe677" onclick="show_image_popup(this.id);"></input>
|
|
</br>
|
|
<a id="u">Forum Thread : </a></br>
|
|
<a class="link" id="t" href="https://forum.minetest.net/viewtopic.php?f=9&t=19109">Baubles Mod Forum Thread</a><br>
|
|
<a id="u">Download : </a></br>
|
|
<a class="link" id="t" href="https://github.com/appgurueu/baubles">Baubles Mod Download on GitHub</a><br>
|
|
<h3>Fractal-Suite</h3>
|
|
<a id="t">Kind of a full-version of the online Fractal-Viewer. Download, execute and enjoy !</a></br>
|
|
<a id="t">Try it out : It comes with a bunch of features !</a></br>
|
|
<a id="t">Unfortunately, it's only available in German.</a></br>
|
|
<a id="u">Screenshots : </a></br>
|
|
<input type="image" class="bild" id="e_advertisement2" data-title="Unnamed" data-description="No description available." src="fractal_screenie.png" onclick="show_image_popup(this.id);"></input>
|
|
</br>
|
|
<a id="u">Download : </a></br>
|
|
<a class="link" id="t" href="http://clara-online.de/images/Mathe/Ergaenzungskurs/FraktaleGeometrie_20152016/Fraktal-Suite.jar">Fractal-Suite Download</a><br>
|
|
<h3>Planetary Movement Simulation in 3D</h3>
|
|
<a id="t">A Planetary Movement Simulation in 3D. Featuring many ways to interact with your solar system, such as creating and deleting planets, seting velocities, etc. You are in control ! Also, it always saves your progress if you exit !</a></br>
|
|
<a id="t">Please give it a try.</a></br>
|
|
<a id="t">Unfortunately, it's also only available in German.</a></br>
|
|
<a id="u">Screenshots : </a></br>
|
|
<input type="image" class="bild" id="e_advertisement2" data-title="Unnamed" data-description="No description available." src="capture08.07.2017 19_20_02_1.jpg" onclick="show_image_popup(this.id);"></input>
|
|
</br>
|
|
<a id="u">Downloads : </a></br>
|
|
<a id="t" class="link" href="Planetenbewegungssimulation_Windows_i586.zip">Windows i586</a><br>
|
|
<a id="t" class="link" href="Planetenbewegungssimulation_Windows_amd64.zip">Windows amd64</a><br>
|
|
<a id="t" class="link" href="Planetenbewegungssimulation_Linux_i586.zip">Linux i586</a><br>
|
|
<a id="t" class="link" href="Planetenbewegungssimulation_Linux_amd64.zip">Linux amd64</a><br>
|
|
<h3>Online Fractal-Viewer</h3>
|
|
<a id="t">A little Fractal-Viewer I created once. Enjoy !</a></br>
|
|
<a id="t">Controls : Mouse Wheel to Move and Zoom, Left Mouse Button to switch Julia/Mandelbrot, Right Mouse Button to add extra iters. Note : Only works well in Google Chrome. If you want a lag and bug-free application with more features, get my Fractal-Suite.</a>
|
|
|
|
|
|
<canvas id="myCanvas" width="800" height="600" style="border:1px solid #d3d3d3;margin:10%">
|
|
|
|
<script>
|
|
function ComplexNumber(rpart,ipart) {
|
|
this.rpart=rpart;
|
|
this.ipart=ipart;
|
|
}
|
|
function bs(cn) {
|
|
var a = (cn.rpart*cn.rpart) + (cn.ipart*cn.ipart) ;
|
|
var betrag = Math.sqrt(a);
|
|
return betrag ;
|
|
}
|
|
function erzeugeplus(that,other){
|
|
var wert1=that.rpart+other.rpart;
|
|
var wert2=that.ipart+other.ipart;
|
|
return new ComplexNumber(wert1,wert2);
|
|
}
|
|
function erzeugemal(that,other){
|
|
var wert1=that.rpart * other.rpart - that.ipart * other.ipart ;
|
|
var wert2=that.rpart * other.ipart + that.ipart * other.rpart ;
|
|
return new ComplexNumber(wert1,wert2) ;
|
|
}
|
|
function hoch(that,iters,other){
|
|
var cn=(erzeugemal(that,other)) ;
|
|
if (iters > 2) {
|
|
for (i=0; i<iters-1; i++) {
|
|
cn=erzeugemal(cn,cn) ;
|
|
}
|
|
}
|
|
return cn;
|
|
}
|
|
function iter(that,iters,other){
|
|
var cn=(erzeugemal(that,other)) ;
|
|
if (iters > 0) {
|
|
for (i=0; i<iters-1; i++) {
|
|
cn=erzeugemal(cn,other) ;
|
|
}
|
|
}
|
|
return cn ;
|
|
}
|
|
|
|
|
|
//function update() {
|
|
var c = document.getElementById("myCanvas");
|
|
var mouseX=0;
|
|
var mouseY=0;
|
|
var zoomed=100;
|
|
var moveX=0;
|
|
var moveY=0;
|
|
var mode=2;
|
|
var m=1;
|
|
/*function relPos(evt) {
|
|
var r=c.getBoundingClientRect();
|
|
return {x:evt.clientX-rect.left,y:evt.clientY-rect.top};
|
|
}
|
|
function processMove(evt) {
|
|
var p=relPos(evt);
|
|
mouseX=p.x;
|
|
mouseY=p.y;
|
|
}*/
|
|
function mouseMove(e)
|
|
{
|
|
|
|
if(e.offsetX) {
|
|
mouseX = e.offsetX;
|
|
mouseY = e.offsetY;
|
|
}
|
|
else if(e.layerX) {
|
|
mouseX = e.layerX;
|
|
mouseY = e.layerY;
|
|
}
|
|
}
|
|
function mWheel(e) {
|
|
mouseMove(e);
|
|
zoomed+=e.wheelDelta/480;
|
|
moveX+=(e.wheelDelta/480)*((mouseX-400)/4000);
|
|
moveY+=(e.wheelDelta/480)*((mouseY-300)/3000);
|
|
//zoomed+=1;
|
|
}
|
|
function mClick(e) {
|
|
mode+=1;
|
|
}
|
|
function mRightClick(e) {
|
|
if (m != 1) {
|
|
m++;
|
|
}
|
|
else {
|
|
m=0;
|
|
}
|
|
return true;
|
|
}
|
|
c.oncontextmenu=mRightClick;
|
|
c.addEventListener('onmousemove', mouseMove, false);
|
|
var mousewheelevt=(/Firefox/i.test(navigator.userAgent))? "DOMMouseScroll" : "mousewheel"
|
|
//c.attachEvent(mousewheelevt,mWheel);
|
|
c.addEventListener(mousewheelevt, mWheel, false);
|
|
c.addEventListener("click",mClick);
|
|
//var colors=new Array();
|
|
//var m = document.getElementById("mandelbrot");
|
|
var ctx = c.getContext("2d");
|
|
var gr = ctx.createImageData(800,800);
|
|
//var mchecked=m.checked;
|
|
var w=800;
|
|
var h=600;
|
|
var cc=new ComplexNumber(0.7,0.3);
|
|
|
|
function drawPixel(x,y,r,g,b) {
|
|
i=(x+y*gr.width)*4;
|
|
var d=gr.data;
|
|
gr.data[i]=r;
|
|
gr.data[i+1]=g;
|
|
gr.data[i+2]=b;
|
|
gr.data[i+3]=255;
|
|
}
|
|
|
|
function eval_mbm(x, y, zoom, resx, resy, type,movex,movey){
|
|
for(xs=0; xs<resx; xs++) {
|
|
for(ys=0; ys<resy; ys++) {
|
|
var z = new ComplexNumber(0.0,0.0) ;
|
|
var c = new ComplexNumber(((xs-(resx/2.0))/zoom)+movex,((ys-(resy/2.0))/zoom)+movey) ;
|
|
var benoetigte_iterationen=0 ;
|
|
var iters=50;
|
|
while (true) {
|
|
benoetigte_iterationen += 1 ;
|
|
z=erzeugeplus(c,iter(z,type,z)) ;
|
|
var betrag = bs(z) ;
|
|
/*if (benoetigte_iterationen > 75) {
|
|
drawPixel(xs+x,ys+y,0,0,255);
|
|
break ;
|
|
}
|
|
if (betrag > 100.0) {
|
|
if (benoetigte_iterationen <= 18){
|
|
drawPixel(xs+x,ys+y,benoetigte_iterationen*3,benoetigte_iterationen*6,0);
|
|
}
|
|
if (benoetigte_iterationen > 18) {
|
|
drawPixel(xs+x,ys+y,0,benoetigte_iterationen*1.5,benoetigte_iterationen*3);
|
|
}
|
|
break ;
|
|
}*/
|
|
if (benoetigte_iterationen > iters) {
|
|
if (true) {
|
|
var ci=(betrag*2.4) ;
|
|
drawPixel(0,0,ci);
|
|
break ;
|
|
}
|
|
}
|
|
if (betrag > iters/18*100) {
|
|
if (benoetigte_iterationen <= iters/2){
|
|
drawPixel(int(benoetigte_iterationen*3),int(benoetigte_iterationen*6),0) ;
|
|
}
|
|
if (benoetigte_iterationen > iters/2) {
|
|
drawPixel(0,int(benoetigte_iterationen*1.5),int(benoetigte_iterationen*3)) ;
|
|
}
|
|
break ;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function eval_jm(wert1, x, y, zoom, resx, resy, type, movex, movey){
|
|
for(xs=0; xs<resx; xs++) {
|
|
for(ys=0; ys<resy; ys++) {
|
|
z = new ComplexNumber(0.0,0.0) ;
|
|
c = new ComplexNumber(((xs-(resx/2.0))/zoom)+movex,((ys-(resy/2.0))/zoom)+movey) ;
|
|
z = c ;
|
|
benoetigte_iterationen=0 ;
|
|
while (true) {
|
|
benoetigte_iterationen += 1 ;
|
|
z=erzeugeplus(wert1,iter(z,type,z)) ;
|
|
betrag = bs(z) ;
|
|
if (benoetigte_iterationen > 75) {
|
|
drawPixel(xs+x,ys+y,0,0,255);
|
|
break ;
|
|
}
|
|
if (betrag > 100.0) {
|
|
if (benoetigte_iterationen <= 18){
|
|
drawPixel(xs+x,ys+y,benoetigte_iterationen*3,benoetigte_iterationen*6,0);
|
|
}
|
|
if (benoetigte_iterationen > 18) {
|
|
drawPixel(xs+x,ys+y,0,benoetigte_iterationen*1.5,benoetigte_iterationen*3);
|
|
}
|
|
break ;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
for (x=0; x < gr.width; x++) {
|
|
for (y=0; y < gr.height; y++) {
|
|
drawPixel(x,y,0,0,0);
|
|
}
|
|
}
|
|
ctx.putImageData( gr, 0,0 );
|
|
ctx.stroke();
|
|
function getGUIVars() {
|
|
return {};
|
|
}
|
|
function update() {
|
|
for (x=0; x < gr.width; x++) {
|
|
for (y=0; y < gr.height; y++) {
|
|
drawPixel(x,y,0,0,0);
|
|
}
|
|
}
|
|
if (m==0) {
|
|
eval_mbm(0,0,zoomed,800,600,mode,moveX,moveY);
|
|
}
|
|
if (m==1) {
|
|
eval_jm(cc,0,0,zoomed,800,600,mode,moveX,moveY);
|
|
}
|
|
ctx.putImageData( gr, 0,0 );
|
|
ctx.stroke();
|
|
}
|
|
setInterval(update, 5000);
|
|
//}
|
|
</script>
|
|
</html>
|
|
</div>
|
|
<!--<script>
|
|
function onhover(id) {
|
|
/*var maxsize=window.innerWidth;
|
|
maxsize*=0.55;
|
|
if (document.getElementById(id).naturalWidth < maxsize) {
|
|
var ratio=maxsize/document.getElementById(id).width;
|
|
document.getElementById(id).style.width=String(document.getElementById(id).naturalWidth*ratio)+"px";
|
|
document.getElementById(id).style.height=String(document.getElementById(id).naturalHeight*ratio)+"px";
|
|
}*/
|
|
}
|
|
function onaway(id) {
|
|
/*var maxsize=window.innerWidth;
|
|
maxsize*=0.55;
|
|
if (document.getElementById(id).naturalWidth < maxsize) {
|
|
document.getElementById(id).style.width=String(document.getElementById(id).naturalWidth)+"px";
|
|
document.getElementById(id).style.height=String(document.getElementById(id).naturalHeight)+"px";
|
|
}*/
|
|
}
|
|
function adjust_images() {
|
|
var maxsize=window.innerWidth;
|
|
maxsize*=0.8;
|
|
var imgs=document.getElementsByTagName('img');
|
|
for (i=0; i < imgs.length; i++) {
|
|
var image=imgs[i];
|
|
//alert(String(imgs[i].width)+"<"+String(maxsize));
|
|
if (imgs[i].width > maxsize) {
|
|
var ratio=maxsize/image.width;
|
|
ratio*=0.95;
|
|
image.style.width=String(ratio*100)+"%";
|
|
image.style.height=String(ratio*100)+"%";
|
|
//alert("1"+String(image.width));
|
|
//image.width=imgs[i].width*ratio;
|
|
//image.height=imgs[i].height*ratio;
|
|
}
|
|
/*else {
|
|
document.getElementById(id).style.width=String(document.getElementById(id).naturalWidth)+"px";
|
|
document.getElementById(id).style.height=String(document.getElementById(id).naturalHeight)+"px";
|
|
}*/
|
|
}
|
|
}
|
|
setInterval(adjust_images, 1000);
|
|
</script>-->
|
|
<div class="modal" id="modal1" style="display:none;">
|
|
<div class="modal-content" id="content">
|
|
<input type="button" class="close" onclick="disable_popup('modal1');" value="×"/>
|
|
<a>We've got to celebrate your <a id="visit_count">first</a> visit to this site !</br>
|
|
Please take a look at the gallery and the applications.</a>
|
|
</div>
|
|
</div>
|
|
<div class="modal" id="modal2" style="display:none;">
|
|
<div class="modal-content" id="content2">
|
|
<input type="button" class="close" onclick="disable_popup('modal2');" value="×"/>
|
|
<b><a style="font-size: 110%;" id="fullsizetitle"></a></b></br>
|
|
<a style="font-size: 90%" id="fullsizedescription"></a></br>
|
|
<img alt="Alt" id="fullsize" src=""/>
|
|
</div>
|
|
</div>
|
|
<script>
|
|
function show_image_popup(image_id) {
|
|
var im=document.getElementById(image_id);
|
|
document.getElementById("fullsizetitle").innerHTML=im.getAttribute("data-title");
|
|
document.getElementById("fullsizedescription").innerHTML=im.getAttribute("data-description");
|
|
document.getElementById("fullsize").src=im.src;
|
|
enable_popup("modal2");
|
|
}
|
|
function enable_popup(popup) {
|
|
document.getElementById(popup).style.display="block";
|
|
}
|
|
function disable_popup(popup) {
|
|
//document.getElementById(popup).innerHTML=document.getElementById("saved").innerHTML;
|
|
document.getElementById(popup).style.display="none";
|
|
}
|
|
function adjust_images(tagname) {
|
|
var maxsize=window.innerWidth;
|
|
maxsize*=0.8;
|
|
var imgs=document.getElementsByTagName(tagname);
|
|
for (i=0; i < imgs.length; i++) {
|
|
var image=imgs[i];
|
|
//alert(String(imgs[i].width)+"<"+String(maxsize));
|
|
if (imgs[i].width > maxsize) {
|
|
var ratio=maxsize/image.width;
|
|
ratio*=0.95;
|
|
image.style.width=String(ratio*100)+"%";
|
|
image.style.height=String(ratio*100)+"%";
|
|
//alert("1"+String(image.width));
|
|
//image.width=imgs[i].width*ratio;
|
|
//image.height=imgs[i].height*ratio;
|
|
}
|
|
}
|
|
}
|
|
|
|
function adjust_inputs() {
|
|
adjust_images("input");
|
|
}
|
|
|
|
function adjust_imgs() {
|
|
adjust_images("img");
|
|
}
|
|
|
|
function cookie() {
|
|
var cookie=document.cookie;
|
|
if (cookie==undefined) {
|
|
var v=new Date();
|
|
var d=new Date(v.getYear()+1, v.getMonth(), v.getDay(), v.getHours(), v.getMinutes(), v.getSeconds(), v.getMilliseconds());
|
|
cookie="visit=1;expires="+d.getUTCDate()+";";
|
|
enable_popup("modal1");
|
|
}
|
|
var split=cookie.split(";");
|
|
var access=split[0].split("=")[1];
|
|
access=Number(access);
|
|
if (access % 10 == 0) {
|
|
document.getElementById("visit_count").innerHTML=String(access)+".";
|
|
enable_popup("modal1");
|
|
}
|
|
access=access+1;
|
|
document.cookie="visit="+String(access);
|
|
}
|
|
setTimeout(cookie, 0);
|
|
setInterval(adjust_imgs, 2000);
|
|
setInterval(adjust_inputs, 2000);
|
|
</script> |