Biohazard Yellow on Black

T-Shirts & Hoodies

Clothing Style:
$24.80
Rupert Russell

Ballarat, Australia

  • Product
    Info
  • Product
    Reviews
  • Available
    Products
    52
  • Artist
    Notes
  • Artwork Comments 2

Sizing Information

S M L XL 2XL 3XL
Chest 36" 40" 44" 48" 52" 56"
Length 28" 29" 30" 31" 32" 33"
Sizing chart
Model wears a size L

Features

  • Plain colour t-shirts are 100% Cotton, Heather Grey is 90% Cotton/10% Polyester, Charcoal Heather is 52% Cotton/48% Polyester
  • Ethically sourced
  • Slim fit, but if that's not your thing, order a size up
  • 4.2oz/145g, but if that's too light, try our heavier classic tee.

Reviews

Apparel

Cases & Skins

Wall Art

Home Decor

Bags

Stationery

Artist's Description

// Biohazard Warning Symbol
// Code by Rupert Russell
// rupert.russell1@gmail.com
// Released under Creative Commons Licence
// Licensed under Creative Commons Attribution ShareAlike
// https://creativecommons.org/licenses/by-sa/3.0
// https://creativecommons.org/licenses/GPL/2.0/
// Based on the design https://cws.auburn.edu/shared/content/files/162...
// https://archive.org/stream/federalregister39kun...

//http://99percentinvisible.org/article/biohazard...

float a = 90; // Basic Unit size of Warning symbol
float b = 3.5 * a;
float c = 4 * a;
float d = 6 * a;
float e = 11 * a;
float f = 15 * a;
float g = 21 * a;
float h = 30 * a;

PGraphics foreground;
PGraphics clearLines;
PGraphics arc;
PGraphics mask;
PGraphics combined;

void setup() {
size(4800, 4800);
int xWidth = 4800;
int yHeight = 4800;

foreground = createGraphics(xWidth, yHeight);
clearLines = createGraphics(xWidth, yHeight);
arc = createGraphics(xWidth, yHeight);
mask = createGraphics(xWidth, yHeight);
combined = createGraphics(xWidth, yHeight);

background(255);
noLoop();
}

