Utilizzo di cookies
Script GD libray con PHP Modelli Creare immagine Colore e trasparenza Disegnare Pennelli Misurare Filtri Testo Copy Salvare Miscellanea
GD library con PHP
Fra circonferenze e poligoni
Disegno di figure con effetto 3d


e-book
cartaceo
Base A Larghezza Altezza:
Base A Centro X,Y
Base B Larghezza Altezza:
:
Base B Centro X,Y
VerticiQuantita: VerticeStart:
Cambiare i valori e premere
fra circonferenze e poligoni Nello script, la funzione CirconferenzePoligoni() viene chiamata due volte disegnando, con imagefilledarc()  la maschera usando i valori delle variabili:

$Immagine, $BaseLargezza, $BaseAltezza,$Vertici, $InizioVertici,$Cx, $Cy, $Colore.
(circonferenze ed ellissi da impiegare nel disegno di figure con effetto 3d).
Ritornando i valori negli array $PuntiXYa e  $PuntiXYb
Quindi alle righe:
for($z=0; $z<$VerticiQuantita*2 ;$z+=2)
{imageline ($Immagine , $PuntiXYa[$z] , $PuntiXYa[$z+1] , $PuntiXYb[$z] , $PuntiXYb[$z+1] , $Verde);}
viene disegnato l'effetto 3D

Variabili che vengono passati alla funzione Disegna()  $Immagine, l'immagine creata con imagecreate()$BaseALargezza, $BaseAAltezza, dimensioni dalla base A della figura 3d$BaseACX,$BaseACY, centro base A della figura circolare che, eventualmente, fa da maschera$BaseBLargezza, $BaseBAltezza, dimensioni dalla base B dellea figura 3d$BaseBCX,$BaseBCY, centro base B della figura circolare che, eventualmente, fa da maschera$VerticiQuantita, se poligono numero vertici, se circonferenza o ellissi punti per effetto 3d$VerticeStart, se poligono, sulla circonferenza/ellissi, posizione primo vertice disegnato
<?php $BaseALargezza = isset($_POST['BaseALargezza']) ? $_POST['BaseALargezza'] : 200; $BaseAAltezza = isset($_POST['BaseAAltezza']) ? $_POST['BaseAAltezza'] : 80;$BaseACX = isset($_POST['BaseACX']) ? $_POST['BaseACX'] : 200; $BaseACY = isset($_POST['BaseACY']) ? $_POST['BaseACY'] : 120; $BaseBLarghezza = isset($_POST['BaseBLarghezza']) ? $_POST['BaseBLarghezza'] : 200; $BaseBAltezza = isset($_POST['BaseBAltezza']) ? $_POST['BaseBAltezza'] : 80;$BaseBCX = isset($_POST['BaseBCX']) ? $_POST['BaseBCX'] : 200; $BaseBCY = isset($_POST['BaseBCY']) ? $_POST['BaseBCY'] : 250; $VerticiQuantita = isset($_POST['VerticiQuantita']) ? $_POST['VerticiQuantita'] : 6; $VerticeStart = isset($_POST['VerticeStart']) ? $_POST['VerticeStart'] : 0; 
function CirconferenzePoligoni($Immagine,  $BaseLargezza, $BaseAltezza, $Vertici, $InizioVertici, $Cx, $Cy,  $Colore){$Valori = array (); // definisce vertici se figura piana e punti per effetto 3dfor($L = 0; $L < $Vertici; $L ++) {$Valori[$L] = 360/ $Vertici;}; // dimensione lati/punti effetto 3d$PuntiXY = array(); // Inizializza l'array per piano cartesiano
foreach($Valori as $index => $V ) { // scorre array $Valori$Corda = $Valori[$index]; // lato poligoni
// ***  per vertici poligono inscritto calcola X,Y sul piano cartesiano *** $VerticeCorrente = ($InizioVertici + $Corda) + 90; // sincronizza con GD che inizia ad ore 3$sin = sin(deg2rad($VerticeCorrente)); $cos = cos(deg2rad($VerticeCorrente)); // valori in radianti$RadX =  round($cos*(0) - $sin*($BaseLargezza * .5 * -1)); // Vertice corrente, X su cartesiano$RadY =  round($sin*(0) + $cos*($BaseAltezza * .5 * -1)); // Vertice corrente, Y su cartesiano
// Spinge il valore nella matrice punti/vertici, origini per effetto 3d array_push($PuntiXY, $Cx + $RadX); array_push($PuntiXY, $Cy + $RadY);  $style = 3; // IMG_ARC_NOFILL+IMG_ARC_CHORD = 11, corde if($Vertici > 12){$style = 2;} // IMG_ARC_NOFILL = 2, archi imagefilledarc($Immagine, $Cx, $Cy, //  coordinate x,y del centro $BaseLargezza, $BaseAltezza,  $InizioVertici, // inizio arco o corda $InizioVertici + $Corda, // fine arco o corda  $Colore, // colore passato alla funzione $style );
$InizioVertici += $Corda; // nuovo vertice}return $PuntiXY; // ritornano valori xy vertici Poligoni o punti su Circonferenze per effetto 3d}$Immagine = imagecreate(400, 400); // crea l'immagineimagecolorallocate($Immagine, 204, 204, 204); // sfondo $Verde = imagecolorallocate($Immagine, 0, 204, 51); $Nero = imagecolorallocate($Immagine, 0, 0, 0);
// inizio chiamate alla funzione crea circonferenze/poligoni$PuntiXYa = CirconferenzePoligoni($Immagine, $BaseALargezza, $BaseAAltezza,  $VerticiQuantita, $VerticeStart,  $BaseACX, $BaseACY,  $Nero );
$PuntiXYb = CirconferenzePoligoni($Immagine,  $BaseBLarghezza, $BaseBAltezza,  $VerticiQuantita, $VerticeStart,  $BaseBCX, $BaseBCY,  $Nero );
for($z=0; $z<$VerticiQuantita*2 ;$z+=2)// effetto 3d{imageline ($Immagine , $PuntiXYa[$z] , $PuntiXYa[$z+1] , $PuntiXYb[$z] , $PuntiXYb[$z+1] , $Verde);}
// CirconferenzePoligoni altezzaimageline ($Immagine , $BaseACX, $BaseACY , $BaseBCX, $BaseBCY , $Nero);
imagepng($Immagine,"NomeFile.png"); // salva immagineimagedestroy($Immagine); // libera memoria?> Risultato: