Gozintograph: Unterschied zwischen den Versionen
| Zeile 25: | Zeile 25: | ||
<html> | <html> | ||
<div id=" | <div id="gozinto_small" style="width:95vw; max-width:1000px; height:70vw; max-height:600px; margin-top:20px;"></div> | ||
<script src="https://jsxgraph.org/distrib/jsxgraphcore.js"></script> | <script src="https://jsxgraph.org/distrib/jsxgraphcore.js"></script> | ||
<script> | <script> | ||
var brd = JXG.JSXGraph.initBoard(' | var brd = JXG.JSXGraph.initBoard('gozinto_small', { | ||
boundingbox: [-1, 9, 13, -1], | boundingbox: [-1, 9, 13, -1], | ||
axis: false, | axis: false, | ||
| Zeile 35: | Zeile 35: | ||
}); | }); | ||
// | // --- Funktion zur Rechteckerstellung (kleiner + fixiert) --- | ||
function box(x1,y1,x2,y2,text){ | function box(x1,y1,x2,y2,text){ | ||
var poly = brd.create('polygon',[[x1,y1],[x2,y1],[x2,y2],[x1,y2]],{ | var poly = brd.create('polygon',[[x1,y1],[x2,y1],[x2,y2],[x1,y2]],{ | ||
| Zeile 45: | Zeile 45: | ||
}); | }); | ||
brd.create('text',[(x1+x2)/2,(y1+y2)/2,text], | brd.create('text',[(x1+x2)/2,(y1+y2)/2,text], | ||
{anchorX:'middle',anchorY:'middle',strokeColor:'black',fontSize: | {anchorX:'middle',anchorY:'middle',strokeColor:'black',fontSize:13,fixed:true}); | ||
return {x1:x1,y1:y1,x2:x2,y2:y2}; | return {x1:x1,y1:y1,x2:x2,y2:y2}; | ||
} | } | ||
// Rechtecke | // --- Rechtecke --- | ||
// Kleinere Rechtecke: Breite = 1, Höhe = 0.6 | |||
var h = 0.6, w = 1.0; | |||
var | |||
var | // Einzelteile (oben) | ||
var | var E1=box(0,6, w,6+h,'E1'); | ||
var | var E2=box(2,6, 2+w,6+h,'E2'); | ||
var | var E3=box(4,6, 4+w,6+h,'E3'); | ||
var E4=box(6,6, 6+w,6+h,'E4'); | |||
// | // Bauteile (unten, leicht versetzt dazwischen) | ||
var B1=box(0.5,2, 0.5+w,2+h,'B1'); | |||
var B2=box(2.5,2, 2.5+w,2+h,'B2'); | |||
var B3=box(4.5,2, 4.5+w,2+h,'B3'); | |||
var B4=box(6.5,2, 6.5+w,2+h,'B4'); | |||
var B5=box(8.5,2, 8.5+w,2+h,'B5'); | |||
// --- Kanten (exakt an Rechteckrändern) --- | |||
function edge(fromRect,toRect,label,offset){ | function edge(fromRect,toRect,label,offset){ | ||
// Start | // Start = Mitte Unterkante des Einzelteils | ||
var fx=(fromRect.x1+fromRect.x2)/2; | var fx=(fromRect.x1+fromRect.x2)/2; | ||
var fy=fromRect.y1; | var fy=fromRect.y1; | ||
// Ende | // Ende = Mitte Oberkante des Bauteils | ||
var tx=(toRect.x1+toRect.x2)/2; | var tx=(toRect.x1+toRect.x2)/2; | ||
var ty=toRect.y2; | var ty=toRect.y2; | ||
var dx=tx-fx, dy=ty-fy; | var dx=tx-fx, dy=ty-fy; | ||
var len=Math.sqrt(dx*dx+dy*dy); | var len=Math.sqrt(dx*dx+dy*dy); | ||
var ux=dx/len, uy=dy/len; | var ux=dx/len, uy=dy/len; | ||
var px=-uy, py=ux; | var px=-uy, py=ux; | ||
fx+=px*offset; fy+=py*offset; | fx+=px*offset; fy+=py*offset; | ||
tx+=px*offset; ty+=py*offset; | tx+=px*offset; ty+=py*offset; | ||
var yShiftStart=0.03, yShiftEnd=-0.03; | |||
var start=[fx, fy+yShiftStart]; | |||
var end=[tx, ty+yShiftEnd]; | |||
var midX=(start[0]+end[0])/2; | var midX=(start[0]+end[0])/2; | ||
var midY=(start[1]+end[1])/2; | var midY=(start[1]+end[1])/2; | ||
var gap=0. | var gap=0.25; | ||
var p1=[midX-ux*gap, midY-uy*gap]; | var p1=[midX-ux*gap, midY-uy*gap]; | ||
var p2=[midX+ux*gap, midY+uy*gap]; | var p2=[midX+ux*gap, midY+uy*gap]; | ||
| Zeile 104: | Zeile 100: | ||
strokeColor:'#000',strokeWidth:1.5,fixed:true | strokeColor:'#000',strokeWidth:1.5,fixed:true | ||
}); | }); | ||
// Kreis | // Kreis + Beschriftung | ||
brd.create('circle',[[midX,midY],0. | brd.create('circle',[[midX,midY],0.18],{ | ||
fillColor:'white',strokeColor:'black',fixed:true | fillColor:'white',strokeColor:'black',fixed:true | ||
}); | }); | ||
brd.create('text',[midX,midY,label], | brd.create('text',[midX,midY,label], | ||
{anchorX:'middle',anchorY:'middle',fontSize: | {anchorX:'middle',anchorY:'middle',fontSize:10,fixed:true}); | ||
} | } | ||
// --- Kanten | // --- Kanten exakt verbunden und fixiert --- | ||
// B1: E1, E2 | |||
// B1: E1,E2 | edge(E1, B1, '2', -0.12); | ||
edge(E1, B1, '2', -0. | edge(E2, B1, '1', 0.12); | ||
edge(E2, B1, '1', 0. | |||
// B2: E1,E2 | // B2: E1, E2 | ||
edge(E1, B2, '2', -0. | edge(E1, B2, '2', -0.12); | ||
edge(E2, B2, '1', 0. | edge(E2, B2, '1', 0.12); | ||
// B3: E1,E2,E3 | // B3: E1, E2, E3 | ||
edge(E1, B3, '1', -0. | edge(E1, B3, '1', -0.18); | ||
edge(E2, B3, '1', 0); | edge(E2, B3, '1', 0); | ||
edge(E3, B3, '1', 0. | edge(E3, B3, '1', 0.18); | ||
// B4: E1,E3,E4 | // B4: E1, E3, E4 | ||
edge(E1, B4, '2', -0. | edge(E1, B4, '2', -0.18); | ||
edge(E3, B4, '1', 0); | edge(E3, B4, '1', 0); | ||
edge(E4, B4, '1', 0. | edge(E4, B4, '1', 0.18); | ||
// B5: E1,E4 | // B5: E1, E4 | ||
edge(E1, B5, '1', -0. | edge(E1, B5, '1', -0.12); | ||
edge(E4, B5, '2', 0. | edge(E4, B5, '2', 0.12); | ||
</script> | </script> | ||