2016-04-07 22 views
1

Ich versuche, Spiralen von Ellipsen aus einem Wort in Processing wachsen zu lassen. Ich habe Schwierigkeiten zu verstehen, wie man durch jeden Punkt im Wort (extrahiert unter Verwendung der geometrischen Bibliothek) iteriert, um sicherzustellen, dass jeder Punkt der Anfang jeder Spirale ist. Im Moment bildet es entweder eine Spirale oder die translate() Funktion (auskommentiert) setzt die Ellipsen überall hin.Erstellen einer Spirale aus einer Liste von Punkten

Hier ist mein Code:

import geomerative.*; 
//Leaf myLeaf; 
float pointCount; 
int freq = 1; 
float phi = 1; 
RFont font; 
RShape grp; 
RPoint[] points; 
String TextTyped = "wipe"; 
float r = 0; 
float theta = 0; 
float angle; 
float y; 
void setup(){ 
    RG.init(this); 
    font = new RFont("/Users/sebastianzeki/rp_samples/samples/external_library/java_processing/geomerative/data/FreeSans.ttf",200,RFont.LEFT); 
    size(800,600); 
    smooth(); 
    background(255); 
    } 


    void draw(){ 

      stroke(0); 
      strokeWeight(2); 
     noFill(); 

     RGroup textGrouped; 
     // When extracting the dots, the entered characters do not have to be processed individually. 
     // The entire text textTyped can be grouped. Then the getPoints() function provides a list 
     // of dots comprising the outline lines of the entire text 
     textGrouped = font.toGroup (TextTyped); 
     textGrouped = textGrouped.toPolygonGroup(); 
     RPoint[] thePoints = textGrouped.getPoints(); 


    stroke (0, 255, 255, 64); 
     strokeWeight (1); 

//This draws the word outline in blue circles which is fine 
     for (int i = 0; i < thePoints.length; i++) { 
      ellipse(thePoints[i].x+100, thePoints[i].y+200, 3, 3); 
     } 
     //This is the part that I am trying to get to draw spirals from the word points 
     for (int i = 0; i < thePoints.length; i++) { 
      translate(thePoints[i].x,thePoints[i].y); 
      float x = r * cos(theta); 
      float y = r * sin(theta); 
      r +=0.1; 
      theta += 0.01; 
      ellipse(x, y, 5, 50); 
     } 



} 
+1

in Zukunft versuchen Sie bitte eine [MCVE] statt der Entsendung Ihre ganze Skizze zur Verfügung zu stellen. Eine fest codierte Menge von Punkten hätte gut funktioniert, um Ihr Problem zu zeigen, so dass es nicht notwendig ist, all diesen zusätzlichen Code zu veröffentlichen. Das macht es nur schwieriger für uns, Ihnen zu helfen. –

Antwort

1

einen Blick auf diese für Schleife Nehmen:

for (int i = 0; i < thePoints.length; i++) { 
      translate(thePoints[i].x,thePoints[i].y); 
      float x = r * cos(theta); 
      float y = r * sin(theta); 
      r +=0.1; 
      theta += 0.01; 
      ellipse(x, y, 5, 50); 
} 

Hier sind Sie durch jeden der Punkte Looping und dann eine Zeichnung einzelne Ellipse an diesem Punkt. Ich denke, was Sie versuchen, ist eine Spirale an diesem Punkt zu zeichnen. Anstatt eine einzelne Ellipse zu zeichnen, müssen Sie eine zweite for-Schleife eingeben, die Ihre Spirale erstellt.

Etwas wie folgt aus:

for (int i = 0; i < thePoints.length; i++) { 

    //move to the point 
    translate(thePoints[i].x,thePoints[i].y); 

    //reset your spiral variables 
    float r = 0; 
    float theta = 0; 

    //draw 100 points in a spiral 
    for (int i = 0; i < 100; i++) { 
      float x = r * cos(theta); 
      float y = r * sin(theta); 
      r += 1; 
      theta += 0.1; 
      ellipse(x, y, 5, 5); 
    } 
} 
+0

Ihmm. Ich bekomme einen leeren Bildschirm. Ich musste das int in der inneren Schleife entfernen, wie es bereits deklariert wurde (bekam den doppelten Variablenfehler) –

+0

anstelle von int ich versuchte für (float x1 = 0; x1 <500; x1 ++) was mir den Stack gab 'Bild, aber keine Spirale von Ellipsen von den Punkten :( –

+0

@SebastianZeki Sie verwenden nur die 'r' und 'Theta' Variablen innerhalb dieser Schleife, so dass es nicht notwendig ist, sie am oberen Rand Ihrer Skizze zu deklarieren. Mein Beispiel funktioniert, aber es ist nur das: ein Beispiel, Sie müssen den Code an Ihren spezifischen Kontext anpassen –

Verwandte Themen