SVG – Learning by Coding
1: <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
2: <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
3: "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" [
4: <!ATTLIST svg xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink">
5: ]>
6:
7: <!-- SVG - Learning by Coding - http://www.datenverdrahten.de/svglbc/ -->
8: <!-- Author: Dr. Thomas Meinike 05/03 - thomas@handmadecode.de -->
9:
10: <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
11: onload="getSVGDoc(evt)">
12:
13: <title>SVG - Learning by Coding</title>
14: <desc>SVG-Spezifikation in Beispielen</desc>
15:
16: <defs>
17:
18: <style type="text/css">
19: <![CDATA[
20:
21: line
22: {
23: stroke: #000;
24: stroke-width: 1px
25: }
26:
27: g text
28: {
29: font-family: Arial,Helvetica,sans-serif;
30: font-size: 10px;
31: }
32:
33: ]]>
34: </style>
35:
36:
37: <script type="text/javascript">
38: <![CDATA[
39:
40: var svgdoc,svgroot;
41:
42:
43: function getSVGDoc(load_evt)
44: {
45: svgdoc=load_evt.target.ownerDocument;
46: svgroot=svgdoc.documentElement;
47: }
48:
49:
50: function FunktionenZeichnen()
51: {
52: var startx=50,starty=200,faktor=50,x,y,wertepaar="",punkte="",elemobj,
53: svgns="http://www.w3.org/2000/svg";
54:
55: // Sinus-Funktion zeichnen
56:
57: // Wertepaare berechnen
58: for(x=0;x<=10;x+=0.01)
59: {
60: y=Math.sin(x);
61:
62: wertepaar=(startx+x*faktor).toString()+","+(starty-y*faktor).toString()+" ";
63: punkte+=wertepaar;
64: }
65:
66: // Sinus-Funktionsgraph mittels polyline erzeugen
67: elemobj=svgdoc.createElementNS(svgns,"polyline");
68: elemobj.setAttribute("points",punkte);
69: elemobj.setAttribute("stroke","#090");
70: elemobj.setAttribute("stroke-width","1.5px");
71: elemobj.setAttribute("fill","none");
72: svgroot.appendChild(elemobj);
73:
74:
75: // Cosinus-Funktion zeichnen
76:
77: // Wertepaare berechnen und
78: // Cosinus-Funktionsgraph punktweise mittels circle erzeugen
79: for(x=0;x<=10;x+=0.01)
80: {
81: y=Math.cos(x);
82:
83: elemobj=svgdoc.createElementNS(svgns,"circle");
84: elemobj.setAttribute("cx",(startx+x*faktor).toString());
85: elemobj.setAttribute("cy",(starty-y*faktor).toString());
86: elemobj.setAttribute("r","0.75");
87: elemobj.setAttribute("fill","#F00");
88: svgroot.appendChild(elemobj);
89: }
90:
91:
92: // versteckte Hinweistexte einblenden
93: svgdoc.getElementById("sin").style.setProperty("visibility","visible","");
94: svgdoc.getElementById("cos").style.setProperty("visibility","visible","");
95: svgdoc.getElementById("info").style.setProperty("visibility","visible","");
96: svgdoc.getElementById("aktion").style.setProperty("visibility","hidden","");
97: }
98:
99: ]]>
100: </script>
101:
102: </defs>
103:
104: <text x="20" y="30" style="fill: #000; font-size: 24px">
105: Funktions-Plotter</text>
106:
107: <!-- Achsen -->
108: <line x1="50" y1="200" x2="600" y2="200"/>
109: <line x1="50" y1="100" x2="50" y2="300"/>
110: <line x1="590" y1="195" x2="600" y2="200"/>
111: <line x1="590" y1="205" x2="600" y2="200"/>
112: <line x1="45" y1="110" x2="50" y2="100"/>
113: <line x1="50" y1="100" x2="55" y2="110"/>
114:
115: <!-- Achsenteilung x -->
116: <g>
117: <line x1="100" y1="200" x2="100" y2="205"/>
118: <line x1="150" y1="200" x2="150" y2="205"/>
119: <line x1="200" y1="200" x2="200" y2="205"/>
120: <line x1="250" y1="200" x2="250" y2="205"/>
121: <line x1="300" y1="200" x2="300" y2="205"/>
122: <line x1="350" y1="200" x2="350" y2="205"/>
123: <line x1="400" y1="200" x2="400" y2="205"/>
124: <line x1="450" y1="200" x2="450" y2="205"/>
125: <line x1="500" y1="200" x2="500" y2="205"/>
126: <line x1="550" y1="200" x2="550" y2="205"/>
127:
128: <text x="97" y="215">1</text>
129: <text x="147" y="215">2</text>
130: <text x="197" y="215">3</text>
131: <text x="247" y="215">4</text>
132: <text x="297" y="215">5</text>
133: <text x="347" y="215">6</text>
134: <text x="397" y="215">7</text>
135: <text x="447" y="215">8</text>
136: <text x="497" y="215">9</text>
137: <text x="544" y="215">10</text>
138: <text x="605" y="203">x</text>
139: </g>
140:
141: <!-- Achsenteilung y -->
142: <g>
143: <line x1="45" y1="150" x2="50" y2="150"/>
144: <line x1="45" y1="200" x2="50" y2="200"/>
145: <line x1="45" y1="250" x2="50" y2="250"/>
146:
147: <text x="47" y="90">y</text>
148: <text x="37" y="153">1</text>
149: <text x="37" y="203">0</text>
150: <text x="34" y="253">-1</text>
151: </g>
152:
153: <g id="aktion">
154: <a xlink:href="" cursor="pointer" onclick="return false">
155: <text x="100" y="300" style="fill: #00C; font-size: 16px"
156: onclick="FunktionenZeichnen()">Funktionen zeichnen
157: <set attributeName="fill" attributeType="CSS" to="#F00" begin="mouseover"/>
158: <set attributeName="fill" attributeType="CSS" to="#00C" begin="mouseout"/>
159: </text>
160: </a>
161: </g>
162:
163: <text id="sin" x="270" y="300" style="fill: #090; font-size: 16px;
164: visibility: hidden">sin(x)</text>
165: <text id="cos" x="330" y="300" style="fill: #F00; font-size: 16px;
166: visibility: hidden">cos(x)</text>
167: <text id="info" x="120" y="330" style="fill: #000; font-size: 12px;
168: visibility: hidden">[Hinweis: sin(x) als polyline erzeugt – cos(x)
169: punktweise mittels circle erzeugt.]</text>
170:
171: </svg>
[zum Anfang]