<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>processing - tutorial</title>
	<atom:link href="https://lernprocessing.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://lernprocessing.wordpress.com</link>
	<description>einstieg in die programmierung mit processing</description>
	<lastBuildDate>Fri, 10 Feb 2012 10:16:22 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='lernprocessing.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>https://s-ssl.wordpress.com/i/buttonw-com.png</url>
		<title>processing - tutorial</title>
		<link>https://lernprocessing.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="https://lernprocessing.wordpress.com/osd.xml" title="processing - tutorial" />
	<atom:link rel='hub' href='https://lernprocessing.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Twitter API für Processing</title>
		<link>https://lernprocessing.wordpress.com/2012/02/05/twitter-api-fur-processing/</link>
		<comments>https://lernprocessing.wordpress.com/2012/02/05/twitter-api-fur-processing/#comments</comments>
		<pubDate>Sun, 05 Feb 2012 21:27:56 +0000</pubDate>
		<dc:creator>Mag. Thomas Koberger</dc:creator>
				<category><![CDATA[libraries]]></category>
		<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://lernprocessing.wordpress.com/?p=1609</guid>
		<description><![CDATA[Eine sehr gute Beschreibung der Funktionsweise in englischer Sprache findet man hier: http://blog.blprnt.com/blog/blprnt/updated-quick-tutorial-processing-twitter. 1. Twitter Library herunterladen und im Sketch platzieren Für die Kommunikation mit der Twitter API gibt es schon eine fertige Java Library, nämlich twitter4j. Du kannst &#8222;latest stable version&#8220;  hier herunterladen. Nutzen kann man die Library, nachdem man .zip Datei extrahiert und [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lernprocessing.wordpress.com&amp;blog=12477684&amp;post=1609&amp;subd=lernprocessing&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Eine sehr gute Beschreibung der Funktionsweise in englischer Sprache findet man hier: <a href="http://blog.blprnt.com/blog/blprnt/updated-quick-tutorial-processing-twitter" target="_blank">http://blog.blprnt.com/blog/blprnt/updated-quick-tutorial-processing-twitter</a>.</p>
<p><span style="text-decoration:underline;">1. Twitter Library herunterladen und im Sketch platzieren</span></p>
<p style="padding-left:30px;">Für die Kommunikation mit der Twitter API gibt es schon eine fertige Java Library, nämlich <strong>twitter4j</strong>. Du kannst &#8222;latest stable version&#8220;  <a href="http://twitter4j.org/en/index.html" target="_blank">hier herunterladen</a>. Nutzen kann man die Library, nachdem man .zip Datei extrahiert und dann das Java Archiv <strong>twitter4j-core-2.2.5.jar</strong> in den (villeicht noch nicht vorhandenen) <em>/code</em> Ordner im Sketch Ordner kopiert hat. Man kann das auch bewerkstelligen, indem man die Datei einfach auf die Processing IDE zieht.</p>
<p style="padding-left:30px;">Link zur <a href="http://twitter4j.org/en/javadoc/index.html" target="_blank">Javadoc von twitter4j</a>.</p>
<p style="padding-left:30px;">Sehr interessant ist, dass es von der Library auch eine Android Version gibt. Falls das jemand getestet hat, bitte ich im Feedback.</p>
<p><span style="text-decoration:underline;">2. Einen Entwickler Account bei Twitter erstellen</span></p>
<ul>
<li>Gehe auf die Homepage <a href="https://dev.twitter.com/" target="_blank">https://dev.twitter.com/</a>.</li>
<li>Klicke &#8222;create an App&#8220; und dann &#8222;sign in&#8220;</li>
<li>Formular ausfüllen und Nutzungsbedingungen akzeptieren.</li>
<li>Nun bist du auf diese Seite gelangt:<a href="http://lernprocessing.files.wordpress.com/2012/02/twitter.png"><img class="alignnone size-full wp-image-1641" title="twitter" src="http://lernprocessing.files.wordpress.com/2012/02/twitter.png?w=600&#038;h=652" alt="" width="600" height="652" /></a></li>
<li>Von dieser Seite brauchst du den <strong>Consumer key</strong> und das <strong>Consumer secret</strong>.</li>
<li>Klicke Create my access token</li>
<li>Nun hast du auch <strong>Access token</strong> und das <strong>Access token secret</strong>. Damit kannst du nun deinen Processing Sketch mit der Twitter API verbinden.</li>
</ul>
<p><span style="text-decoration:underline;"><strong>3. Sketch erstellen und twitter4j einbinden</strong></span></p>
<p><pre class="brush: java;">
//Verbindung herstellen
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setOAuthConsumerKey(&quot;eigenerSchlüssel&quot;);
cb.setOAuthConsumerSecret(&quot;eigenerSchlüssel&quot;);
cb.setOAuthAccessToken(&quot;eigenesToken&quot;);
cb.setOAuthAccessTokenSecret(&quot;eigenesToken&quot;);

//Abfrage starten
Twitter twitter = new TwitterFactory(cb.build()).getInstance();
Query query = new Query(&quot;pink floyd now playing&quot;);
query.setRpp(5);

//tryCatch, damit das Programm nicht abstürzt, wenn die Abfrage
//mal schief geht
try {

  //Abrufen der Seiten mit den Suchergebnissen
for (int j=1; j&lt;=15 ; j++) {
QueryResult result = twitter.search(query.page(j));
ArrayList tweets = (ArrayList) result.getTweets();

    //Abrufen der einzelnen Tweets
for (int i = 0; i &lt; tweets.size(); i++) {
Tweet tweet = (Tweet) tweets.get(i);
String user = tweet.getFromUser();
String msg = tweet.getText();
long geo=tweet.getFromUserId();
Date d = tweet.getCreatedAt();

      //Abrufen des Heimatortes des Users
User USER = twitter.showUser(geo);
String location = USER.getLocation();

println(&quot;Page: &quot;+j+&quot;  &quot;+i+&quot;: Tweet by &quot; + user + &quot; at &quot; + d +&quot;from: &quot;+location );
}
}
}
catch (TwitterException te) {
println(&quot;Couldn't connect: &quot; + te);
};

</pre></p>
<ul>
<li>Mit der TwitterFactory stellt die twitter4j Library ein Objekt zu Verfügung, das eine Abfrage durchführen kann.<em><em>Twitter twitter = new TwitterFactory(cb.build()).getInstance();</em></em>&nbsp;</li>
</ul>
<ul>
<li>Mittels der Query kann die Abfrage spezifiziert werden<em>.<br />
Query query = new Query(&#8222;pink floyd now playing&#8220;);</em></li>
</ul>
<ul>
<li>Mit <em>query.setRpp(5)</em> stellt man die Anzahl der Treffer pro Seite ein (maximal 100). Außerdem kann man mit <em>query.since(Datum)</em> und <em>query.until(Datum)</em> die Suche zeitlich eingrenzen.</li>
</ul>
<ul>
<li>Man kann maximal 15 Seiten mit max. 100 Treffern pro Seite abrufen.<em><br />
//Abrufen der Seiten mit den Suchergebnissen</em><em><br />
for (int j=1; j&lt;=15 ; j++) {</em></li>
</ul>
<ul>
<li>Die Treffer einer Seite werden in einem QueryResult Objekt gespeichert und dann ine eine ArrayList kopiert.<em><br />
QueryResult result = twitter.search(query.page(j));</em><em><br />
ArrayList tweets = (ArrayList) result.getTweets();</em></li>
</ul>
<ul>
<li>Aus dieser ArrayList rufen wir dann Treffer für Treffer ab und extrahieren die benötigten Daten aus dem Tweet Objekt.</li>
</ul>
<p style="padding-left:30px;"><em> //Abrufen der einzelnen Tweets</em><br />
<em>for (int i = 0; i &lt; tweets.size(); i++) {</em><br />
<em>Tweet tweet = (Tweet) tweets.get(i);</em><br />
<em>String user = tweet.getFromUser();</em><br />
<em>String msg = tweet.getText();</em><br />
<em>long geo=tweet.getFromUserId();</em><br />
<em>Date d = tweet.getCreatedAt();</em></p>
<ul>
<li>Falls man noch den Heimatort des Posters abrufen möchte, kann man das mit diesem Code machen:</li>
</ul>
<p style="padding-left:30px;"><em> //Abrufen des Heimatortes des Users</em><br />
<em>User USER = twitter.showUser(geo);</em><br />
<em>String location = USER.getLocation();</em></p>
<p>Da dies die Heimatort Einträge aus dem UserProfil sind, bekommt man natürlich auch Einträge wie: &#8222;Zwischen Seite 299 und 300&#8243;. Damit muss man leben.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lernprocessing.wordpress.com/1609/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lernprocessing.wordpress.com/1609/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lernprocessing.wordpress.com/1609/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lernprocessing.wordpress.com/1609/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/lernprocessing.wordpress.com/1609/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/lernprocessing.wordpress.com/1609/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/lernprocessing.wordpress.com/1609/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/lernprocessing.wordpress.com/1609/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lernprocessing.wordpress.com/1609/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lernprocessing.wordpress.com/1609/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lernprocessing.wordpress.com/1609/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lernprocessing.wordpress.com/1609/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lernprocessing.wordpress.com/1609/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lernprocessing.wordpress.com/1609/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lernprocessing.wordpress.com&amp;blog=12477684&amp;post=1609&amp;subd=lernprocessing&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>https://lernprocessing.wordpress.com/2012/02/05/twitter-api-fur-processing/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="https://secure.gravatar.com/avatar/1a938cfdc6c69e0156e58e9d480ddf18?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">koberger</media:title>
		</media:content>

		<media:content url="http://lernprocessing.files.wordpress.com/2012/02/twitter.png" medium="image">
			<media:title type="html">twitter</media:title>
		</media:content>
	</item>
		<item>
		<title>3D wie beim Magischen Auge</title>
		<link>https://lernprocessing.wordpress.com/2012/01/09/3d-wie-beim-magischen-auge/</link>
		<comments>https://lernprocessing.wordpress.com/2012/01/09/3d-wie-beim-magischen-auge/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 09:02:39 +0000</pubDate>
		<dc:creator>Mag. Thomas Koberger</dc:creator>
				<category><![CDATA[processing]]></category>
		<category><![CDATA[projekte]]></category>
		<category><![CDATA[3d bilder]]></category>

		<guid isPermaLink="false">http://lernprocessing.wordpress.com/?p=1546</guid>
		<description><![CDATA[Wer kennt sie nicht? Die die 3D Bilder der Buchreihe &#8222;Das magische Auge&#8220; die Anfang der 90er erschien. Bei den 3D Bildern handelt es sich um sogenannte Stereogramme. Das sind räumlich wirkende Darstellungen zu deren Betrachtung man keine weiteren Hilfsmittel wie etwa eine Rot- Grün 3D Brille benötigt. Hier ein sehr einfaches Beispiel: Wie funktioniert [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lernprocessing.wordpress.com&amp;blog=12477684&amp;post=1546&amp;subd=lernprocessing&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Wer kennt sie nicht? Die die 3D Bilder der Buchreihe &#8222;Das magische Auge&#8220; die Anfang der 90er erschien. Bei den 3D Bildern handelt es sich um sogenannte Stereogramme. Das sind räumlich wirkende Darstellungen zu deren Betrachtung man keine weiteren Hilfsmittel wie etwa eine Rot- Grün 3D Brille benötigt. Hier ein sehr einfaches Beispiel:</p>
<p><a href="http://lernprocessing.files.wordpress.com/2012/01/111228_100520_04.png"><img class="alignnone size-full wp-image-1568" title="111228_100520_04" src="http://lernprocessing.files.wordpress.com/2012/01/111228_100520_04.png?w=600&#038;h=400" alt="" width="600" height="400" /></a></p>
<p><span style="text-decoration:underline;"><strong>Wie funktioniert die Betrachtungstechnik?</strong></span></p>
<p>Entspanne Deine Augen und blicke geradeaus, als wenn Du durch das 3D Bild hindurchgucken wolltest. Jetzt sollte sich normalerweise langsam ein räumliches Bild entwickeln. Versuche jetzt mit den Augen das 3D Bild scharf zu stellen ohne sich bewußt auf das Stereogramm zu konzentrieren. Diese Methode des Betrachtens erfordert bei einigen eine gewisse Übung. Also nicht verzagen wenn es nicht auf Anhieb klappt.</p>
<p><span style="text-decoration:underline;">Hier noch einige Tipps damit sich der Erfolg schneller einstellt:</span></p>
<p>* Keine Lichtreflexionen auf dem Bildschirm.</p>
<p>* Kopf geradehalten und die Augen parallel zur Bildschirmhorizontale.</p>
<p>* Abstand zum Bildschirm sollte ca. 80 cm betragen.</p>
<p>* Konzentration auf markante Bildpunkte und durch unscharfes Sehen Bildpunkte benachbarter Perioden zur Überlagerung bringen.</p>
<p>Text aus: <a href="http://www.wer-kennt-wen.de/gruppen/weltweit/das-magische-auge-uk6hr5qx/" target="_blank">http://www.wer-kennt-wen.de/gruppen/weltweit/das-magische-auge-uk6hr5qx/</a></p>
<p><span style="text-decoration:underline;"><strong>Übe die Technik mit folgenden Beispielbildern:</strong></span></p>
<ul>
<li id="module-856"><a href="http://www.schneider-andre.net/bilder/das-magische-auge/" target="_blank"> Beispielbilder Datei</a></li>
</ul>
<p><span style="text-decoration:underline;"><strong>Über den Erfinder dieser Technik:</strong></span></p>
<ul>
<li id="module-851"><a href="http://www.spiegel.de/spiegel/print/d-13686197.html" target="_blank"> Kurze Geschichte über die Entstehung der Magic Eye &#8211; Bücher Datei</a></li>
<li id="module-852"><a href="http://www3.edumoodle.at/borgried/mod/chat/view.php?id=852"> </a>Welche Eigenschaften machten Tom Baccei so erfolgreich?</li>
</ul>
<p><span style="text-decoration:underline;"><strong>Aufbau des Auges:</strong></span></p>
<p><a href="http://lernprocessing.files.wordpress.com/2012/01/auge.png"><img class="alignnone size-full wp-image-1570" title="Auge" src="http://lernprocessing.files.wordpress.com/2012/01/auge.png?w=600&#038;h=553" alt="" width="600" height="553" /></a></p>
<p><a title="de:Benutzer:Talos" href="http://de.wikipedia.org/wiki/Benutzer:Talos">Urheber: Talos</a></p>
<p>Das Licht fällt durch die Linse und den durchsichtigen Glaskörper auf die Netzhaut. Dort wird von den Sinneszellen (Zäpfchen und Stäbchen) die Helligkeit und Wellenlänge (Farbe) des Lichts aufgenommen. Über den Sehnerv, in dem schon die ersten signalverarbeitenden Prozesse stattfinden, werden die mittlerweile in Nervensignale umgewandelten Reize zum Gehirn weitergeleitet. Dort findet dann der eigentliche Wahrnehmungsprozess statt.</p>
<p><span style="text-decoration:underline;"><strong>Wie nimmt das Auge Tiefe wahr?</strong></span></p>
<p>Lies auf Wikipedia nach wie die Binokulare Raumwahrnehmung (mit 2 Augen) zustande kommt!</p>
<p>3 Tiefenkriterien:</p>
<p><a href="http://de.wikipedia.org/wiki/Raumwahrnehmung" target="_blank">http://de.wikipedia.org/wiki/Raumwahrnehmung</a></p>
<p>Während die Parallaxe den Winkel zwischen zwei Geraden beschreibt, steht der Begriff Disparation für für den Unterschied zwischen den Bildern, die unsere 2 Augen von einem 3-dimensionalen Objekt liefern.</p>
<ul>
<ul>
<li id="module-866"><a href="http://www2.hu-berlin.de/psychologie/lehrprogramm/Tiefenwahrnehmung/disparation.htm#" target="_blank"> Disparation</a></li>
</ul>
</ul>
<p><span style="text-decoration:underline;"><strong>Wie erzeugen wir ein Bild mit 3-D Effekt &#8211; Ein Autostereogramm?</strong></span></p>
<p><span style="text-decoration:underline;">Was ist ein Autosteregramm?</span></p>
<p>Ein Autostereogramm ist ein 2-D Bild, das unser Gehirn, mit Hilfe seiner Eigenschaft immer nach korrespondierenden Netzhautpunkten zu suchen, dazu bringt ein 3-dimensionales Bild wahrzunehmen.</p>
<p>Dazu muss man allerdings seine Augen trainieren, denn das normale Verhältnis des Winkels der Augen zueinander und dem Fokus muss verändert werden. Dies gelingt nicht allen Menschen gleich gut. Außerdem können etwa 10 % der Menschen überhaupt keine 3-D Bilder sehen.</p>
<p>Die einfachste Form eines Autosterogramms besteht aus horizontal in gleichem Abstand angeordneten gleichen Objekten (Siehe Beispielbild oben).</p>
<p><span style="text-decoration:underline;">Wie entsteht der Tiefeneindruck?</span></p>
<p>Die Tiefe der einzelnen Objektreihen wird durch deren (horizontalen) Abstand zu einander bestimmt (&#8222;<strong>distance</strong>&#8222;). Dieser Abstand kann nun variieren. Diese Variation bezeichnen wir als &#8222;<strong>shift</strong>&#8222;, also die Abweichung vom Standard-Abstand.</p>
<p>In dieser Konstellation erscheinen die größeren Wolken unten(shift 0) als weiter entfernt, als die kleineren Wolken oben (shift 40). Man kann diese Methode auch ganz einfach mit Schrift erzeugen.</p>
<p><a href="http://lernprocessing.files.wordpress.com/2012/01/shift.png"><img class="alignnone size-full wp-image-1571" title="shift" src="http://lernprocessing.files.wordpress.com/2012/01/shift.png?w=600&#038;h=291" alt="" width="600" height="291" /></a></p>
<p><a href="http://lernprocessing.files.wordpress.com/2012/01/buchstaben.png"><img class="alignnone size-full wp-image-1572" title="Buchstaben" src="http://lernprocessing.files.wordpress.com/2012/01/buchstaben.png?w=600" alt=""   /></a></p>
<p><span style="text-decoration:underline;">Betrachte die Buchstaben mit dem 3D Blick. Was kannst du beobachten?</span></p>
<p><a href="http://lernprocessing.files.wordpress.com/2012/01/stereogram_tut_side_view.png"><img class="alignnone size-full wp-image-1574" title="Stereogram_Tut_Side_View" src="http://lernprocessing.files.wordpress.com/2012/01/stereogram_tut_side_view.png?w=600&#038;h=273" alt="" width="600" height="273" /></a><br />
Aus Wikipedia: <a href="http://en.wikipedia.org/wiki/File:Stereogram_Tut_Clean.png" target="_blank">http://en.wikipedia.org/wiki/File:Stereogram_Tut_Clean.png</a> by Fred Hsu</p>
<p><a href="http://kobe.bplaced.net/processing/3D-demo/" target="_blank">Demo:</a> Hier siehst Du wie aus 2 gleichen Objekten im Bild ein virtuelles Objekt, das hinter der Bildebene liegt entsteht.<br />
Bewege den Mauszeiger auf der Grafik auf und ab, um die Tiefe des virtuellen Objekts verändern.</p>
<p><span style="text-decoration:underline;"><strong> Aufgabe:</strong></span> Verändere das Programm so, dass die Flugrichtung und Geschwindigkeit der Vögel mit der Maus gesteuert werden können.</p>
<p>Der Processing Sketch als Download: <a href="http://kobe.bplaced.net/processing/3D-demo/3d_Landschaft_static.zip" target="_blank">Landschaft</a></p>
<p><span style="text-decoration:underline;"><strong>Etwas schwerer:</strong></span> Schreibe selbst ein Programm, das ein Autostereogramm erzeugt.</p>
<p><span style="text-decoration:underline;"><strong>Programm zur Aufgabe:</strong></span> <a href="http://kobe.bplaced.net/processing/3DLandschaft/" target="_blank">starte Applet</a></p>
<p><pre class="brush: java;">
float picSize=1; //standard Zoom Factor
ArrayList pics; //holds the Pic-Objects

void setup() {
size (1200, 800);
background(9, 139, 232);
smooth();
fill(0, 200, 0);
pics = new ArrayList();

//adds the Pics to the ArrayList (Path,distance,Start-X-Pos,y-Pos, Zoom-Factor
pics.add(new Pic (loadImage(&quot;tree1.png&quot;), 210,0, 540,picSize));
pics.add(new Pic (loadImage(&quot;cloud3.png&quot;), 210,0, 160,picSize));
pics.add(new Pic (loadImage(&quot;tree2.png&quot;), 190,200, 400,3));
pics.add(new Pic (loadImage(&quot;birds1.png&quot;), 170,0, 340,picSize));
pics.add(new Pic (loadImage(&quot;butterfly.png&quot;), 160,50, 430,picSize));
pics.add(new Pic (loadImage(&quot;bird2.png&quot;), 150,0, 590,picSize));
pics.add(new Pic (loadImage(&quot;cloud1.png&quot;), 190,0, 100,picSize));
pics.add(new Pic (loadImage(&quot;cloud2.png&quot;), 170,0, 80,picSize));
pics.add(new Pic (loadImage(&quot;cloud1.png&quot;), 150,0, 10,picSize));
}

void draw() {

//draws the Pics
for (int i=0; i&lt;pics.size(); i++) {
Pic pic = (Pic) pics.get(i);
pic.drawpic();
}
}

class Pic {

//Variables of Pic-Object
PImage pic;
int distance;
int startX;
int yPos;
float picSize;

//The Constructor
Pic (PImage pic, int distance, int startX, int yPos, float picSize) {
this.pic    = pic;
this.distance   = distance;
this.yPos = yPos;
this.picSize=picSize;
this.startX=startX;
}

//Methods of Pics
void drawpic() {
for (int i=10; i&lt;width; i+=distance) {
image(pic, i-startX, yPos, distance*picSize, distance*7/10*picSize);
}
}
}
</pre></p>
<p><span style="text-decoration:underline;">Einfache Ebene mit Wallpaper</span></p>
<p>Ersetzen wir nun die einzelnen Objekte mit einem Flächen füllenden Wallpaper, sehen wir, dass bei entsprechender Betrachtung eine Fläche zu sehen ist, die unter der realen Zeichenebene liegt.</p>
<p><a href="http://lernprocessing.files.wordpress.com/2012/01/stereogram_tut_clean.png"><img class="alignnone size-full wp-image-1575" title="Stereogram_Tut_Clean" src="http://lernprocessing.files.wordpress.com/2012/01/stereogram_tut_clean.png?w=600&#038;h=450" alt="" width="600" height="450" /></a></p>
<p>Aus Wikipedia: <a href="http://en.wikipedia.org/wiki/File:Stereogram_Tut_Clean.png" target="_blank">http://en.wikipedia.org/wiki/File:Stereogram_Tut_Clean.png</a> by Fred Hsu</p>
<p>Wieder gilt: Je weiter die korrespondierenden Pixel auseinander liegen, desto weiter unter der Oberfläche wird der Bildabschnitt wahrgenommen.</p>
<p><span style="text-decoration:underline;">3D Bild aus einer Depth Map:</span><br />
Als Depth Map bezeichnet man ein Graustufen-Bild, welches die Tiefeninformation als Grauwert darstellt (dunkel&#8230;hinten, hell&#8230;vorne). Damit kann man nun nicht nur ganze Objekte in einer bestimmten Ebene platzieren, sondern jedes Pixel seiner Tiefeninformation entsprechend darstellen (stimmt eigentlich nicht ganz, ist zu diesem Zeitpunkt aber egal).</p>
<p><a href="http://lernprocessing.files.wordpress.com/2012/01/stereogram_tut_shark_depthmap.png"><img class="alignnone size-full wp-image-1592" title="Stereogram_Tut_Shark_Depthmap" src="http://lernprocessing.files.wordpress.com/2012/01/stereogram_tut_shark_depthmap.png?w=600&#038;h=300" alt="" width="600" height="300" /></a></p>
<p>Aus Wikipedia: <a href="http://en.wikipedia.org/wiki/File:Stereogram_Tut_Clean.png" target="_blank">http://en.wikipedia.org/wiki/File:Stereogram_Tut_Clean.png</a> by Fred Hsu</p>
<p>Das funktioniert folgendermaßen: Der erste Steifen Wallpaper wird ganz links am Bildschirm gezeichnet. Beim Zeichnen des zweiten Streifens wird dann Zeile für Zeile zu jedem Pixel das entsprechende Pixel aus der Depth Map eingelesen. Ist das Pixel schwarz, wird das Pixel von der gleichen Position im 1.Streifen (rot) in den 2. Streifen (blau) kopiert (siehe Abb. oben!). Ist das Pixel in der Depth Map heller, wird im ersten Streifen (rot) ein Pixel weiter rechts kopiert.</p>
<p><a href="http://lernprocessing.files.wordpress.com/2012/01/shift-sis.png"><img class="alignnone size-full wp-image-1576" title="shift-sis" src="http://lernprocessing.files.wordpress.com/2012/01/shift-sis.png?w=600&#038;h=303" alt="" width="600" height="303" /></a><br />
Dadurch wird das Bild Streifen für Streifen immer weiter verzerrt. Schöner wäre es vielleicht, wenn man von der Mitte ausgehend dann links und nach rechts verzerrt.</p>
<p>Wallpapers kann man relativ leicht selber herstellen, oder durch ein zufälliges Pixelmuster ersetzen. Depth Maps können aus 3D Programmen exportiert werden.</p>
<p>Mit einem <a href="https://sites.google.com/site/elsamuko/gimp/depthmap" target="_blank">Gimp Plugin können solche Depth Maps</a> auch selbst hergestellt werden.</p>
<p>Es findet sich aber auch im Internet brauchbares Material. Z.B. hier: <a href="http://www3.edumoodle.at/borgried/mod/resource/view.php?id=858">Muster, Depth-Maps und einige Stereogramme</a></p>
<p><a href="http://lernprocessing.files.wordpress.com/2012/01/120106_094245_11.png"><img class="alignnone size-full wp-image-1577" title="120106_094245_11" src="http://lernprocessing.files.wordpress.com/2012/01/120106_094245_11.png?w=600&#038;h=285" alt="" width="600" height="285" /></a></p>
<ul>
<li>Oder mit einer veränderten Code-Zeile :</li>
</ul>
<p><a href="http://lernprocessing.files.wordpress.com/2012/01/120108_183057_11.png"><img title="120108_183057_11" src="http://lernprocessing.files.wordpress.com/2012/01/120108_183057_11.png?w=600&#038;h=285" alt="" width="600" height="285" /></a></p>
<p><span style="text-decoration:underline;"><strong>Beispiel:</strong></span> <a href="http://kobe.bplaced.net/processing/3DSIS/">starte Applet</a></p>
<p><pre class="brush: java;">&lt;/pre&gt;
PImage depthMap, wallpaper;//deklariert die Bild Variablen;

int [] [] grau = new int [1260] [600]; //hier wird ein zweidimensionales Array deklariert
color [] [] wall = new color [140] [600];
color [] [] actual = new color [140] [600];
int shift; //horizontale Verschiebung des Pixels
int x=0; // damit sich die
int xToTake; //Bildpunkt im vorigen Wallpaper Streifen, der gezeichnet wird

void setup() {
size(1260, 600);
smooth();
strokeWeight(5);

//Einlesen der Depth Maps und speichern der Tiefeninfo als Int-Array
depthMap = loadImage(&quot;hai_grey.png&quot;);//weist der Variablen depthMap die Datei hai_grey.png zu
depthMap.loadPixels(); //sollte man aufrufen, bevor man die einzelen Pixel bearbeitet
for (int gridX = 0; gridX &lt; depthMap.width; gridX++) {
for (int gridY = 0; gridY &lt; depthMap.height; gridY++) {
// überträgt die Farbinfo eines Pixels auf die Variable farbe
color farbe = depthMap.pixels[gridY*depthMap.width+gridX];
// wandelt die Farbinfo in einen Grauwert um
int grauwert =round(red(farbe)*0.222+green(farbe)*0.707+blue(farbe)*0.071);
grau [gridX] [gridY] = grauwert;//speichert den Grauwert in unser Array grau
}
}

//Einlesen der Depth Maps und speichern der Tiefeninfo als Int-Array
wallpaper=loadImage(&quot;hai_pattern.png&quot;);
wallpaper.loadPixels(); //sollte man aufrufen, bevor man die einzelen Pixel bearbeitet
for (int gridX = 0; gridX &lt; wallpaper.width; gridX++) {
for (int gridY = 0; gridY &lt; wallpaper.height; gridY++) {
// überträgt die Farbinfo eines Pixels auf die Variable farbe
color farbe = wallpaper.pixels[gridY*wallpaper.width+gridX];
// wird die nächste Zeile statt der vorherigen einkommentiert, wird das Wallpaper Bild
// durch ein zufälliges Pixelmuster ersetzt
// color farbe = color ((int) random(0,255),(int) random(0,255),(int) random(0,255));
wall [gridX] [gridY] = farbe;//speichert den Grauwert in unser Array grau
}
}
}

void draw() {
x=(frameCount-1)*wallpaper.width;
if (frameCount&lt;10) {
for (int gridY = 0; gridY &lt; wallpaper.height; gridY+=1) {
for (int gridX = 0; gridX &lt; wallpaper.width; gridX+=1) {
shift=(int) map(grau[gridX+(frameCount-1)*wallpaper.width] [gridY], 0, 255, 0, 60);
xToTake=(wallpaper.width-((wallpaper.width-gridX)-shift))%wallpaper.width;
//einkommentiert kann man hier gut die Funktionsweise ablesen!
//if(gridY==height/2) println(&quot;grauwert: &quot;+grau[gridX+(frameCount-1)*wallpaper.width] [gridY]+&quot;grid: &quot;+gridX+&quot;shift: &quot;+shift+&quot; shift:&quot;+xToTake);
stroke(wall [xToTake] [gridY]);//gibt den Grauwert aus unserem Array aus
point(gridX+x, gridY);
wall [gridX] [gridY]=wall  [xToTake] [gridY];
}
}
}
else noLoop();
}
&lt;pre&gt;</pre></p>
<p>Processing Sketch als Download: <a href="http://kobe.bplaced.net/processing/3D-demo/3d_hai_SIS_fertig.zip" target="_blank"> 3D Hai</a></p>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lernprocessing.wordpress.com/1546/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lernprocessing.wordpress.com/1546/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lernprocessing.wordpress.com/1546/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lernprocessing.wordpress.com/1546/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/lernprocessing.wordpress.com/1546/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/lernprocessing.wordpress.com/1546/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/lernprocessing.wordpress.com/1546/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/lernprocessing.wordpress.com/1546/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lernprocessing.wordpress.com/1546/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lernprocessing.wordpress.com/1546/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lernprocessing.wordpress.com/1546/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lernprocessing.wordpress.com/1546/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lernprocessing.wordpress.com/1546/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lernprocessing.wordpress.com/1546/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lernprocessing.wordpress.com&amp;blog=12477684&amp;post=1546&amp;subd=lernprocessing&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>https://lernprocessing.wordpress.com/2012/01/09/3d-wie-beim-magischen-auge/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="https://secure.gravatar.com/avatar/1a938cfdc6c69e0156e58e9d480ddf18?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">koberger</media:title>
		</media:content>

		<media:content url="http://lernprocessing.files.wordpress.com/2012/01/111228_100520_04.png" medium="image">
			<media:title type="html">111228_100520_04</media:title>
		</media:content>

		<media:content url="http://lernprocessing.files.wordpress.com/2012/01/auge.png" medium="image">
			<media:title type="html">Auge</media:title>
		</media:content>

		<media:content url="http://lernprocessing.files.wordpress.com/2012/01/shift.png" medium="image">
			<media:title type="html">shift</media:title>
		</media:content>

		<media:content url="http://lernprocessing.files.wordpress.com/2012/01/buchstaben.png" medium="image">
			<media:title type="html">Buchstaben</media:title>
		</media:content>

		<media:content url="http://lernprocessing.files.wordpress.com/2012/01/stereogram_tut_side_view.png" medium="image">
			<media:title type="html">Stereogram_Tut_Side_View</media:title>
		</media:content>

		<media:content url="http://lernprocessing.files.wordpress.com/2012/01/stereogram_tut_clean.png" medium="image">
			<media:title type="html">Stereogram_Tut_Clean</media:title>
		</media:content>

		<media:content url="http://lernprocessing.files.wordpress.com/2012/01/stereogram_tut_shark_depthmap.png" medium="image">
			<media:title type="html">Stereogram_Tut_Shark_Depthmap</media:title>
		</media:content>

		<media:content url="http://lernprocessing.files.wordpress.com/2012/01/shift-sis.png" medium="image">
			<media:title type="html">shift-sis</media:title>
		</media:content>

		<media:content url="http://lernprocessing.files.wordpress.com/2012/01/120106_094245_11.png" medium="image">
			<media:title type="html">120106_094245_11</media:title>
		</media:content>

		<media:content url="http://lernprocessing.files.wordpress.com/2012/01/120108_183057_11.png" medium="image">
			<media:title type="html">120108_183057_11</media:title>
		</media:content>
	</item>
		<item>
		<title>Array Lists</title>
		<link>https://lernprocessing.wordpress.com/2011/11/23/array-lists/</link>
		<comments>https://lernprocessing.wordpress.com/2011/11/23/array-lists/#comments</comments>
		<pubDate>Wed, 23 Nov 2011 07:30:46 +0000</pubDate>
		<dc:creator>Mag. Thomas Koberger</dc:creator>
				<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://lernprocessing.wordpress.com/?p=1516</guid>
		<description><![CDATA[Im Gegensatz zu Arrays muss bei einer ArrayList am Anfang nicht festgelegt werden, wie viele Elemente sie später enthalten wird. Man kann ihre Größe jederzeit ändern, indem man Elemente hinzufügt oder löscht. Außerdem wird kein spezieller Datentyp angegeben. Erst wenn man Objekte aus der ArrayList ausliest, wird der Datentyp zugewiesen. Wichtigste Unterschiede zu Arrays: Variable [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lernprocessing.wordpress.com&amp;blog=12477684&amp;post=1516&amp;subd=lernprocessing&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Im Gegensatz zu Arrays muss bei einer ArrayList am Anfang nicht festgelegt werden, wie viele Elemente sie später enthalten wird. Man kann ihre Größe jederzeit ändern, indem man Elemente hinzufügt oder löscht. Außerdem wird <strong>kein spezieller <a title="Variablen und Datentypen" href="http://lernprocessing.wordpress.com/2010/01/18/variablen-und-datentypen/">Datentyp</a></strong> angegeben. Erst wenn man Objekte aus der ArrayList ausliest, wird der Datentyp zugewiesen.</p>
<p><span style="text-decoration:underline;"><strong>Wichtigste Unterschiede zu <a title="Datenfelder (Arrays)" href="http://lernprocessing.wordpress.com/2010/01/08/datenfelder-arrays/">Arrays</a>:</strong></span></p>
<ul>
<li>Variable Anzahl von Elementen</li>
<li>Die Methode size() gibt die aktuelle Anzahl der Elemente zurück</li>
<li>Mit add() werden Elemente ergänzt</li>
<li>Mit remove() werden gelöscht</li>
<li>und mit get() ausgelesen.</li>
</ul>
<p><span style="text-decoration:underline;"><strong>Unvollständiges Codebeispiel aus dem Projekt <a title="Korruption in der Demokratie" href="http://lernprocessing.wordpress.com/2011/11/22/korruption-in-der-demokratie/">Korruption in der Demokratie:</a></strong></span></p>
<p><pre class="brush: java;">
.
.
// Objekt wird erstellt
ArrayList agenten;

void setup() {
.
.
// Die Variable agenten wird mit einer ArrayList befüllt
agenten = new ArrayList();
}

void draw() {

// Nacheinander erden alle Objekte der ArrayList ausgelesen
for (int i=0; i&lt;agenten.size(); i++) {

//Hierbei muss die Art des Objekts in der ArrayList festgelegt werden.
Agent agent =(Agent) agenten.get(i);
agent.render();
}
for (int r=(int) random (8);r&gt;0;r--) {

// Listeneintrag hinzufügen
agenten.add(new Agent(pnts[j].x, pnts[j].y, agenten.size()));
}
}
</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lernprocessing.wordpress.com/1516/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lernprocessing.wordpress.com/1516/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lernprocessing.wordpress.com/1516/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lernprocessing.wordpress.com/1516/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/lernprocessing.wordpress.com/1516/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/lernprocessing.wordpress.com/1516/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/lernprocessing.wordpress.com/1516/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/lernprocessing.wordpress.com/1516/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lernprocessing.wordpress.com/1516/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lernprocessing.wordpress.com/1516/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lernprocessing.wordpress.com/1516/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lernprocessing.wordpress.com/1516/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lernprocessing.wordpress.com/1516/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lernprocessing.wordpress.com/1516/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lernprocessing.wordpress.com&amp;blog=12477684&amp;post=1516&amp;subd=lernprocessing&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>https://lernprocessing.wordpress.com/2011/11/23/array-lists/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="https://secure.gravatar.com/avatar/1a938cfdc6c69e0156e58e9d480ddf18?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">koberger</media:title>
		</media:content>
	</item>
		<item>
		<title>Korruption in der Demokratie</title>
		<link>https://lernprocessing.wordpress.com/2011/11/22/korruption-in-der-demokratie/</link>
		<comments>https://lernprocessing.wordpress.com/2011/11/22/korruption-in-der-demokratie/#comments</comments>
		<pubDate>Tue, 22 Nov 2011 17:32:01 +0000</pubDate>
		<dc:creator>Mag. Thomas Koberger</dc:creator>
				<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://lernprocessing.wordpress.com/?p=1520</guid>
		<description><![CDATA[Korruption scheint in Österreich so allgegenwärtig zu sein, wie der Schimmel im Brotkasten einer Studenten-WG. Wie &#8222;virtueller Schimmel&#8220; mit Hilfe von Agenten erzeugt werden kann und wie dieser die Demokratie &#8222;befällt&#8220;, zeigt folgendes Beispiel: Starte Applet Mit Hilfe der Geomerative Library wird die Schrift erzeugt und die Koordinaten der Konturpunkte gefunden und in ein Array [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lernprocessing.wordpress.com&amp;blog=12477684&amp;post=1520&amp;subd=lernprocessing&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Korruption scheint in Österreich so allgegenwärtig zu sein, wie der Schimmel im Brotkasten einer Studenten-WG.</p>
<p>Wie &#8222;virtueller Schimmel&#8220; mit Hilfe von Agenten erzeugt werden kann und wie dieser die Demokratie &#8222;befällt&#8220;, zeigt folgendes Beispiel:</p>
<p><a href="http://kobe.bplaced.net/processing/Korruption-in-der-Demokratie/">Starte Applet</a></p>
<p><a href="http://lernprocessing.files.wordpress.com/2011/11/111122_161101_5919.png"><img class="alignnone size-medium wp-image-1522" title="111122_161101_5919" src="http://lernprocessing.files.wordpress.com/2011/11/111122_161101_5919.png?w=300&#038;h=107" alt="" width="300" height="107" /></a></p>
<p>Mit Hilfe der <a title="Geomerative Library" href="http://lernprocessing.wordpress.com/2011/11/15/geomerative-library/">Geomerative Library</a> wird die Schrift erzeugt und die Koordinaten der Konturpunkte gefunden und in ein <a title="Datenfelder (Arrays)" href="http://lernprocessing.wordpress.com/2010/01/08/datenfelder-arrays/">Array</a> gespeichert. Mit einem Mausklick werden dann <a title="Agenten" href="http://lernprocessing.wordpress.com/2011/10/03/agenten/">Agenten</a> erzeugt, welche eine begrenzte Lebensdauer aufweisen und sich in zufälliger Richtung fortbewegen. Trifft ein Agent nun auf einen Konturpunkt, dann &#8222;stirbt&#8220; er. Davor erzeugt er aber noch 0-8 neue Agenten, die sich ihrerseits auf die Suche nach Punkten auf der Schriftkontur machen. So durchdringen sie nach und nach alle Buchstaben bis dahin unsichtbaren Buchstaben und der Schriftzug wird sichtbar.</p>
<p><pre class="brush: java;">
import geomerative.*;

RShape shp, shp1, shp2;
RPoint[] pnts, pnts1;

String BspText = &quot;Korruption durchdringt die ...&quot;;
String BspText1 = &quot;Demokratie!&quot;;
String BspText2 = &quot;Mausklick um zu starten!&quot;;

ArrayList agenten;

void setup() {
size(1400, 500);
strokeWeight(1);
smooth();
background(0);
translate(width/2, height*2/12);
agenten = new ArrayList();

RG.init(this);

// 3 Shape - Objekte werden erzeugt.
shp = RG.getText(BspText, &quot;Ubuntu-R.ttf&quot;, width/60, CENTER);
shp1 = RG.getText(BspText1, &quot;Ubuntu-R.ttf&quot;, width*8/70, CENTER);
shp2 = RG.getText(BspText2, &quot;Ubuntu-R.ttf&quot;, width/80, CENTER);

// Punkte an der Schriftkontur finden
//Abstand der Punkte
RCommand.setSegmentLength (1);
//Modus
RCommand.setSegmentator(RCommand.UNIFORMLENGTH);

// Die Shapes wirde gezeichnet
fill(180, 160);
shp.draw();

// und positioneiert
shp1.translate(0, height*7/12);
shp2.translate(0, height*9/12);
fill(180, 160);
shp2.draw();

// Finden der Konturpunkte
pnts = shp1.getPoints();

// Variation der einzelnen Punkte
for (int i=0;i&lt;pnts.length; i++) {
pnts[i].x+= (int) random(-5, 5);
pnts[i].y+= (int) random(-5, 5);
}
}

void draw() {

translate(width/2, height*1/12);

for (int i=0; i&lt;agenten.size(); i++) {
//jeder Agent wird gezeichnet
Agent agent =(Agent) agenten.get(i);
agent.render();
//jeder Agent muß die Position ändern
agent.move();

// entfernen von Agenten aus der ArrayList
if (agent.lifetime&lt;=0) agenten.remove(i);

// Wenn ein Agent auf einen Konturpunkt trifft, wird ein punkt gezeichnet und
// es werden neue Agenten erzeugt

for (int j=0; j&lt;pnts.length; j++) {
if (!agent.blocked &amp;&amp; (int)agent.position.x== (int) pnts[j].x &amp;&amp; (int)agent.position.y==  (int)pnts[j].y) {
stroke(100, 150, 255, 200);
point(pnts[j].x, pnts[j].y);
fill(100, 150, 255, 60);

for (int r=(int) random (8);r&gt;0;r--) {
agenten.add(new Agent(pnts[j].x, pnts[j].y, agenten.size()));
}

// Damit jeder Punkt nur ein mal &quot;besetzt&quot; wird!
pnts[j].x=-10000;
pnts[j].y=-10000;
agenten.remove(i);
}
}
}
println(agenten.size());
}

// Um den Wucherprozess in Gang zu setzen!
void mousePressed() {
agenten.add(new Agent(mouseX-width/2, mouseY-height*1/12, agenten.size()));
}

class Agent {

// Variablen
PVector position;
PVector direction;
PVector start;
//definiert die Stärke der Richtungsänderung
float spin = 0.40;
int lifetime;
boolean blocked;
float lifetimeinit; // 3. Radius

//der Konstruktor für die Agenten-Klasse
Agent (float theX, float theY, float alifetime) {
start    = new PVector (theX, theY);
position=new PVector(theX, theY);
direction   = new PVector (10, 10);
direction.x = random (-1, 1);
direction.y = random (-1, 1);
lifetimeinit = alifetime;
if ((int)random(60/lifetimeinit)!=0) {
lifetime=(int) random(400, 600);
}
else {
lifetime=(int) random(0, 50);
}
blocked=true;
}

void render() {
stroke(255, 20);
fill(255);

point(position.x, position.y);
lifetime--;

if (((int)start.x != (int) position.x) &amp;&amp;((int)start.y != (int) position.y)) {
blocked=false;
}
}

void move() {

//die Agenten ändern ihre Richting nicht abrupt, sondern immer nur ein wenig!
direction.x += random (-spin, spin);
direction.y += random (-spin, spin);

//for a constant speed
direction.normalize();

// hier kann man die Geschwindigkeit ändern
//direction.mult(map(mouseX,0,width,5,1));

position.add(direction);
}
}

</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lernprocessing.wordpress.com/1520/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lernprocessing.wordpress.com/1520/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lernprocessing.wordpress.com/1520/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lernprocessing.wordpress.com/1520/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/lernprocessing.wordpress.com/1520/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/lernprocessing.wordpress.com/1520/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/lernprocessing.wordpress.com/1520/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/lernprocessing.wordpress.com/1520/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lernprocessing.wordpress.com/1520/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lernprocessing.wordpress.com/1520/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lernprocessing.wordpress.com/1520/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lernprocessing.wordpress.com/1520/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lernprocessing.wordpress.com/1520/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lernprocessing.wordpress.com/1520/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lernprocessing.wordpress.com&amp;blog=12477684&amp;post=1520&amp;subd=lernprocessing&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>https://lernprocessing.wordpress.com/2011/11/22/korruption-in-der-demokratie/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="https://secure.gravatar.com/avatar/1a938cfdc6c69e0156e58e9d480ddf18?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">koberger</media:title>
		</media:content>

		<media:content url="http://lernprocessing.files.wordpress.com/2011/11/111122_161101_5919.png?w=300" medium="image">
			<media:title type="html">111122_161101_5919</media:title>
		</media:content>
	</item>
		<item>
		<title>Geomerative Library</title>
		<link>https://lernprocessing.wordpress.com/2011/11/15/geomerative-library/</link>
		<comments>https://lernprocessing.wordpress.com/2011/11/15/geomerative-library/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 14:31:50 +0000</pubDate>
		<dc:creator>Mag. Thomas Koberger</dc:creator>
				<category><![CDATA[libraries]]></category>
		<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://lernprocessing.wordpress.com/?p=1497</guid>
		<description><![CDATA[Download: http://www.ricardmarxer.com/geomerative/ Diese Library erweitert die graphischen Möglichkeiten von Processing (2D). Sie bietet u.a. die Möglichkeit Punkte an der Kontur von Vektorgraphiken zu finden. In der .zip Datei befinden sich viele Beispieldateien mit Kommentaren. Sehr hilfreich fand ich auch dieses Tutorial: http://freeartbureau.org/blog/2011/09/18/geomerative-tutorial/. Mit RFont kann man eine Schrift (eine .ttf &#8211; Datei muss sich im [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lernprocessing.wordpress.com&amp;blog=12477684&amp;post=1497&amp;subd=lernprocessing&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>Download:</strong> <a href="http://www.ricardmarxer.com/geomerative/" target="_blank">http://www.ricardmarxer.com/geomerative/</a></p>
<p>Diese Library erweitert die graphischen Möglichkeiten von Processing (2D). Sie bietet u.a. die Möglichkeit Punkte an der Kontur von Vektorgraphiken zu finden. In der .zip Datei befinden sich viele Beispieldateien mit Kommentaren.</p>
<p>Sehr hilfreich fand ich auch dieses Tutorial: <a href="http://freeartbureau.org/blog/2011/09/18/geomerative-tutorial/" target="_blank">http://freeartbureau.org/blog/2011/09/18/geomerative-tutorial/</a>.</p>
<p>Mit <strong>RFont</strong> kann man eine Schrift (eine .ttf &#8211; Datei muss sich im /data Ordner des Sketches befinden!!!) laden. Diese wird dann mit einem String verknüpft und einer <strong>RGroup</strong> zugeordnet. Mit <strong>RGroup.getPoints()</strong> bekommt man dann die Konturpunkte. Ein Nachteil dieser Methode ist, dass es in weiterer Folge schwierig ist, auf einzelne Buchstaben zuzugreifen und diese dynamisch zu ändern.</p>
<p><span style="text-decoration:underline;"><strong>Beispiel:</strong></span> Punkte an der Schriftkontur</p>
<p><a href="http://lernprocessing.files.wordpress.com/2011/11/111117_140815_1187.png"><img class="alignnone size-medium wp-image-1501" title="111117_140815_1187" src="http://lernprocessing.files.wordpress.com/2011/11/111117_140815_1187.png?w=300&#038;h=150" alt="" width="300" height="150" /></a></p>
<p><pre class="brush: java;">
import geomerative.*;

RFont font;
String BspText = &quot;A B&quot;;
RPoint[] pnts;

void setup() {
size(400, 200);
smooth();
stroke(255);
background(100);

// Hier wird die Library initialisiert und die zu verwendende
// Schrift erzeugt.
// Achtung: Schrift muss zuerst mit Tools --&gt; Create Font
// erzeugt werden.
RG.init(this);
font = new RFont(&quot;FreeSans.ttf&quot;, 150, RFont.CENTER);

// Punkte an der Schriftkontur finden

//Abstand der Punkte
RCommand.setSegmentLength (5);
//Modus
RCommand.setSegmentator(RCommand.UNIFORMLENGTH);

//RCommand.setSegmentStep(5);
//RCommand.setSegmentator(RCommand.UNIFORMSTEP);

//RCommand.setSegmentAngle(random(0,HALF_PI));
//RCommand.setSegmentator(RCommand.ADAPTATIVE);

if (BspText.length() &gt; 0) {

// Erzeugen einer neuer Gruppe von Graphiken
RGroup grp;

//Zuordnen des Texts
grp = font.toGroup(BspText);

//Finden der Punkte
pnts = grp.getPoints();
}
}

void draw() {
translate(width/2, height*7/8);
for (int i=0; i&lt;pnts.length; i++) {
//Zeichnen der Punkte
point(pnts[i].x, pnts[i].y);
}
}
</pre></p>
<p><span style="text-decoration:underline;"><strong>Beispiel: </strong></span>  <a href="http://kobe.bplaced.net/processing/geomerative/" target="_blank">starte Applet</a></p>
<p>In diesem Beispiel müssen die Positionen einzelner Buchstaben einer Gruppe verändert werden. Deshalb wird hier nicht mit der RGroup &#8211; Klasse, sondern mit der <strong>RShape</strong> &#8211; Klasse gearbeitet.</p>
<p><a href="http://lernprocessing.files.wordpress.com/2011/11/111118_213955_2600.png"><img class="alignnone size-medium wp-image-1508" title="111118_213955_2600" src="http://lernprocessing.files.wordpress.com/2011/11/111118_213955_2600.png?w=300&#038;h=162" alt="" width="300" height="162" /></a></p>
<p><pre class="brush: java;">

import geomerative.*;

RShape shp, shp1;
RPoint[] pnts, pnts1;

String BspText = &quot;O c c u p y&quot;;
String BspText1 = &quot;W A L L ST&quot;;

int occupylen, actframe;

void setup() {
size(1480, 800);
strokeWeight(1);
smooth();
fill(120, 50);
background(0);
translate(width/2, height*4/8);

// Hier wird die Library initialisiert und die zu verwendende
// Schrift erzeugt.
// Achtung: Schrift muss zuerst mit Tools --&gt; Create Font
// erzeugt werden.
RG.init(this);

// 2 Shape Objekte werden zugewiesen
shp = RG.getText(BspText, &quot;Ubuntu-R.ttf&quot;, width*8/70, CENTER);
shp1 = RG.getText(BspText1, &quot;Ubuntu-R.ttf&quot;, width*8/50, CENTER);

// Punkte an der Schriftkontur finden
//Abstand der Punkte
RCommand.setSegmentLength (height/400);
//Modus
RCommand.setSegmentator(RCommand.UNIFORMLENGTH);

// Shape wirde gezeichnet
shp.draw();

// für Abbruch nach einem Durchlauf
pnts = shp.getPoints();
occupylen=pnts.length;

// damit der Text Wall ST wie gewünscht dargestellt wird
shp1.translate(width/20, height*3/8);

//mit children[i] kann man in Shapes immer auf die Buchstaben zugreifen
shp1.children[4].translate(width/5, height/40);
shp1.children[4].scale(0.6, 0.6);
shp1.children[5].translate(width*2/9, height/40);
shp1.children[5].scale(0.6, 0.6);

shp1.draw();

// Hier werden die beiden Shapes zu einer zusammengefügt
shp.addChild(shp1);
pnts = shp.getPoints();
}

void draw() {

translate(width/2, height*4/8);

// damit gleich mit dem Zeichnen begonnen wird
actframe=frameCount+occupylen;

//für Abbruch nach einem Durchlauf der Konturpunkte
if (frameCount&lt;pnts.length) {
for (int j=0; j&lt;pnts.length; j++) {
//Zeichnen der Punkte
if (dist(pnts[actframe%pnts.length].x, pnts[actframe%pnts.length].y, pnts[j].x, pnts[j].y)&lt;random(0, height)
&amp;&amp; dist(pnts[actframe%pnts.length].x, pnts[actframe%pnts.length].y, pnts[j].x, pnts[j].y)&gt;height/30
&amp;&amp;(int)random(height/20)==3) {
stroke(map(dist(pnts[actframe%pnts.length].x, pnts[actframe%pnts.length].y, pnts[j].x, pnts[j].y), height/160, height*3/4, 0, 255),
map(pnts[actframe%pnts.length].x-pnts[j].x, -height/2, height/2, 255, 0),
map(dist(pnts[actframe%pnts.length].x, pnts[actframe%pnts.length].y, pnts[j].x, pnts[j].y), height/160, height*3/4, 255, 0),
map(dist(pnts[actframe%pnts.length].x, pnts[actframe%pnts.length].y, pnts[j].x, pnts[j].y), height/160, height*3/4, 10, 0));
line(pnts[actframe%pnts.length].x+random(-height/160, height/160), pnts[actframe%pnts.length].y+random(-height/160, height/160), pnts[j].x+random(-height/160, height/160), pnts[j].y+random(-height/160, height/160));
}
}
}
}
</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lernprocessing.wordpress.com/1497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lernprocessing.wordpress.com/1497/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lernprocessing.wordpress.com/1497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lernprocessing.wordpress.com/1497/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/lernprocessing.wordpress.com/1497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/lernprocessing.wordpress.com/1497/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/lernprocessing.wordpress.com/1497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/lernprocessing.wordpress.com/1497/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lernprocessing.wordpress.com/1497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lernprocessing.wordpress.com/1497/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lernprocessing.wordpress.com/1497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lernprocessing.wordpress.com/1497/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lernprocessing.wordpress.com/1497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lernprocessing.wordpress.com/1497/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lernprocessing.wordpress.com&amp;blog=12477684&amp;post=1497&amp;subd=lernprocessing&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>https://lernprocessing.wordpress.com/2011/11/15/geomerative-library/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="https://secure.gravatar.com/avatar/1a938cfdc6c69e0156e58e9d480ddf18?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">koberger</media:title>
		</media:content>

		<media:content url="http://lernprocessing.files.wordpress.com/2011/11/111117_140815_1187.png?w=300" medium="image">
			<media:title type="html">111117_140815_1187</media:title>
		</media:content>

		<media:content url="http://lernprocessing.files.wordpress.com/2011/11/111118_213955_2600.png?w=300" medium="image">
			<media:title type="html">111118_213955_2600</media:title>
		</media:content>
	</item>
		<item>
		<title>Agenten</title>
		<link>https://lernprocessing.wordpress.com/2011/10/03/agenten/</link>
		<comments>https://lernprocessing.wordpress.com/2011/10/03/agenten/#comments</comments>
		<pubDate>Mon, 03 Oct 2011 13:01:10 +0000</pubDate>
		<dc:creator>Mag. Thomas Koberger</dc:creator>
				<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://lernprocessing.wordpress.com/?p=1415</guid>
		<description><![CDATA[Agenten bewegen sich entsprechend ihrer Programmierung. Hier werden sie als Objekte realisiert und bewegen sich zufällig. Sie ändern aber nicht abrupt ihre Richtung, da wir für die Position der Agenten Vektoren verwenden, denen wir in jedem Schritt eine zufällige Abweichung addieren. In der einfachsten Ausführung des Programms bewegen sie sich aus der Mitte heraus und [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lernprocessing.wordpress.com&amp;blog=12477684&amp;post=1415&amp;subd=lernprocessing&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Agenten bewegen sich entsprechend ihrer Programmierung. Hier werden sie als Objekte realisiert und bewegen sich zufällig.</p>
<p>Sie ändern aber nicht abrupt ihre Richtung, da wir für die Position der Agenten Vektoren verwenden, denen wir in jedem Schritt eine zufällige Abweichung addieren.</p>
<p>In der einfachsten Ausführung des Programms bewegen sie sich aus der Mitte heraus und prallen dann von den Rändern des Animationsfensters zurück. Dabei ist ihre Bewegung nicht gerade, sondern ändern ständig ihre Richtung.</p>
<p><strong><span style="text-decoration:underline;">Beispiel:</span></strong> einfache Agenten <a href="http://kobe.bplaced.net/processing/agent01/" target="_blank">starte Applet</a></p>
<p><a href="http://lernprocessing.files.wordpress.com/2011/10/111001_190044_408.png"><img class="alignnone size-medium wp-image-1417" title="111001_190044_408" src="http://lernprocessing.files.wordpress.com/2011/10/111001_190044_408.png?w=300&#038;h=300" alt="" width="300" height="300" /></a><a href="http://lernprocessing.files.wordpress.com/2011/10/111001_190038_124.png"><img class="alignnone size-medium wp-image-1418" title="111001_190038_124" src="http://lernprocessing.files.wordpress.com/2011/10/111001_190038_124.png?w=300&#038;h=300" alt="" width="300" height="300" /></a></p>
<p><pre class="brush: java;">
Agent [] agenten;

void setup() {
size(500, 500);
smooth();
stroke(255);

// hier wird ein Array für 10 Agenten erzeugt
agenten= new Agent[10];

// die Agenten selber werden erzeugt
for (int i=0; i&lt;agenten.length; i++) {
agenten[i]=new Agent(width/2, height/2, 5);
}
}

void draw() {
// für den Spur, die die Agenten hinterlassen
fill(0, 2);
rect(0, 0, width, height);

//alle Agenten müssen die Position ändern
for (int i=0; i&lt;agenten.length; i++) {
//jeder Agent wird gezeichnet
agenten[i].render();
//jeder Agent muß die Position ändern
agenten[i].move();
}
}
class Agent {

// Variablen
PVector position;
PVector direction;
//definiert die Stärke der Richtungsänderung
float spin = 0.20;
float radius; // 3. Radius

//der Konstruktor für die Agenten-Klasse
Agent (float theX, float theY, float aradius) {
position    = new PVector (theX, theY);
direction   = new PVector (10, 10);
direction.x = random (-1, 1);
direction.y = random (-1, 1);
radius = aradius;
}

//eine Methode
void render() {

//einkommentiert ergibt sich hieraus ein schönes Fächer-Muster
//line(position.x, position.y, width/2, height/2);
ellipse(position.x, position.y,5,5);
}

//Methode
void move() {

//die Agenten ändern ihre Richting nicht abrupt, sondern immer nur ein wenig!
direction.x += random (-spin, spin);
direction.y += random (-spin, spin);

//for a constant speed
direction.normalize();

// hier kann man die Geschwindigkeit ändern
direction.mult(1);

position.add(direction);

//damit die Agenten das Bild nicht verlassen
if (position.x &lt; radius || position.x &gt; (width-radius)) {
direction.x *= -1;
}
if (position.y &lt; radius || position.y &gt; (height-radius)) {
direction.y *= -1;
}
}
}
</pre></p>
<p><span style="text-decoration:underline;"><strong>Beispiel:</strong></span> einfache Agenten2 <a href="http://kobe.bplaced.net/processing/agent02/" target="_blank">starte Applet</a></p>
<p><a href="http://lernprocessing.files.wordpress.com/2011/10/111001_191926_5474.png"><img class="alignnone size-medium wp-image-1420" title="111001_191926_5474" src="http://lernprocessing.files.wordpress.com/2011/10/111001_191926_5474.png?w=300&#038;h=300" alt="" width="300" height="300" /></a></p>
<p>Hier wurde der Code um Farbe und die Linien von jedem Agenten zum Mittelpunkt erweitert.</p>
<p>in setup();</p>
<p><pre class="brush: java;"> colorMode(HSB, 360, 100, 100);</pre></p>
<p>im Agenten selbst</p>
<p><pre class="brush: java;"> int col;

...

col=(int)random(0, 360);

...

void render() {
if (col&lt;360) {
col+=2;
} else {
col=0;
}

//reuncomment for random color
stroke(col,100,100);</pre></p>
<p>Den kompletten Source-Code findest Du beim Applet!</p>
<p><span style="text-decoration:underline;"><strong>Beispiel:</strong></span> einfache Agenten3 <a href="http://kobe.bplaced.net/processing/agent03/" target="_blank">starte Applet</a></p>
<p><a href="http://lernprocessing.files.wordpress.com/2011/10/111001_194056_578.png"><img class="alignnone size-medium wp-image-1423" title="111001_194056_578" src="http://lernprocessing.files.wordpress.com/2011/10/111001_194056_578.png?w=300&#038;h=300" alt="" width="300" height="300" /></a></p>
<p>Hier eine Variante, bei der die Agenten miteinander durch gerade Linien verbunden werden.</p>
<p>Änderung in draw();</p>
<p><pre class="brush: java;"> if (i==0) {
line(agenten[i].position.x,
agenten[i].position.y,
agenten[agenten.length-1].position.x,
agenten[agenten.length-1].position.y);
}
else {
line(agenten[i].position.x, agenten[i].position.y,
agenten[i-1].position.x, agenten[i-1].position.y);
} </pre></p>
<p>Den kompletten Source-Code findest Du beim Applet!</p>
<p><strong>Beispiel:</strong> einfache Agenten4 <a href="http://kobe.bplaced.net/processing/agent05/">starte Applet</a></p>
<p><a href="http://lernprocessing.files.wordpress.com/2011/10/111004_102956_829.png"><img class="alignnone size-medium wp-image-1438" title="111004_102956_829" src="http://lernprocessing.files.wordpress.com/2011/10/111004_102956_829.png?w=300&#038;h=300" alt="" width="300" height="300" /></a></p>
<p>In diesem Beispiel wird die Bewegungsfreiheit der Agenten durch die aktuelle Mausposition in x- und y- Richtung eingeschränkt. Ist der Mauszeiger in der linken oberen Ecke, versammeln sich alle Agenten im Mittelpunkt, ist er in der rechten unteren Ecke, können sie sich (fast) frei bewegen.</p>
<p>Dafür platzieren wir folgende Code-Zeile in setup() und in draw(). Sie bewirkt, dass der Ursprung des Koordinatensystems in die Mitte des Rahmens verschoben wird.</p>
<p><pre class="brush: java;"> translate(width/2,height/2); </pre></p>
<p>Da wir nun vom Mittelpunkt des Rahmens als Nullpunkt ausgehen, können wir mit Hilfe der <a title="Mathematische Operationen" href="http://lernprocessing.wordpress.com/2010/01/17/mathematische-operationen/">map()</a>- Funktion die aktuelle Position (x und y) von -width/2 bis +width/2 um die aktuelle Mausposition korrigieren. Das machen wir aus optischen Gründen nun für 2 Ellipsen.</p>
<p><pre class="brush: java;"> ellipse(
      map(position.x,-width/2,width/2,-mouseX/2,mouseX/2),
      map(position.y,-height/2,height/2,-mouseY/2,mouseY/2)
      ,4,4);
       fill(100,50,255);
       ellipse(
      map(position.x,-width/2,width/2,-mouseX/2,mouseX/2),

      map(position.y,-height/2,height/2,-mouseY/2,mouseY/2)
      ,3,3);</pre></p>
<p>Weiters wird nun die Grenze, an der die Agenten zurückprallen vom Fensterrahmen auf einen Kreis geändert:</p>
<p><pre class="brush: java;">    if (dist(position.x,position.y,0,0)&gt;width/2) {
          direction.x *= -1;
          direction.y *= -1;

    }</pre></p>
<p>Den kompletten Source-Code findest Du beim Applet!</p>
<p><strong>Beispiel:</strong> einfache Agenten5 <a href="http://kobe.bplaced.net/processing/agent06/" target="_blank">starte Applet</a></p>
<p><a href="http://lernprocessing.files.wordpress.com/2011/10/111004_101024_291.png"><img class="alignnone size-medium wp-image-1436" title="111004_101024_291" src="http://lernprocessing.files.wordpress.com/2011/10/111004_101024_291.png?w=300&#038;h=300" alt="" width="300" height="300" /></a></p>
<p>In diesem Beispiel arbeiten wir wieder im Color-Mode HSB.</p>
<p><pre class="brush: java;">colorMode(HSB, 360, 100, 100);</pre></p>
<p>Außerdem erhält hier jeder Agent einen Index und ein Array mit den Indizes von 3 seiner nächsten Nachbarn. Damit kann man über 4 Punkte eine Kurve (curve() ) zeichnen und die Agenten damit dann Verbinden.</p>
<p>Variablendefinition in der Agenten-Klasse:</p>
<p><pre class="brush: java;">int [] neighbours = new int [4];
  int index;</pre></p>
<p>Im Konstruktor des Agenten:</p>
<p>Start-Farbpunkt für jeden Agenten, damit alle gemeinsam das gesamte Spektrum abdecken.</p>
<p><pre class="brush: java;"> col=index*(360/agenten.length); </pre></p>
<p>Jeder Agent muss, wenn er erzeugt wird seine Nachbarn finden. Das macht er hiermit:</p>
<p><pre class="brush: java;"> for (int i=0;i&lt;4;i++) {
      if (index+i&gt;agenten.length-1) {
        neighbours[i]= index+i-agenten.length;
      }else {
      neighbours[i]= index+i;
      } </pre></p>
<p>In der Methode render des Agenten wird nun nichts mehr gezeichnet. Wir nutzen sie aber für die Veränderung der Farbwerte:</p>
<p><pre class="brush: java;"> if (col&lt;360) {
      col+=2;
    } else {
      col=0;
    } </pre></p>
<p>Wir zeichnen die Kurve nun in draw():</p>
<p><pre class="brush: java;">
curve(
      map(agenten[agenten[i].neighbours[0]].position.x,-width/2,width/2,-mouseX/2,mouseX/2),
      map(agenten[agenten[i].neighbours[0]].position.y,-height/2,height/2,-mouseY/2,mouseY/2),
      map(agenten[agenten[i].neighbours[1]].position.x,-width/2,width/2,-mouseX/2,mouseX/2),
      map(agenten[agenten[i].neighbours[1]].position.y,-height/2,height/2,-mouseY/2,mouseY/2),
      map(agenten[agenten[i].neighbours[2]].position.x,-width/2,width/2,-mouseX/2,mouseX/2),
      map(agenten[agenten[i].neighbours[2]].position.y,-height/2,height/2,-mouseY/2,mouseY/2),
      map(agenten[agenten[i].neighbours[3]].position.x,-width/2,width/2,-mouseX/2,mouseX/2),
      map(agenten[agenten[i].neighbours[3]].position.y,-height/2,height/2,-mouseY/2,mouseY/2)); </pre></p>
<p>Den kompletten Source-Code findest Du beim Applet!</p>
<p><strong>Beispiel:</strong> einfache Agenten6 <a href="http://kobe.bplaced.net/processing/agent08/" target="_blank">starte Applet</a></p>
<p><a href="http://lernprocessing.files.wordpress.com/2011/10/111004_113236_137.png"><img class="alignnone size-medium wp-image-1442" title="111004_113236_137" src="http://lernprocessing.files.wordpress.com/2011/10/111004_113236_137.png?w=300&#038;h=300" alt="" width="300" height="300" /></a></p>
<p>Hier bekommt jeder Agent einen Startpunkt zugeordnet. In diesem Fall bilden alle Agenten gemeinsam einen Kreis. Damit jeder Agent wieder in seinen Ursprung zurückkehren kann, muss er sich seine Startposition merken. Das tut er in der PVector Variablen start.</p>
<p><pre class="brush: java;"> PVector start; </pre></p>
<p>Auch der Konstruktor der Agenten wird angepasst. Die Koordinaten, die beim Erzeugen des Agenten übertragen werden, werden in der Variable start gespeichert und die Variable position wird mit den Koordinaten 0,0 gefüllt.</p>
<p><pre class="brush: java;"> //der Konstruktor fÃ¼r die Agenten-Klasse
 Agent (float theX, float theY, float aradius) {
 start = new PVector (theX, theY);
 position=new PVector(0,0);
 direction = new PVector (10, 10);
 direction.x = random (-1, 1);
 direction.y = random (-1, 1);
 radius = aradius;
 }
 </pre></p>
<p>Beim Zeichnen der Agenten wird nun das Koordinatensystem auf die jeweilige Startposition verschoben. Und von dort ausgehend seine Position gezeichnet.</p>
<p><pre class="brush: java;"> pushMatrix();
    translate(start.x,start.y);
      ....
  popMatrix();
</pre></p>
<p>Mit den folgenden Zeilen legen wir die Startpositionen der Agenten fest. Sie ordnen sich kreisförmig um dem Mittelpunkt an.<br />
<pre class="brush: java;"> for (int i=0; i&lt;agenten.length; i++) {
 float x,y;
 x= width/2+(cos(map(i,0,agenten.length,0,TWO_PI))*width/4);
 y= height/2+(sin(map(i,0,agenten.length,0,TWO_PI))*height/4);
 agenten[i]=new Agent(x,y, 5);
 }
 </pre></p>
<p>Den kompletten Source-Code findest Du beim Applet!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lernprocessing.wordpress.com/1415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lernprocessing.wordpress.com/1415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lernprocessing.wordpress.com/1415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lernprocessing.wordpress.com/1415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/lernprocessing.wordpress.com/1415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/lernprocessing.wordpress.com/1415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/lernprocessing.wordpress.com/1415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/lernprocessing.wordpress.com/1415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lernprocessing.wordpress.com/1415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lernprocessing.wordpress.com/1415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lernprocessing.wordpress.com/1415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lernprocessing.wordpress.com/1415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lernprocessing.wordpress.com/1415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lernprocessing.wordpress.com/1415/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lernprocessing.wordpress.com&amp;blog=12477684&amp;post=1415&amp;subd=lernprocessing&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>https://lernprocessing.wordpress.com/2011/10/03/agenten/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="https://secure.gravatar.com/avatar/1a938cfdc6c69e0156e58e9d480ddf18?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">koberger</media:title>
		</media:content>

		<media:content url="http://lernprocessing.files.wordpress.com/2011/10/111001_190044_408.png?w=300" medium="image">
			<media:title type="html">111001_190044_408</media:title>
		</media:content>

		<media:content url="http://lernprocessing.files.wordpress.com/2011/10/111001_190038_124.png?w=300" medium="image">
			<media:title type="html">111001_190038_124</media:title>
		</media:content>

		<media:content url="http://lernprocessing.files.wordpress.com/2011/10/111001_191926_5474.png?w=300" medium="image">
			<media:title type="html">111001_191926_5474</media:title>
		</media:content>

		<media:content url="http://lernprocessing.files.wordpress.com/2011/10/111001_194056_578.png?w=300" medium="image">
			<media:title type="html">111001_194056_578</media:title>
		</media:content>

		<media:content url="http://lernprocessing.files.wordpress.com/2011/10/111004_102956_829.png?w=300" medium="image">
			<media:title type="html">111004_102956_829</media:title>
		</media:content>

		<media:content url="http://lernprocessing.files.wordpress.com/2011/10/111004_101024_291.png?w=300" medium="image">
			<media:title type="html">111004_101024_291</media:title>
		</media:content>

		<media:content url="http://lernprocessing.files.wordpress.com/2011/10/111004_113236_137.png?w=300" medium="image">
			<media:title type="html">111004_113236_137</media:title>
		</media:content>
	</item>
		<item>
		<title>Easing</title>
		<link>https://lernprocessing.wordpress.com/2011/10/01/easing/</link>
		<comments>https://lernprocessing.wordpress.com/2011/10/01/easing/#comments</comments>
		<pubDate>Sat, 01 Oct 2011 07:25:03 +0000</pubDate>
		<dc:creator>Mag. Thomas Koberger</dc:creator>
				<category><![CDATA[advanced]]></category>
		<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://lernprocessing.wordpress.com/?p=1398</guid>
		<description><![CDATA[Um eine Bewegung nicht abrupt ablaufen zu lassen gibt es eine einfache Technik &#8211; das &#8222;Easing&#8220;. Wird ein Objekt nicht sofort an seinen Endpunkt bewegt, sondern nur einen bestimmten Prozentwert in dessen Richtung. Das führt zu einer harmonischen runden Bewegung. Konkret wird der Unterschied in der x-Positionen von Objekt und Mauszeiger errechnet (dx). Wenn dieser [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lernprocessing.wordpress.com&amp;blog=12477684&amp;post=1398&amp;subd=lernprocessing&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Um eine Bewegung nicht abrupt ablaufen zu lassen gibt es eine einfache Technik &#8211; das &#8222;Easing&#8220;. Wird ein Objekt nicht sofort an seinen Endpunkt bewegt, sondern nur einen bestimmten Prozentwert in dessen Richtung. Das führt zu einer harmonischen runden Bewegung.</p>
<p>Konkret wird der Unterschied in der x-Positionen von Objekt und Mauszeiger errechnet (dx). Wenn dieser Wert größer ist als 1, dann wird ein neuer Wert für die Objektposition berechnet (x+= dx*easing;).</p>
<p><span style="text-decoration:underline;"><strong>Beispiel:</strong></span> eindimensionales Easing <a href="http://kobe.bplaced.net/processing/easing-1d/" target="_blank">starte Applet</a><br />
<a href="http://lernprocessing.files.wordpress.com/2011/10/111001_094531_238.png"><img class="alignnone size-medium wp-image-1403" title="111001_094531_238" src="http://lernprocessing.files.wordpress.com/2011/10/111001_094531_238.png?w=300&#038;h=60" alt="" width="300" height="60" /></a></p>
<p><pre class="brush: java;">
float x = 0.0; //aktuelle x-Position des Objekts
float easing = 0.05; //Stärke der Dämpfung

void setup() {
smooth();
size(500, 100);
}

void draw () {
background(0);
float targetX = mouseX;
// Unterschied der x-Position von Objekt und Mauszeiger
float dx = targetX -x;
//abs gibt den ansoluten Wert einer Zahl aus
if (abs(dx) &gt;1.0) {
x+= dx*easing;
}
ellipse(mouseX, 30, 40, 40);
ellipse(x, 30, 40, 40);
} </pre></p>
<p><span style="text-decoration:underline;"><strong>Aufgabe:</strong></span> Erweitere das obige Programm so, dass auch eine Bewegung der Objekte in Y-Richtung möglich ist. <a href="http://kobe.bplaced.net/processing/easing-2d/" target="_blank">starte Applet</a></p>
<p><a href="http://lernprocessing.files.wordpress.com/2011/10/111001_094659_491.png"><img class="alignnone size-medium wp-image-1404" title="111001_094659_491" src="http://lernprocessing.files.wordpress.com/2011/10/111001_094659_491.png?w=300&#038;h=300" alt="" width="300" height="300" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lernprocessing.wordpress.com/1398/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lernprocessing.wordpress.com/1398/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lernprocessing.wordpress.com/1398/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lernprocessing.wordpress.com/1398/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/lernprocessing.wordpress.com/1398/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/lernprocessing.wordpress.com/1398/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/lernprocessing.wordpress.com/1398/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/lernprocessing.wordpress.com/1398/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lernprocessing.wordpress.com/1398/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lernprocessing.wordpress.com/1398/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lernprocessing.wordpress.com/1398/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lernprocessing.wordpress.com/1398/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lernprocessing.wordpress.com/1398/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lernprocessing.wordpress.com/1398/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lernprocessing.wordpress.com&amp;blog=12477684&amp;post=1398&amp;subd=lernprocessing&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>https://lernprocessing.wordpress.com/2011/10/01/easing/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="https://secure.gravatar.com/avatar/1a938cfdc6c69e0156e58e9d480ddf18?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">koberger</media:title>
		</media:content>

		<media:content url="http://lernprocessing.files.wordpress.com/2011/10/111001_094531_238.png?w=300" medium="image">
			<media:title type="html">111001_094531_238</media:title>
		</media:content>

		<media:content url="http://lernprocessing.files.wordpress.com/2011/10/111001_094659_491.png?w=300" medium="image">
			<media:title type="html">111001_094659_491</media:title>
		</media:content>
	</item>
		<item>
		<title>Lesen und schreiben von Textdateien</title>
		<link>https://lernprocessing.wordpress.com/2011/10/01/lesen-und-schreiben-von-textdateien-mit-processing/</link>
		<comments>https://lernprocessing.wordpress.com/2011/10/01/lesen-und-schreiben-von-textdateien-mit-processing/#comments</comments>
		<pubDate>Sat, 01 Oct 2011 06:59:46 +0000</pubDate>
		<dc:creator>Mag. Thomas Koberger</dc:creator>
				<category><![CDATA[advanced]]></category>
		<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://lernprocessing.wordpress.com/?p=1381</guid>
		<description><![CDATA[Natürlich kann man im Processing auch mit Textdateien arbeiten. Zum Einlesen einer Textdatei in ein String Array wird der Befehl loadStrings() verwendet.  Um Daten in eine Textdatei zu schreiben verwendet man saveStrings(). Auch hier muss man mit einem String Array arbeiten. Sowohl beim Lesen, als auch beim Schreiben ist der Standard-Ordner der Ordner /data im [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lernprocessing.wordpress.com&amp;blog=12477684&amp;post=1381&amp;subd=lernprocessing&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Natürlich kann man im Processing auch mit Textdateien arbeiten. Zum Einlesen einer Textdatei in ein String <a title="Datenfelder (Arrays)" href="http://lernprocessing.wordpress.com/2010/01/08/datenfelder-arrays/">Array</a> wird der Befehl <strong><em>loadStrings()</em></strong> verwendet.  Um Daten in eine Textdatei zu schreiben verwendet man <strong><em>saveStrings()</em></strong>. Auch hier muss man mit einem String Array arbeiten.</p>
<p>Sowohl beim Lesen, als auch beim Schreiben ist der Standard-Ordner der Ordner <em><strong>/data</strong></em> im Sketchbook-Verzeichnis. D.h. dort ist eine Datei zu platzieren, wenn man sie einlesen möchte.</p>
<p><span style="text-decoration:underline;"><strong>Beispiel:</strong></span> Einlesen einer Textdatei</p>
<p>Damit das Beispiel funktioniert, muss eine Textdatei mit dem Namen &#8222;Textdatei.txt&#8220; im /data Ordner des Projekts erstellt werden!!!</p>
<p><a href="http://lernprocessing.files.wordpress.com/2011/09/readfile.png"> <img class="alignnone size-medium wp-image-1384" title="readFile" src="http://lernprocessing.files.wordpress.com/2011/09/readfile.png?w=250&#038;h=300" alt="" width="250" height="300" /></a></p>
<p><pre class="brush: java;">
String[] zeilen; //String-Array

void setup() {
// hier wird der Inhalt der Textdatei in das String-Array
// zeilen eingelesen.
// jede Zeile als eignener String
zeilen = loadStrings(&quot;Textdatei.txt&quot;);
noLoop(); // damit draw() nur ein mal ausgeführt wird
}

void draw() {
println(zeilen);
}</pre></p>
<p><span style="text-decoration:underline;"><strong>Beispiel:</strong></span> Textdatei schreiben</p>
<p>Funktioniert auch nur mit einer Datei &#8222;Textdatei.txt&#8220; im /data Ordner des Projekts.</p>
<p><pre class="brush: java;">
String[] zeilen; //String-Array

void setup() {
// hier wird der Inhalt der Textdatei in das String-Array
// zeilen eingelesen.
// jede Zeile als eignener String

zeilen = loadStrings(&quot;Textdatei.txt&quot;);
noLoop(); // damit draw() nur ein mal ausgeführt wird
}

void draw() {
println(zeilen);
// schreibt den Inhalt von &quot;zeilen&quot; in eine Datei mit
// dem Namen &quot;neueDatei.txt&quot;
saveStrings(&quot;neueDatei.txt&quot;, zeilen);
}
</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lernprocessing.wordpress.com/1381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lernprocessing.wordpress.com/1381/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lernprocessing.wordpress.com/1381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lernprocessing.wordpress.com/1381/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/lernprocessing.wordpress.com/1381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/lernprocessing.wordpress.com/1381/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/lernprocessing.wordpress.com/1381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/lernprocessing.wordpress.com/1381/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lernprocessing.wordpress.com/1381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lernprocessing.wordpress.com/1381/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lernprocessing.wordpress.com/1381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lernprocessing.wordpress.com/1381/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lernprocessing.wordpress.com/1381/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lernprocessing.wordpress.com/1381/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lernprocessing.wordpress.com&amp;blog=12477684&amp;post=1381&amp;subd=lernprocessing&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>https://lernprocessing.wordpress.com/2011/10/01/lesen-und-schreiben-von-textdateien-mit-processing/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="https://secure.gravatar.com/avatar/1a938cfdc6c69e0156e58e9d480ddf18?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">koberger</media:title>
		</media:content>

		<media:content url="http://lernprocessing.files.wordpress.com/2011/09/readfile.png?w=250" medium="image">
			<media:title type="html">readFile</media:title>
		</media:content>
	</item>
		<item>
		<title>Libraries</title>
		<link>https://lernprocessing.wordpress.com/2011/04/14/libraries/</link>
		<comments>https://lernprocessing.wordpress.com/2011/04/14/libraries/#comments</comments>
		<pubDate>Thu, 14 Apr 2011 13:37:05 +0000</pubDate>
		<dc:creator>Mag. Thomas Koberger</dc:creator>
				<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://lernprocessing.wordpress.com/?p=1332</guid>
		<description><![CDATA[Libraties sind Programme, genauer genommen Programmpakete, die Programmierer anderen Processing- Nutzern zur Verfügung stellen. Sie erweitern die ohnehin schon großartigen Möglichkeiten von Processing. Libraries gibt es für alle möglichen Einsatzbereiche. Einige sind schon in der Processing-Installation enthalten. Man nennt diese die Core-Libraries: Video Network DXF Export Java Skript Minim Audio OpenGL OpenGL2 PDF Export Serial [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lernprocessing.wordpress.com&amp;blog=12477684&amp;post=1332&amp;subd=lernprocessing&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Libraties sind Programme, genauer genommen Programmpakete, die Programmierer anderen Processing- Nutzern zur Verfügung stellen. Sie erweitern die ohnehin schon großartigen Möglichkeiten von Processing. Libraries gibt es für alle möglichen Einsatzbereiche. Einige sind schon in der Processing-Installation enthalten. Man nennt diese die Core-Libraries:</p>
<ul>
<li>Video</li>
<li>Network</li>
<li>DXF Export</li>
<li>Java Skript</li>
<li>Minim Audio</li>
<li>OpenGL</li>
<li>OpenGL2</li>
<li>PDF Export</li>
<li>Serial I/O</li>
</ul>
<p>Darüber hinaus gibt es noch eine ganze Menge sog. User-Libraries, die frei genutzt werden können, in Punkto Stabilität aber  nicht immer mit den Core- Libraries mithalten können.</p>
<p>Eine gute Übersicht findet man <a href="http://processing.org/reference/libraries/" target="_blank">hier</a> auf der offiziellen Processing-Seite.</p>
<p>Um eine Library in Processing zu verwenden muss sie immer separat mit der <em>import</em>- Anweisung in den Sketch eingebunden werden. Außerdem gibt in der Processing IDE auch die Möglichkeit das im Menü unter <em>Sketch &#8211;&gt; import Library &#8211;&gt;</em> zu erledigen.</p>
<pre>import processing.pdf.*;</pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lernprocessing.wordpress.com/1332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lernprocessing.wordpress.com/1332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lernprocessing.wordpress.com/1332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lernprocessing.wordpress.com/1332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/lernprocessing.wordpress.com/1332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/lernprocessing.wordpress.com/1332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/lernprocessing.wordpress.com/1332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/lernprocessing.wordpress.com/1332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lernprocessing.wordpress.com/1332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lernprocessing.wordpress.com/1332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lernprocessing.wordpress.com/1332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lernprocessing.wordpress.com/1332/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lernprocessing.wordpress.com/1332/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lernprocessing.wordpress.com/1332/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lernprocessing.wordpress.com&amp;blog=12477684&amp;post=1332&amp;subd=lernprocessing&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>https://lernprocessing.wordpress.com/2011/04/14/libraries/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="https://secure.gravatar.com/avatar/1a938cfdc6c69e0156e58e9d480ddf18?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">koberger</media:title>
		</media:content>
	</item>
		<item>
		<title>Processing mit Eclipse entwickeln</title>
		<link>https://lernprocessing.wordpress.com/2011/03/21/processing-mit-eclipse-entwickeln/</link>
		<comments>https://lernprocessing.wordpress.com/2011/03/21/processing-mit-eclipse-entwickeln/#comments</comments>
		<pubDate>Mon, 21 Mar 2011 17:33:12 +0000</pubDate>
		<dc:creator>Mag. Thomas Koberger</dc:creator>
				<category><![CDATA[advanced]]></category>
		<category><![CDATA[android apps]]></category>
		<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://lernprocessing.wordpress.com/?p=1129</guid>
		<description><![CDATA[Zuerst sollte man dieses Tutorial durcharbeiten: http://erik-bartmann.de/programmierung/processing/processing-mit-eclipse.html Mit der folgenden Funktion kann man seinen Code auch als Java Application laufen lassen. public static void main(String args[]) { PApplet.main(new String[] { "--present", "NAMEDERKLASSE" }); } Da Processing von PApplet abgeleitet wird, muss jede Klasse neue &#8220; extends PApplet&#8220; enthalten, damit alle Processing &#8211; Objekte auch innerhalb [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lernprocessing.wordpress.com&amp;blog=12477684&amp;post=1129&amp;subd=lernprocessing&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Zuerst sollte man dieses Tutorial durcharbeiten: <a href="http://erik-bartmann.de/programmierung/processing/processing-mit-eclipse.html" target="_blank">http://erik-bartmann.de/programmierung/processing/processing-mit-eclipse.html</a></p>
<p>Mit der folgenden Funktion kann man seinen Code auch als Java Application laufen lassen.</p>
<pre>public static void main(String args[]) {
PApplet.main(new String[] { "--present", "NAMEDERKLASSE" });
}</pre>
<p>Da Processing von PApplet abgeleitet wird, muss jede Klasse neue &#8220; extends PApplet&#8220; enthalten, damit alle Processing &#8211; Objekte auch innerhalb der neuen Klasse funktionieren.</p>
<p>Will man aber separate  Klassen erzeugen, die von einer Processing Anwendung aus benutzbar sind, haben wir das Problem, dass sich die Processing eigenen Anweisungen, wie z.B. rect() u.a. nicht verwenden lassen. Dieses Problem kann man lösen, in dem man der Klasse sagt, dass sie auf dem PApplet zeichnen soll.</p>
<p>Details darüber findet man hier:<a href="http://www.learningprocessing.com/tutorials/processing-in-eclipse/" target="_blank"> http://www.learningprocessing.com/tutorials/processing-in-eclipse/</a></p>
<p>Eine andere sehr gute Anleitung gibt es hier: <a href="http://creativecoding.org/en/beyond/p5/eclipse_as_editor" target="_blank">http://creativecoding.org/en/beyond/p5/eclipse_as_editor</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/lernprocessing.wordpress.com/1129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/lernprocessing.wordpress.com/1129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/lernprocessing.wordpress.com/1129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/lernprocessing.wordpress.com/1129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/lernprocessing.wordpress.com/1129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/lernprocessing.wordpress.com/1129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/lernprocessing.wordpress.com/1129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/lernprocessing.wordpress.com/1129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/lernprocessing.wordpress.com/1129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/lernprocessing.wordpress.com/1129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/lernprocessing.wordpress.com/1129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/lernprocessing.wordpress.com/1129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/lernprocessing.wordpress.com/1129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/lernprocessing.wordpress.com/1129/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=lernprocessing.wordpress.com&amp;blog=12477684&amp;post=1129&amp;subd=lernprocessing&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>https://lernprocessing.wordpress.com/2011/03/21/processing-mit-eclipse-entwickeln/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="https://secure.gravatar.com/avatar/1a938cfdc6c69e0156e58e9d480ddf18?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">koberger</media:title>
		</media:content>
	</item>
	</channel>
</rss>
