<?php 
/****** 
 * RECTSLIB CLASS 
 * 
 * [RECTSLIB] is a utility for the group of rectangles. 
 * Lib help you to construct the rectangles in various logical operations such as Union, Intersect abd Subtract. 
 * This lib is free for the educational use as long as maintain this header together with this lib. 
 * Author: Win Aung Cho 
 * Contact [email protected] 
 * version 1.0 
 * Date: 17-02-2023 
 * 
 ******/ 
 
require_once ("rectslib.php"); 
$img_width = 640; 
$img_height = 480; 
  
$img = imagecreatetruecolor($img_width, $img_height); 
 
$black = imagecolorallocate($img, 0, 0, 0); 
$white = imagecolorallocate($img, 255, 255, 255); 
$grey = imagecolorallocate($img, 128, 128, 128); 
$red   = imagecolorallocate($img, 255, 0, 0); 
$green = imagecolorallocate($img, 0, 255, 0); 
$blue  = imagecolorallocate($img, 0, 200, 250); 
$orange = imagecolorallocate($img, 255, 200, 0); 
$brown = imagecolorallocate($img, 220, 110, 0); 
$magenta = imagecolorallocate($img, 220, 0, 220); 
$indego = imagecolorallocate($img, 220, 110, 110); 
 
 
$rectslib = new RectsLib(); 
$A = $rectslib->p1p2(10, 10, 300, 200, "A", $green); 
$B = $rectslib->p1p2(40, 30, 200, 300, "B", $red); 
$C = $rectslib->p1p2(150, 40, 400, 150, "C", $orange); 
$D = $rectslib->p1p2(140, 320, 200, 400, "D", $blue); 
$E = $rectslib->p1p2(80, 160, 250, 250, "E", $brown); 
$rects = [$A, $B, $C, $D, $E]; 
echo $rectslib->showRects($rects); 
 
$mode = 0; 
if (isset($_GET["m"])) 
    $mode = $_GET["m"]; 
     
$rectslib->fillRects($img, $rects); 
$all = $rectslib->merge($rects, $grey); 
$fname = "rectsorigin.png"; 
echo "<div style='font-size:30px;'>"; 
if ($mode == 0){ 
    echo "Original rectangles."; 
    echo "\t<a href='?m=1'>NEXT</a>"; 
} 
if ($mode == 1){ 
    $rectslib->fillRects($img, $all); 
    $rectslib->drawRects($img, $all, $brown); 
    $fname = "rectsuniversal.png"; 
    echo "Universal mesh for all rectangles."; 
    echo "\t<a href='?m=2'>NEXT</a>"; 
} 
if ($mode == 2){ 
    $uni = $rectslib->union([$A, $B], [$C, $D]); 
    $rectslib->fillRects($img, $uni); 
    $rectslib->drawRects($img, $uni, $indego); 
    $edges = $rectslib->genEdges($uni); 
    $rectslib->drawEdges($img, $edges, $white); 
    $fname = "rectsunion.png"; 
    echo "Union of [A B] & [C D]"; 
    echo "\t<a href='?m=3'>NEXT</a>"; 
} 
 
if ($mode == 3){ 
    $Intersect = $rectslib->intersect([$A, $B, $C, $D], [$B, $E]); 
    $rectslib->fillRects($img, $Intersect); 
    $rectslib->drawRects($img, $Intersect, $indego); 
    $edges = $rectslib->genEdges($Intersect); 
    $rectslib->drawEdges($img, $edges, $white); 
    $fname = "rectsintersect.png"; 
    echo "Intersect of [A B C D] & [B E]"; 
    echo "\t<a href='?m=4'>NEXT</a>"; 
} 
if ($mode == 4){ 
    $subt = $rectslib->subtract([$A, $B, $C, $D], [$B, $E]); 
    $rectslib->fillRects($img, $subt); 
    $rectslib->drawRects($img, $subt, $indego); 
    $edges = $rectslib->genEdges($subt); 
    $rectslib->drawEdges($img, $edges, $white); 
    $fname = "rectssubtract.png"; 
    echo "Subtract [B E] from [A B C D]"; 
} 
 
 
imagePng($img, './images/'.$fname); 
imagedestroy($img); 
echo "</div><br/>"; 
echo "<img src='images/$fname?u=".time()."'/>";; 
/* 
A-GREEN-{10,10:300,200} 
B-RED-{40,30:200,300} 
C-ORANGE-{150,40:400,150} 
D-BLUE-{140,320:200,400} 
E-BROWN-{80,160:250,250} 
*/ 
?> 
 
 |