<?php
	// Configuració inicial
	header('Content-Type: image/png');
	header("Access-Control-Allow-Origin: *");

	// Paràmetres inicials
	$radius = 10; // Radi de la circumferència
	$num_polygons = isset($_GET['n']) ? intval($_GET['n']) : 6; // Nombre de costats (paràmetre d'entrada)

	// Validació del nombre de costats
	if (($num_polygons < 3) Or ($num_polygons > 1000000)) {
	    die("El nombre de costats ha de ser almenys 3 i com a màxim 1000000.");
	}

	// Càlcul del valor de pi utilitzant l'algorisme d'Arquímedes
	function calculate_pi($n, $radius) {
	    $angle = M_PI / $n;
	    $inscribed_side = 2 * $radius * sin($angle);
	    $circumscribed_side = 2 * $radius * tan($angle);

	    $inscribed_perimeter = $n * $inscribed_side;
	    $circumscribed_perimeter = $n * $circumscribed_side;

	    $pi_lower = $inscribed_perimeter / (2 * $radius);
	    $pi_upper = $circumscribed_perimeter / (2 * $radius);

	    return [$pi_lower, $pi_upper];
	}

	// Resultats
	list($pi_lower, $pi_upper) = calculate_pi($num_polygons, $radius);

	// Creació del gràfic
	$image_width = 400;
	$image_height = 400;
	$image = imagecreate($image_width, $image_height);

	// Colors
	$background = imagecolorallocate($image, 255, 255, 255); // Blanc
	$circle_color = imagecolorallocate($image, 0, 0, 0); // Negre
	$inscribed_color = imagecolorallocate($image, 0, 128, 0); // Verd
	$circumscribed_color = imagecolorallocate($image, 128, 0, 0); // Vermell

	// Centre de la circumferència
	$cx = $image_width / 2;
	$cy = $image_height / 2;

	// Dibuix de la circumferència
	imagearc($image, $cx, $cy, 2 * $radius * 10, 2 * $radius * 10, 0, 360, $circle_color);

	// Funció per dibuixar un polígon
	function draw_polygon($image, $cx, $cy, $radius, $sides, $color) {
	    $points = [];
	    for ($i = 0; $i < $sides; $i++) {
		$angle = 2 * M_PI * $i / $sides;
		$x = $cx + $radius * cos($angle) * 10; // Escala per fer-ho visible
		$y = $cy + $radius * sin($angle) * 10; // Escala per fer-ho visible
		$points[] = $x;
		$points[] = $y;
	    }
	    imagepolygon($image, $points, $sides, $color);
	}

	// Dibuix del polígon inscrit (vèrtexs a la circumferència)
	draw_polygon($image, $cx, $cy, $radius, $num_polygons, $inscribed_color);

	// Dibuix del polígon circumscrit (radi ampliat segons el radi d'una circumferència que conté els costats)
	$circumscribed_radius = $radius / cos(M_PI / $num_polygons);
	draw_polygon($image, $cx, $cy, $circumscribed_radius, $num_polygons, $circumscribed_color);

	// Afegim el text amb els resultats
	$text_color = imagecolorallocate($image, 0, 0, 0);
	imagestring($image, 5, 10, 10, "Poligons: $num_polygons", $text_color);
	imagestring($image, 5, 10, 30, "Acotacio de Pi:", $text_color);
	imagestring($image, 5, 10, 50, "Inferior: " . number_format($pi_lower, 12), $text_color);
	imagestring($image, 5, 10, 70, "Superior: " . number_format($pi_upper, 12), $text_color);

	// Generació del gràfic
	imagepng($image);
	imagedestroy($image);
?>