Blame | Letzte Änderung | Log anzeigen | RSS feed
<code><font color="#000000"><font color="#0000BB"><?php<br /></font><font color="#007700">include (</font><font color="#DD0000">"../jpgraph.php"</font><font color="#007700">);<br />include (</font><font color="#DD0000">"../jpgraph_scatter.php"</font><font color="#007700">);<br /><br /></font><font color="#0000BB">$polex </font><font color="#007700">= </font><font color="#0000BB">6</font><font color="#007700">;<br /></font><font color="#0000BB">$poley </font><font color="#007700">= </font><font color="#0000BB">40</font><font color="#007700">;<br /><br />function </font><font color="#0000BB">FldCallback</font><font color="#007700">(</font><font color="#0000BB">$x</font><font color="#007700">,</font><font color="#0000BB">$y</font><font color="#007700">,</font><font color="#0000BB">$a</font><font color="#007700">) {<br /> GLOBAL </font><font color="#0000BB">$polex</font><font color="#007700">, </font><font color="#0000BB">$poley</font><font color="#007700">;<br /> </font><font color="#0000BB">$maxr </font><font color="#007700">= </font><font color="#0000BB">3000</font><font color="#007700">;<br /><br /> </font><font color="#FF8000">// Size and arrow size is constant<br /> </font><font color="#0000BB">$size</font><font color="#007700">=</font><font color="#DD0000">""</font><font color="#007700">;<br /> </font><font color="#0000BB">$arrowsize</font><font color="#007700">=</font><font color="#DD0000">""</font><font color="#007700">;<br /><br /> </font><font color="#FF8000">// Since we have different scales we need the data points<br /> // to be of the same magnitude to give it a distance<br /> // interpretation.<br /> </font><font color="#0000BB">$x </font><font color="#007700">*= </font><font color="#0000BB">10</font><font color="#007700">; <br /><br /> </font><font color="#FF8000">// Colors gets colder the further out we go from the center<br /> </font><font color="#0000BB">$r </font><font color="#007700">= (</font><font color="#0000BB">$x</font><font color="#007700">-</font><font color="#0000BB">$polex</font><font color="#007700">*</font><font color="#0000BB">10</font><font color="#007700">)*(</font><font color="#0000BB">$x</font><font color="#007700">-</font><font color="#0000BB">$polex</font><font color="#007700">*</font><font color="#0000BB">10</font><font color="#007700">)+(</font><font color="#0000BB">$y</font><font color="#007700">-</font><font color="#0000BB">$poley</font><font color="#007700">)*(</font><font color="#0000BB">$y</font><font color="#007700">-</font><font color="#0000BB">$poley</font><font color="#007700">);<br /> </font><font color="#0000BB">$f </font><font color="#007700">= </font><font color="#0000BB">$r</font><font color="#007700">/</font><font color="#0000BB">$maxr</font><font color="#007700">;<br /> if( </font><font color="#0000BB">$f </font><font color="#007700">> </font><font color="#0000BB">1 </font><font color="#007700">) </font><font color="#0000BB">$f</font><font color="#007700">=</font><font color="#0000BB">1</font><font color="#007700">;<br /> </font><font color="#0000BB">$red </font><font color="#007700">= </font><font color="#0000BB">floor</font><font color="#007700">((</font><font color="#0000BB">1</font><font color="#007700">-</font><font color="#0000BB">$f</font><font color="#007700">)*</font><font color="#0000BB">255</font><font color="#007700">);<br /> </font><font color="#0000BB">$blue </font><font color="#007700">= </font><font color="#0000BB">floor</font><font color="#007700">(</font><font color="#0000BB">$f</font><font color="#007700">*</font><font color="#0000BB">255</font><font color="#007700">);<br /> </font><font color="#0000BB">$color </font><font color="#007700">= array(</font><font color="#0000BB">$red</font><font color="#007700">,</font><font color="#0000BB">0</font><font color="#007700">,</font><font color="#0000BB">$blue</font><font color="#007700">);<br /> </font><font color="#FF8000">//echo "x=$x, y=$y, blue=$blue, red=$red<br>";<br /> </font><font color="#007700">return array(</font><font color="#0000BB">$color</font><font color="#007700">,</font><font color="#0000BB">$size</font><font color="#007700">,</font><font color="#0000BB">$arrowsize</font><font color="#007700">);<br />}<br /><br /></font><font color="#FF8000">// Create data for a simulated pseudo-magnetic radient field<br /></font><font color="#0000BB">$datax </font><font color="#007700">= array();<br /></font><font color="#0000BB">$datay </font><font color="#007700">= array();<br /></font><font color="#0000BB">$angle </font><font color="#007700">= array();<br />for(</font><font color="#0000BB">$x</font><font color="#007700">=</font><font color="#0000BB">1</font><font color="#007700">; </font><font color="#0000BB">$x </font><font color="#007700">< </font><font color="#0000BB">10</font><font color="#007700">; ++</font><font color="#0000BB">$x </font><font color="#007700">) {<br /> for(</font><font color="#0000BB">$y</font><font color="#007700">=</font><font color="#0000BB">10</font><font color="#007700">; </font><font color="#0000BB">$y</font><font color="#007700"><</font><font color="#0000BB">100</font><font color="#007700">; </font><font color="#0000BB">$y </font><font color="#007700">+= </font><font color="#0000BB">10</font><font color="#007700">) {<br /> </font><font color="#0000BB">$a </font><font color="#007700">= -</font><font color="#0000BB">1</font><font color="#007700">;<br /> if( </font><font color="#0000BB">$x</font><font color="#007700">==</font><font color="#0000BB">$polex </font><font color="#007700">&& </font><font color="#0000BB">$y</font><font color="#007700">==</font><font color="#0000BB">$poley </font><font color="#007700">) continue;<br /> if( </font><font color="#0000BB">$x</font><font color="#007700">==</font><font color="#0000BB">$polex </font><font color="#007700">) {<br /> if( </font><font color="#0000BB">$y </font><font color="#007700">> </font><font color="#0000BB">$poley </font><font color="#007700">) </font><font color="#0000BB">$a</font><font color="#007700">=</font><font color="#0000BB">90</font><font color="#007700">;<br /> else </font><font color="#0000BB">$a </font><font color="#007700">= </font><font color="#0000BB">270</font><font color="#007700">;<br /> }<br /> if( </font><font color="#0000BB">$y</font><font color="#007700">==</font><font color="#0000BB">$poley </font><font color="#007700">) {<br /> if( </font><font color="#0000BB">$x </font><font color="#007700">> </font><font color="#0000BB">$polex </font><font color="#007700">) </font><font color="#0000BB">$a</font><font color="#007700">=</font><font color="#0000BB">0</font><font color="#007700">;<br /> else </font><font color="#0000BB">$a</font><font color="#007700">=</font><font color="#0000BB">180</font><font color="#007700">; <br /> }<br /> if( </font><font color="#0000BB">$a </font><font color="#007700">== -</font><font color="#0000BB">1 </font><font color="#007700">) {<br /> </font><font color="#0000BB">$d1 </font><font color="#007700">= </font><font color="#0000BB">$y</font><font color="#007700">-</font><font color="#0000BB">$poley</font><font color="#007700">;<br /> </font><font color="#0000BB">$d2 </font><font color="#007700">= (</font><font color="#0000BB">$polex</font><font color="#007700">-</font><font color="#0000BB">$x</font><font color="#007700">)*</font><font color="#0000BB">20</font><font color="#007700">;<br /> if( </font><font color="#0000BB">$y </font><font color="#007700">< </font><font color="#0000BB">$poley </font><font color="#007700">) </font><font color="#0000BB">$d2 </font><font color="#007700">*= -</font><font color="#0000BB">1</font><font color="#007700">;<br /> </font><font color="#0000BB">$h </font><font color="#007700">= </font><font color="#0000BB">sqrt</font><font color="#007700">(</font><font color="#0000BB">$d1</font><font color="#007700">*</font><font color="#0000BB">$d1</font><font color="#007700">+</font><font color="#0000BB">$d2</font><font color="#007700">*</font><font color="#0000BB">$d2</font><font color="#007700">);<br /> </font><font color="#0000BB">$t </font><font color="#007700">= -</font><font color="#0000BB">$d2</font><font color="#007700">/</font><font color="#0000BB">$h</font><font color="#007700">;<br /> </font><font color="#0000BB">$ac </font><font color="#007700">= </font><font color="#0000BB">acos</font><font color="#007700">(</font><font color="#0000BB">$t</font><font color="#007700">);<br /> if( </font><font color="#0000BB">$y </font><font color="#007700">< </font><font color="#0000BB">$poley </font><font color="#007700">) </font><font color="#0000BB">$ac </font><font color="#007700">+= </font><font color="#0000BB">M_PI</font><font color="#007700">;<br /> </font><font color="#0000BB">$a </font><font color="#007700">= </font><font color="#0000BB">$ac </font><font color="#007700">* </font><font color="#0000BB">180</font><font color="#007700">/</font><font color="#0000BB">M_PI</font><font color="#007700">;<br /> }<br /> </font><font color="#0000BB">$datax</font><font color="#007700">[] = </font><font color="#0000BB">$x</font><font color="#007700">;<br /> </font><font color="#0000BB">$datay</font><font color="#007700">[] = </font><font color="#0000BB">$y</font><font color="#007700">;<br /> </font><font color="#0000BB">$angle</font><font color="#007700">[] = </font><font color="#0000BB">$a</font><font color="#007700">;<br /> }<br />}<br /><br /></font><font color="#FF8000">// Setup the graph<br /></font><font color="#0000BB">$graph </font><font color="#007700">= new </font><font color="#0000BB">Graph</font><font color="#007700">(</font><font color="#0000BB">300</font><font color="#007700">,</font><font color="#0000BB">200</font><font color="#007700">);<br /></font><font color="#0000BB">$graph</font><font color="#007700">-></font><font color="#0000BB">SetScale</font><font color="#007700">(</font><font color="#DD0000">"intlin"</font><font color="#007700">,</font><font color="#0000BB">0</font><font color="#007700">,</font><font color="#0000BB">100</font><font color="#007700">,</font><font color="#0000BB">0</font><font color="#007700">,</font><font color="#0000BB">10</font><font color="#007700">);<br /></font><font color="#0000BB">$graph</font><font color="#007700">-></font><font color="#0000BB">SetMarginColor</font><font color="#007700">(</font><font color="#DD0000">'lightblue'</font><font color="#007700">);<br /><br /><br /></font><font color="#FF8000">// ..and titles<br /></font><font color="#0000BB">$graph</font><font color="#007700">-></font><font color="#0000BB">title</font><font color="#007700">-></font><font color="#0000BB">Set</font><font color="#007700">(</font><font color="#DD0000">"Field plot"</font><font color="#007700">);<br /><br /></font><font color="#FF8000">// Setup the field plot<br /></font><font color="#0000BB">$fp </font><font color="#007700">= new </font><font color="#0000BB">FieldPlot</font><font color="#007700">(</font><font color="#0000BB">$datay</font><font color="#007700">,</font><font color="#0000BB">$datax</font><font color="#007700">,</font><font color="#0000BB">$angle</font><font color="#007700">);<br /><br /></font><font color="#FF8000">// Setup formatting callback<br /></font><font color="#0000BB">$fp</font><font color="#007700">-></font><font color="#0000BB">SetCallback</font><font color="#007700">(</font><font color="#DD0000">'FldCallback'</font><font color="#007700">);<br /><br /></font><font color="#FF8000">// First size argument is length (in pixels of arrow) <br />// Second size argument is roughly size of arrow. Arrow size is specified as<br />// an integer in the range [0,9]<br /></font><font color="#0000BB">$fp</font><font color="#007700">-></font><font color="#0000BB">arrow</font><font color="#007700">-></font><font color="#0000BB">SetSize</font><font color="#007700">(</font><font color="#0000BB">20</font><font color="#007700">,</font><font color="#0000BB">2</font><fontcolor="#007700">);<br /></font><font color="#0000BB">$fp</font><font color="#007700">-></font><font color="#0000BB">arrow</font><font color="#007700">-></font><font color="#0000BB">SetColor</font><font color="#007700">(</font><font color="#DD0000">'navy'</font><font color="#007700">);<br /><br /></font><font color="#0000BB">$graph</font><font color="#007700">-></font><font color="#0000BB">Add</font><font color="#007700">(</font><font color="#0000BB">$fp</font><font color="#007700">);<br /><br /></font><font color="#FF8000">// .. and output<br /></font><font color="#0000BB">$graph</font><font color="#007700">-></font><font color="#0000BB">Stroke</font><font color="#007700">();<br /><br /></font><font color="#0000BB">?><br /></font><br /><br /></font></code>