bool_substract
bool_substract(bg, fg) -> List of points
Substract bg to fg polygons (must have common part). The fg/bg order is crucial.
Syntaxe
var result = bool_substract(bg=poly1, fg=poly2);
Arguments
| Name | Required | Default | Description |
|---|---|---|---|
bg | yes | - | Polygon in background |
fg | yes | - | Polygon in foreground |
Full example
var scale = 0.4;
canvas(2650*scale, 1300*scale);
coord_open();
coord_scale(scale);
var rec = [150, 150, 600, 150, 600, 400, 150, 400];
var tri = [375, 250, 263, 533, 488, 533];
var result ;
load_text_default(60);
def polyview(texte) {
text(texte, 150, 100, stroke="#000");
polygon(rec, stroke="#0177E1", fill="transparent", weight=6);
polygon(tri, stroke="#F5D216", fill="transparent", weight=6);
}
polygon(rec, fill="#0177E1");
polygon(tri, fill="#F5D216");
text("2 polygons", 150, 100, stroke="#000");
result = bool_combine(rec, tri);
coord_open();
coord_translate(600, 0);
polyview("combine") ;
polygon(result, fill="#FD3502");
coord_close();
result = bool_substract(tri, rec);
coord_open();
coord_translate(0, 600);
polyview("substract tri, rec") ;
polygon(result, fill="#FD3502");
coord_close();
result = bool_substract(rec,tri);
coord_open();
coord_translate(600, 600);
polyview("substract rec,tri") ;
polygon(result, fill="#FD3502");
coord_close();
result = bool_intersect(rec, tri);
coord_open();
coord_translate(1200, 600);
polyview("intersect") ;
polygon(result, fill="#FD3502");
coord_close();
result = bool_xor(rec, tri);
console(result);
coord_open();
coord_translate(1200, 0);
polyview("xor (?)") ;
polygon(result, fill="#FD3502");
coord_close();
coord_open();
coord_scale(0.8);
coord_translate(400, 80);
var arr1 = polygon_regular(x=2200, y=200, side=360, radius=150, rotation=17, draw=false);
var arr2 = polygon_regular(x=2400, y=200, side=360, radius=150, rotation=17, draw=false);
var arr3 = polygon_regular(x=2600, y=200, side=360, radius=150, rotation=17, draw=false);
polygon(arr1, fill="#FD3502");
polygon(arr2, fill="#0177E1");
polygon(arr3, fill="#F5D216");
coord_open();
coord_translate(0, 350);
result = bool_combine(arr1, arr2);
polygon(result, fill="#b268cdff");
polygon(arr3, fill="#F5D216");
coord_close();
coord_open();
coord_translate(0, 700);
result = bool_substract(result, arr3);
polygon(result, fill="#b268cdff");
coord_close();
coord_open();
coord_translate(0, 1100);
arr1 = polygon_regular(x=2200, y=200, side=6, radius=150, rotation=0, draw=false);
arr3 = polygon_regular(x=2600, y=200, side=4, radius=180, rotation=0, draw=false);
result = bool_substract(arr2, arr1);
result = bool_substract(result, arr3);
polygon(result, fill="#F5D216");
coord_open();
coord_translate(20, 0);
polygon(arr3, fill="#0177E1");
coord_close();
coord_translate(-20, 0);
polygon(arr1, fill="#FD3502");
coord_close();
coord_close();
save("bool.png");