void draw() {

// initialise the combined layer// There is noting in this layer except a white backgroud// we will build this layer from the component layers below

combined.beginDraw();
combined.background(255);
combined.endDraw();

foreground.beginDraw();
foreground.noStroke();

// 3 Main Circles

foreground.pushMatrix(); // remember the current default screen settings
foreground.translate(width / 2, height / 2); // move the origin to the center of the screen

foreground.rotate(radians(90 – 90));
foreground.fill(255,255, 0);
foreground.ellipse(0, -11 * a, a * 30, a * 30);
foreground.popMatrix(); // return to the default screen settings for rotation

foreground.pushMatrix(); // remember the current default screen settings
foreground.translate(width / 2, height / 2);
foreground.rotate(radians(210 – 90));
foreground.ellipse(0, 0 – 11 * a, a * 30, a * 30);

foreground.popMatrix(); // return to the default screen settings for rotation
foreground.pushMatrix(); // remember the current default screen settings
foreground.translate(width / 2, height / 2);
foreground.rotate(radians(330 – 90 ));
foreground.ellipse(0, 0 – 11 * a, a * 30, a * 30);
foreground.popMatrix(); // return to the default screen settings for rotation
foreground.endDraw();

// 3 inner white Circles

foreground.beginDraw();
foreground.pushMatrix(); // remember the current default screen settings
foreground.translate(width / 2, height / 2); // move the origin to the center of the screen
foreground.rotate(radians(90 – 90));
foreground.fill(255, 255, 255);
foreground.ellipse(0, -15 * a, a * 21, a * 21);
foreground.popMatrix(); // return to the default screen settings for rotation

foreground.pushMatrix(); // remember the current default screen settings
foreground.translate(width / 2, height / 2);
foreground.rotate(radians(210 – 90));
foreground.ellipse(0, 0 – 15 * a, a * 21, a * 21);
foreground.popMatrix(); // return to the default screen settings for rotation

foreground.translate(width / 2, height / 2);
foreground.rotate(radians(330 – 90 ));
foreground.ellipse(0, 0 – 15 * a, a * 21, a * 21);

// foreground.clear();// center white circle

foreground.noStroke();
foreground.fill(255);
foreground.ellipse(0, 0, a * 6, a * 6);
foreground.endDraw();

// clear lines -———————————————————-

clearLines.beginDraw();
clearLines.smooth();
clearLines.fill(255, 255, 255);
clearLines.noStroke();
clearLines.pushMatrix();
clearLines.translate(width / 2, height / 2); // move the origin to the center of the screen
clearLines.rotate(radians(210 90 ));
clearLines.rect(
0.5 * a, – a * 5, a, a * 5);
clearLines.popMatrix();
clearLines.endDraw();
// End clear lines -———————————————————-

// Arc -———————————————————-

arc.beginDraw();
arc.fill(255,255, 0);
arc.noStroke();
// first large orange circle
arc.ellipse(width / 2, height / 2, (e – a + b) * 2, (e – a + b) * 2);

// White inner circle

arc.fill(255);
arc.ellipse(width / 2, height / 2, (e – a) * 2, (e – a) * 2);
arc.endDraw();
// End Arc -———————————————————-

// Magenta masks -—————————

mask.beginDraw();
mask.noStroke();
mask.fill(255, 0, 255);
mask.pushMatrix(); // remember the current default screen settings
mask.translate(width / 2, height / 2); // move the origin to the center of the screen

mask.rotate(radians(90 – 90));
mask.ellipse(0, 0 – f, (g – a), (g – a));
mask.popMatrix(); // return to the default screen settings for rotation

mask.pushMatrix(); // remember the current default screen settings
mask.translate(width / 2, height / 2);
mask.rotate(radians(210 – 90));
mask.ellipse(0, 0 – f, (g – a), (g – a));
mask.popMatrix(); // return to the default screen settings for rotation

mask.pushMatrix(); // remember the current default screen settings
mask.translate(width / 2, height / 2);
mask.rotate(radians(330 – 90 ));
mask.ellipse(0, 0 – f, (g – a), (g – a));
mask.popMatrix(); // return to the default screen settings for rotation
mask.endDraw();

// End Magenta masks -—————————//pixel array method for combining layers ********************************// build up the combined image from layers using masks

mask.loadPixels();
combined.loadPixels();
arc.loadPixels();
foreground.loadPixels();

// add the 3 arcs to the combined image

for (int p = 0; p <mask.width * mask.height; p++) {
if (mask.pixels[p]==#FF00FF) {
// Make White on PG1 transparent and “show” pg2 pixels through it.
combined.pixels[p]= arc.pixels[p]; //replace it with the new color
}
}

// add all non white pixels in the foreground to the combined image

for (int p = 0; p <foreground.width * foreground.height; p++) {
if (foreground.pixels[p] != #FFFFFF) {
combined.pixels[p]= foreground.pixels[p]; //replace it with the new color
}
}

mask.updatePixels();//then update the pixels
arc.updatePixels();//then update the pixels
combined.updatePixels();//then update the pixels

// Draw 3 white gaps in the 3 main circles ======// Gap in the top circle

combined.beginDraw();
combined.image(combined, 0, 0);
combined.noStroke();
combined.rect(width /2 – c/2, height /2 – h + c /2, c, c);

// White gap in right hand lower circle

combined.pushMatrix(); // remember the current default screen settings
// combined.translate(width / 2 – c / 2, height / 2);
combined.translate(width / 2, height / 2);

combined.rotate(radians(210 – 90));
combined.rect(- c/3, – h + c /3, c, c);
combined.popMatrix();

// White gap in left lower hand circle

combined.pushMatrix(); // remember the current default screen settings
combined.translate(width / 2, height / 2 );
// combined.rotate(radians(210 – 90));
combined.rotate(radians(330 – 90 ));
combined.rect(- c/2, – h + c /3, c, c);
combined.popMatrix();

combined.endDraw();
combined.updatePixels();//then update the pixels
// End Draw 3 white gaps in the 3 main circles ======

// Draw 3 small white gaps attached to the inner most circle =====// Gap in the top circle

combined.beginDraw();
combined.image(combined, 0, 0);
combined.noStroke();

combined.fill(255);
combined.rect(width /2 – a/2, height /2 – a * 6, a, a * 4);

// White gap in right hand lower circle

combined.pushMatrix(); // remember the current default screen settings
combined.translate(width / 2, height / 2 );
combined.stroke(0);
combined.popMatrix(); // restore the default screen settings

// right hand side line

combined.pushMatrix(); // remember the current default screen settings
// combined.translate(width / 2, height / 2 + a /2 );
combined.translate(width / 2, height / 2 );
combined.noStroke();
combined.rotate(radians(210 + 90));
combined.fill(255);
combined.rect(0 – a /2, 0 + a /2, a, a * 6);
combined.line(0, 0 + a /2, 100, 600);
combined.popMatrix();

// White gap in left lower hand circle

combined.pushMatrix(); // remember the current default screen settings
combined.translate(width / 2 – a, height / 2 );
combined.stroke(0);
combined.noStroke();
combined.rotate(radians(330 + 90));
combined.fill(255);
combined.rect(0, 0, a, a * 6);
combined.popMatrix();

combined.endDraw();
combined.updatePixels();//then update the pixels

// End Drawing 3 small white gaps attached to the inner most circle =====// display the final results

background(255);
image(arc, 0, 0);
// save(“arc.png”);

background(255);
image(foreground, 0, 0);
// save(“foreground.png”);

background(255);
image(mask, 0, 0);
save(“mask.png”);
// background(255);

image(foreground, 0, 0);
image(mask, 0, 0);
// save(“mask+arcs.png”);

background(255);
image(combined, 0, 0);
save(“combined-4800-Y.png”);
exit();
}

Artwork Comments

  • Rupert Russell
  • Rupert Russell
desktop tablet-landscape content-width tablet-portrait workstream-4-across phone-landscape phone-portrait
desktop tablet-landscape content-width tablet-portrait workstream-4-across phone-landscape phone-portrait

10% off

for joining the Redbubble mailing list

Receive exclusive deals and awesome artist news and content right to your inbox. Free for your convenience.