Advertisement
itblanco

exportSVG

Jun 8th, 2020
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.14 KB | None | 0 0
  1. import controlP5.*;
  2. import processing.svg.*;
  3. import java.util.*;
  4.  
  5. float maxAngle = PI/15;
  6. float minAngle = maxAngle;
  7. float maxRadius = 200;
  8. float minRadius = 10;
  9. int numberOfPoints = 3;
  10. int numberOfDivisions = 50;
  11. float amplitude = 6;
  12. boolean exportSVG = false;
  13.  
  14. ControlP5 cp5;
  15.  
  16. void setup() {
  17.   //fullScreen();
  18.   size(1000, 700);
  19.  
  20.   cp5 = new ControlP5(this);
  21.   cp5.setAutoDraw(false);
  22.   cp5.addSlider("maxRadius").setRange((min(width, height)/2-10)*0.5, min(width, height)/2-10).setPosition(10, 10);
  23.   cp5.addSlider("minRadius").setRange(5, (min(width, height)/2-10)*0.45).setPosition(10, 25);
  24.   cp5.addSlider("maxAngle").setRange(0, PI/10).setPosition(170, 10);
  25.   cp5.addSlider("minAngle").setRange(0, PI/10).setPosition(170, 25);
  26.   cp5.addSlider("numberOfPoints").setRange(3, 20).setPosition(340, 10);
  27.   cp5.addSlider("numberOfDivisions").setRange(1, 100).setPosition(340, 25);
  28.   cp5.addSlider("amplitude").setRange(0, 20).setPosition(550, 10);
  29.   cp5.addButton("exportSVG").setPosition(720, 10);
  30. }
  31.  
  32. void draw() {
  33.   background(0);
  34.   cp5.draw();
  35.   translate(width/2, height/2);
  36.   stroke(255);
  37.   noFill();
  38.   if (exportSVG) {
  39.     selectOutput("Save SVG File: ", "saveSVGFile");
  40.   }
  41.   for (int j = 0; j <= numberOfDivisions; j++) {
  42.     beginShape();
  43.     for (int i = 0; i< numberOfPoints; i++) {
  44.       float angle = (TWO_PI / numberOfPoints) * i;
  45.       float ratio = (float)j/(float)numberOfDivisions;
  46.       float angleSum = lerp(-minAngle, maxAngle, map(sin(ratio*amplitude), -1, 1, 0, 1));
  47.       angle += angleSum;
  48.       float radius = lerp(minRadius, maxRadius, ratio);
  49.       float x = sin(angle) * radius;
  50.       float y = cos(angle) * radius;
  51.       //strokeWeight(3);
  52.       //point(x, y);
  53.       strokeWeight(1);
  54.       vertex(x, y);
  55.     }    
  56.     endShape(CLOSE);
  57.   }
  58.   if (exportSVG) {
  59.     endRecord();
  60.     exportSVG = false;
  61.   }
  62. }
  63.  
  64. // --------------------------------------------------
  65. // Function borrowed from generative gestaltung sketches
  66. // http://www.generative-gestaltung.de
  67. String timestamp()
  68. {
  69.   Calendar now = Calendar.getInstance();
  70.   return String.format("%1$tY%1$tm%1$td_%1$tH%1$tM%1$tS", now);
  71. }
  72.  
  73. void saveSVGFile(File sel) {
  74.   if (sel != null) {
  75.     if (sel.getName().toLowerCase().endsWith(".svg")) {
  76.       beginRecord(SVG, sel.getAbsolutePath());
  77.     } else {
  78.       beginRecord(SVG, sel.getAbsolutePath().concat(".svg"));
  79.     }
  80.   }
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement