mozesz zamiescic swoj kod svg ktory toto wygenerowal?
Oto kod. Tylko proszę bez śmichów-chichów - koderem to ja nie jestem ;)
<?php
$szerokosc = 400;
$wysokosc = 400;
$promien = 180;
$dane = array (10,10,10);
$kolory = array ("white", "red", "green", "yellow", "black", "gray", "lime", "pink");
$suma = array_sum($dane);
$M1 = $szerokosc / 2;
$M2 = $wysokosc / 2;
header ("Content-type: image/svg+xml");
echo ("<?xml version="1.0" standalone="no"?>");
echo ("<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">n");
echo ("<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="400px" height="400px" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" image-rendering="optimizeQuality" fill-rule="evenodd" clip-rule="evenodd" viewBox="0 0 400 400" xmlns:xlink="http://www.w3.org/1999/xlink">n");
for ($p=0; $p<count($dane); $p++) {
$wartosc += $dane[$p];
$kat = $wartosc / $suma;
if ($p == 0){
$L1 = ($szerokosc/2)-$promien;
$L2 = ($szerokosc/2);
}
else {
$L1 = $CP1;
$L2 = $CP2;
}
$CP1 = round(($szerokosc/2)-((cos((2 * pi()) * $kat)) * $promien),2);
$CP2 = round(($szerokosc/2)-((sin((2 * pi()) * $kat)) * $promien),2);
echo (" <path stroke="black" stroke-width="3" fill="".$kolory[$p]."" d="");
echo ("M".$M1.",".$M2." L".$L1.",".$L2." A".$promien.",".$promien.", 0 0,1 ".$CP1.",".$CP2." Z");
echo (""/>n");
}
echo("</svg>n");
?>
Przy podanych wartościach rysuje piękny wykres z równymi częściami. Zmieńcie jednak wartości w tablicy $dane na np. 5,5,20.
[ Dodano: 24 Cze 2005 09:04 am ]
Poprawka, teraz dopiero przeczytałem post ilr-a, który podsunął mi niezły pomysł. Oto poprawiona pętla:
for ($p=0; $p<count($dane); $p++) {
$wartosc += $dane[$p];
$kat = $wartosc / $suma;
if ($p == 0){
$L1 = ($szerokosc/2)-$promien;
$L2 = ($szerokosc/2);
}
else {
$L1 = $CP1;
$L2 = $CP2;
}
$CP1 = round(($szerokosc/2)-((cos((2 * pi()) * $kat)) * $promien),2);
$CP2 = round(($szerokosc/2)-((sin((2 * pi()) * $kat)) * $promien),2);
echo (" <path w="".$wartosc."" stroke="black" stroke-width="3" fill="".$kolory[$p]."" d="");
$test = $dane[$p] / $suma;
if ($test > 0.5){
echo ("M".$M1.",".$M2." L".$L1.",".$L2." A".$promien.",".$promien.", 0 1,1 ".$CP1.",".$CP2." Z");
}
else{
echo ("M".$M1.",".$M2." L".$L1.",".$L2." A".$promien.",".$promien.", 0 0,1 ".$CP1.",".$CP2." Z");
}
echo (""/>n");
}
Dzięki chłopaki za pomoc!!! Wiedziałem, że na Was można liczyć :) A ilr ma u mnie winiacza.
Czy możecie wyjaśnić, Stirlitz, dlaczego wasz służbowy adres stirlitz@rsha.gov.de ma aliasa justas@gru.su?
Nie czytam PM. Proszę używać e-mail.