[GD] Formen gekräuselt füllen?

multimolti

Erfahrenes Mitglied
Hallo!

Ich bin grade dabei, einen Online-Trainer für das Kartenspiel "Set" zu schreiben. Bisher bin ich bei der dynamischen Generierung der Karten.

Ich muss meine Formen auf bestimmte Arten füllen, einmal ganz, einmal gar nicht und einmal so gekräuselt. Ganz und gar nicht füllen ist kein Problem, einfach imagerectangle oder imagefilledrectangle benutzen, aber wie kann ich das gekräuselte realisieren?

Soll ich vielleicht einfach in einer nicht ganz so starken Farbe füllen?

Schon mal Danke für eure Antworten.

EDIT:
Mit "gekräuselt" meine ich in etwa sowas, was MS Paint macht, wenn man die Spraydose nimmt, nur etwas grobkörniger. Schräge Linien wären auch eine Alternative, aber wie soll ich denen beibringen, nicht aus der Form heraus zu gehen?
 
Zuletzt bearbeitet:
Wenn die Formen Rechteckig sind, dann ist dass ja kein großes Problem:
PHP:
<?php
header('Content-Type: image/jpeg');
$size = array(80, 80);
$coordsX = array(20, 60);
$coordsY = array(20, 60);

$image = imagecreatetruecolor($size[0], $size[1]);
$colBlack = imagecolorallocate ($image, 0, 0, 0);
$colWhite = imagecolorallocate ($image, 255, 255, 255);

imagefill($image, 0, 0, $colWhite);

for($i = $coordsY[0]; $i <= $coordsY[1]; $i++)
{
	for($j = $coordsX[0]; $j <= $coordsX[1]; $j++)
	{
		if(mt_rand(0, 80) < 2) // Je größer der Bereich von mt_rand(), umso schwacher das "Rauschen"
		{
			imagesetpixel($image, $i, $j, $colBlack);
		}
	}
}

imagejpeg($image, '', 80);
imagedestroy($image);
?>
 
Zuletzt bearbeitet:
Ja, sowas in etwa habe ich mir auch schon vorgestellt. Habe leider auch Ellipsen und ganz komische Formen, bei denen könnte das etwas schwerer werden, aber einen Versuch ist es wert. Bei der Ellipse müsste man mit Sinus ausrechnen können, wo nen Punkt hin soll und wo nicht.


// EDIT:
Hat einer von euch eine Idee, wie man ausrechnen könnte, ob ein bestimmter Punkt in der Ellipse liegt? Habe mir schon das hier angeschaut: http://de.wikipedia.org/wiki/Ellipse#Ellipsengleichung_.28kartesische_Koordinaten.29 das ist ganz hilfreich, aber so richtig verwenden kann ich es doch noch nicht.
 
Zuletzt bearbeitet:
Habe eine Funktion für Visual Basic gefunden, die das ermittelt, und für PHP umgeschrieben. Jetzt habe ich diesen Code:
PHP:
class Ellipse
{
	public $a;
	public $b;
	public $center;
	
	function __construct($center, $a, $b)
	{
		$this->center = $center;
		$this->a = $a;
		$this->b = $b;
	}
}
class Point
{
	public $x;
	public $y;
	
	function __construct($x, $y)
	{
		$this->x = $x;
		$this->y = $y;
	}
}
function pointInEllipse($point, $ellipse)
{
	return ((pow(($point->x - $ellipse->center->x), 2) / pow($ellipse->a, 2)) + 
	       (($point->y - $ellipse->center->y)     / pow($ellipse->b, 2)) <= 1);
}

Der ist ja ganz nett, aber irgendwie gibt mir die pointInEllipse Funktion immer true zurück, wenn ich das in die Schleife von oben einfüge. Das ist nicht ganz so toll. Habe mal einen Test gemacht, mir selbst ein Koordinatensystem gezeichnet mit einer Ellipse, mir einen Punkt ausgesucht und den überprüfen lassen, aber die Funktion gibt irgendwie was anderes zurück als erwartet.

Vielleicht verwechsel ich den Einsatz von a und b?

So mache ich das:
PHP:
$ellipse = new Ellipse(new Point($mittex, $mittey), $breite, $hoehe);
 
Zurück