Gozintograph: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
| Zeile 25: | Zeile 25: | ||
<html> | <html> | ||
<div id="gozinto1" style="width:90vw; max-width: | <div id="gozinto1" style="width:90vw; max-width:700px; height:60vw; max-height:500px; margin-top:20px;"></div> | ||
<script src="https://jsxgraph.org/distrib/jsxgraphcore.js"></script> | <script src="https://jsxgraph.org/distrib/jsxgraphcore.js"></script> | ||
<script> | <script> | ||
| Zeile 31: | Zeile 31: | ||
boundingbox: [-1, 8, 10, -1], | boundingbox: [-1, 8, 10, -1], | ||
axis: false, | axis: false, | ||
showNavigation: false, | |||
showCopyright: false | |||
}); | }); | ||
// | // Rechteck mit Label innen | ||
function box(x1,y1,x2,y2, | function box(x1,y1,x2,y2,text){ | ||
var poly = brd1.create('polygon',[[x1,y1],[x2,y1],[x2,y2],[x1,y2]],{ | |||
fillColor: | fillColor:'#3498db',fillOpacity:0.8,vertices:{visible:false}, | ||
borders:{strokeColor:'#1f4e78',strokeWidth:2} | |||
}); | }); | ||
brd1.create('text',[(x1+x2)/2,(y1+y2)/2,text], | |||
{anchorX:'middle',anchorY:'middle',strokeColor:'white',fontSize:14}); | |||
return poly; | |||
} | } | ||
// Knoten | // Knoten | ||
var E1=box(0,6,1,7,' | var E1=box(0,6,1.5,7,'E1'); | ||
var E2=box(2,6,3,7,' | var E2=box(2,6,3.5,7,'E2'); | ||
var E3=box(4,6,5,7,' | var E3=box(4,6,5.5,7,'E3'); | ||
var E4=box(6,6,7,7,' | var E4=box(6,6,7.5,7,'E4'); | ||
var B1=box(1,3.5,2.5,4.5,'B1'); | |||
var B2=box(3,3.5,4.5,4.5,'B2'); | |||
var B3=box(5,3.5,6.5,4.5,'B3'); | |||
var B4=box(2,1,3.5,2,'B4'); | |||
var B5=box(5,1,6.5,2,'B5'); | |||
function | // Hilfsfunktion: Pfeil mit Mengen-Kreis | ||
brd1.create('arrow',[ | function edge(from,to,label){ | ||
brd1.create(' | var midX=(from[0]+to[0])/2; | ||
var midY=(from[1]+to[1])/2; | |||
var dirX=(to[0]-from[0]); | |||
var dirY=(to[1]-from[1]); | |||
var len=Math.sqrt(dirX*dirX+dirY*dirY); | |||
var ux=dirX/len, uy=dirY/len; | |||
var gap=0.3; // Lücke an der Kreisposition | |||
var p1=[midX-ux*gap, midY-uy*gap]; | |||
var p2=[midX+ux*gap, midY+uy*gap]; | |||
brd1.create('arrow',[from,p1],{strokeColor:'#000',strokeWidth:1.5}); | |||
brd1.create('arrow',[p2,to],{strokeColor:'#000',strokeWidth:1.5}); | |||
brd1.create('circle',[ [midX,midY],0.2 ],{fillColor:'white',strokeColor:'black'}); | |||
brd1.create('text',[midX,midY,label],{anchorX:'middle',anchorY:'middle',fontSize:11}); | |||
} | } | ||
// | // Verbindungen laut Aufgabe: | ||
edge([0.75,6],[1.75,4.5],'2'); // E1→B1 | |||
edge([2.75,6],[1.75,4.5],'1'); // E2→B1 | |||
edge([0.75,6],[3.75,4.5],'2'); // E1→B2 | |||
edge([2.75,6],[3.75,4.5],'1'); // E2→B2 | |||
edge([0.75,6],[5.75,4.5],'1'); // E1→B3 | |||
edge([2.75,6],[5.75,4.5],'1'); // E2→B3 | |||
arrow( | edge([4.75,6],[5.75,4.5],'1'); // E3→B3 | ||
edge([0.75,6],[2.75,2],'2'); // E1→B4 | |||
edge([4.75,6],[2.75,2],'1'); // E3→B4 | |||
edge([6.75,6],[2.75,2],'1'); // E4→B4 | |||
edge([0.75,6],[5.75,2],'1'); // E1→B5 | |||
edge([6.75,6],[5.75,2],'2'); // E4→B5 | |||
</script> | |||
</html> | |||
== Beispiel 2: Rezeptstruktur eines Gerichts == | |||
<html> | |||
<div id="gozinto2" style="width:90vw; max-width:700px; height:60vw; max-height:500px; margin-top:20px;"></div> | |||
<script> | |||
var brd2 = JXG.JSXGraph.initBoard('gozinto2', { | |||
boundingbox: [-1, 8, 10, -1], | |||
axis: false, | |||
showNavigation: false, | |||
showCopyright: false | |||
}); | |||
function box2(x1,y1,x2,y2,text){ | |||
var poly = brd2.create('polygon',[[x1,y1],[x2,y1],[x2,y2],[x1,y2]],{ | |||
fillColor:'#3498db',fillOpacity:0.8,vertices:{visible:false}, | |||
borders:{strokeColor:'#1f4e78',strokeWidth:2} | |||
}); | |||
brd2.create('text',[(x1+x2)/2,(y1+y2)/2,text], | |||
{anchorX:'middle',anchorY:'middle',strokeColor:'white',fontSize:14}); | |||
return poly; | |||
} | |||
// Zutaten | |||
var M=box2(0,6,1.5,7,'Mehl'); | |||
var W=box2(2,6,3.5,7,'Wasser'); | |||
var H=box2(4,6,5.5,7,'Hefe'); | |||
var T=box2(2,3.5,3.5,4.5,'Teig'); | |||
var S=box2(5,3.5,6.5,4.5,'Soße'); | |||
var P=box2(3,1,4.5,2,'Pizza'); | |||
// Pfeile mit Kreisen | |||
function edge2(from,to,label){ | |||
var midX=(from[0]+to[0])/2; | |||
var midY=(from[1]+to[1])/2; | |||
var dirX=(to[0]-from[0]); | |||
var dirY=(to[1]-from[1]); | |||
var len=Math.sqrt(dirX*dirX+dirY*dirY); | |||
var ux=dirX/len, uy=dirY/len; | |||
var gap=0.3; | |||
var p1=[midX-ux*gap, midY-uy*gap]; | |||
var p2=[midX+ux*gap, midY+uy*gap]; | |||
brd2.create('arrow',[from,p1],{strokeColor:'#000',strokeWidth:1.5}); | |||
brd2.create('arrow',[p2,to],{strokeColor:'#000',strokeWidth:1.5}); | |||
brd2.create('circle',[ [midX,midY],0.2 ],{fillColor:'white',strokeColor:'black'}); | |||
brd2.create('text',[midX,midY,label],{anchorX:'middle',anchorY:'middle',fontSize:11}); | |||
} | |||
// Beziehungen | |||
edge2([0.75,6],[2.75,4.5],'2'); // Mehl->Teig | |||
edge2([2.75,6],[2.75,4.5],'1'); // Wasser->Teig | |||
edge2([4.75,6],[2.75,4.5],'0.5'); // Hefe->Teig | |||
edge2([2.75,4.5],[3.75,2],'1'); // Teig->Pizza | |||
edge2([5.75,4.5],[3.75,2],'1'); // Soße->Pizza | |||
</script> | </script> | ||
</html> | </html> | ||