<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-37626267</id><updated>2009-11-07T06:34:00.492-08:00</updated><title type='text'>画像処理についてあれこれ</title><subtitle type='html'>ImageMagickをメインに、画像処理についてのTipsを書いていきます。</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kyle-in-jp.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default'/><link rel='alternate' type='text/html' href='http://kyle-in-jp.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default?start-index=26&amp;max-results=25'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>1330</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-37626267.post-6500645942713370970</id><published>2009-11-07T06:34:00.000-08:00</published><updated>2009-11-07T06:34:00.501-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><title type='text'>Processingで画像をグレースケールに変換する</title><content type='html'>Processingで画像をグレースケールに変換するには、以下のコードを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;// キャンバスサイズ&lt;br /&gt;size(400, 400);&lt;br /&gt;// 背景色&lt;br /&gt;background(#ffffee);&lt;br /&gt;// 塗りつぶし色&lt;br /&gt;fill(#d0d0f0);&lt;br /&gt;// 画像はdataディレクトリに置いておく&lt;br /&gt;PImage img = loadImage("sf2.jpg");&lt;br /&gt;// グレースケール&lt;br /&gt;img.filter(GRAY);&lt;br /&gt;// 画像の表示&lt;br /&gt;image(img, 50, 100);&lt;br /&gt;// ファイル保存&lt;br /&gt;save("sample1254a.png");&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;元画像(sf2.jpg)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cCx7DDoiq4w/StE0M2r21TI/AAAAAAAAF1c/r4X8jvAxQn8/s1600-h/sf2.jpg"&gt;&lt;img style="cursor: pointer; width: 300px; height: 225px;" src="http://1.bp.blogspot.com/_cCx7DDoiq4w/StE0M2r21TI/AAAAAAAAF1c/r4X8jvAxQn8/s320/sf2.jpg" alt="" id="BLOGGER_PHOTO_ID_5391147624381732146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;出力画像(sample1254a.png)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cCx7DDoiq4w/StE0FVdTpwI/AAAAAAAAF1U/HQYNUbX4pCA/s1600-h/sample1255a.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 320px;" src="http://4.bp.blogspot.com/_cCx7DDoiq4w/StE0FVdTpwI/AAAAAAAAF1U/HQYNUbX4pCA/s320/sample1255a.png" alt="Processingでグレースケールに変換した画像" id="BLOGGER_PHOTO_ID_5391147495203251970" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;Processing 1.0.7&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37626267-6500645942713370970?l=kyle-in-jp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kyle-in-jp.blogspot.com/feeds/6500645942713370970/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37626267&amp;postID=6500645942713370970' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/6500645942713370970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/6500645942713370970'/><link rel='alternate' type='text/html' href='http://kyle-in-jp.blogspot.com/2009/11/processing_07.html' title='Processingで画像をグレースケールに変換する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06107225176403410381'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_cCx7DDoiq4w/StE0M2r21TI/AAAAAAAAF1c/r4X8jvAxQn8/s72-c/sf2.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37626267.post-92545690118522671</id><published>2009-11-06T06:36:00.000-08:00</published><updated>2009-11-06T06:36:00.565-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><title type='text'>Processingで画像を着色する</title><content type='html'>Processingで画像を着色するには、以下のコードを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;// キャンバスサイズ&lt;br /&gt;size(400, 400);&lt;br /&gt;// 背景色&lt;br /&gt;background(#ffffee);&lt;br /&gt;// 塗りつぶし色&lt;br /&gt;fill(#d0d0f0);&lt;br /&gt;// 画像はdataディレクトリに置いておく&lt;br /&gt;PImage img = loadImage("sf2.jpg");&lt;br /&gt;// 着色&lt;br /&gt;tint(80, 120, 220, 158);&lt;br /&gt;// 画像の表示&lt;br /&gt;image(img, 50, 100);&lt;br /&gt;// ファイル保存&lt;br /&gt;save("sample1254a.png");&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;元画像(sf.jpg)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cCx7DDoiq4w/StEwPdv_p1I/AAAAAAAAF1M/h9pe65-xOlY/s1600-h/sf2.jpg"&gt;&lt;img style="cursor: pointer; width: 300px; height: 225px;" src="http://4.bp.blogspot.com/_cCx7DDoiq4w/StEwPdv_p1I/AAAAAAAAF1M/h9pe65-xOlY/s320/sf2.jpg" alt="" id="BLOGGER_PHOTO_ID_5391143271181297490" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;出力画像(sample1254a.png)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cCx7DDoiq4w/StEwJOn7q2I/AAAAAAAAF1E/uL2XjJV1KOY/s1600-h/sample1254a.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 320px;" src="http://3.bp.blogspot.com/_cCx7DDoiq4w/StEwJOn7q2I/AAAAAAAAF1E/uL2XjJV1KOY/s320/sample1254a.png" alt="" id="BLOGGER_PHOTO_ID_5391143164041735010" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;Processing 1.0.7&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37626267-92545690118522671?l=kyle-in-jp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kyle-in-jp.blogspot.com/feeds/92545690118522671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37626267&amp;postID=92545690118522671' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/92545690118522671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/92545690118522671'/><link rel='alternate' type='text/html' href='http://kyle-in-jp.blogspot.com/2009/11/processing_06.html' title='Processingで画像を着色する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06107225176403410381'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cCx7DDoiq4w/StEwPdv_p1I/AAAAAAAAF1M/h9pe65-xOlY/s72-c/sf2.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37626267.post-7437052841480839320</id><published>2009-11-05T07:01:00.000-08:00</published><updated>2009-11-05T07:01:00.374-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><title type='text'>Processingで画像を縮小する</title><content type='html'>Processingで画像を縮小するには、以下のコードを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;// キャンバスサイズ&lt;br /&gt;size(400, 400);&lt;br /&gt;// 背景色&lt;br /&gt;background(#ffffee);&lt;br /&gt;// 塗りつぶし色&lt;br /&gt;fill(#d0d0f0);&lt;br /&gt;// 画像はdataディレクトリに置いておく&lt;br /&gt;PImage img = loadImage("SF.JPG");&lt;br /&gt;// 画像の表示&lt;br /&gt;image(img, 100, 100);&lt;br /&gt;// リサイズして画像の表示&lt;br /&gt;image(img, 250, 250, 100, 100);&lt;br /&gt;// ファイル保存&lt;br /&gt;save("sample1253a.png");&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;出力画像(sample1253a.png)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cCx7DDoiq4w/StEuozlaOWI/AAAAAAAAF08/xaVO6Gl3Eqk/s1600-h/sample1253a.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 320px;" src="http://1.bp.blogspot.com/_cCx7DDoiq4w/StEuozlaOWI/AAAAAAAAF08/xaVO6Gl3Eqk/s320/sample1253a.png" alt="Processingで縮小した画像" id="BLOGGER_PHOTO_ID_5391141507515955554" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;Processing 1.0.7&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37626267-7437052841480839320?l=kyle-in-jp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kyle-in-jp.blogspot.com/feeds/7437052841480839320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37626267&amp;postID=7437052841480839320' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/7437052841480839320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/7437052841480839320'/><link rel='alternate' type='text/html' href='http://kyle-in-jp.blogspot.com/2009/11/processing_05.html' title='Processingで画像を縮小する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06107225176403410381'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_cCx7DDoiq4w/StEuozlaOWI/AAAAAAAAF08/xaVO6Gl3Eqk/s72-c/sample1253a.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37626267.post-5055601489430761207</id><published>2009-11-04T06:41:00.000-08:00</published><updated>2009-11-04T06:41:00.547-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><title type='text'>Processingで日本語文字列を描画する</title><content type='html'>Processingで日本語文字列を描画するには、以下のコードを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;// キャンバスサイズ&lt;br /&gt;size(400, 400);&lt;br /&gt;// 背景色&lt;br /&gt;background(#ffffee);&lt;br /&gt;// 塗りつぶし色&lt;br /&gt;fill(#d0d0f0);&lt;br /&gt;// フォントを変換&lt;br /&gt;PFont font = createFont("MS Gothic",48,true);&lt;br /&gt;// フォントを設定&lt;br /&gt;textFont(font);&lt;br /&gt;// 文字&lt;br /&gt;text("日本語の表示",50,200);&lt;br /&gt;// ファイル保存&lt;br /&gt;save("sample1252a.png");&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cCx7DDoiq4w/StCMvcvKjgI/AAAAAAAAF0k/YN5ZRa2SiTI/s1600-h/sample1252a.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 320px;" src="http://2.bp.blogspot.com/_cCx7DDoiq4w/StCMvcvKjgI/AAAAAAAAF0k/YN5ZRa2SiTI/s320/sample1252a.png" border="0" alt="Processingで描画した日本語文字列" id="BLOGGER_PHOTO_ID_5390963500758240770" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;Processing 1.0.7&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37626267-5055601489430761207?l=kyle-in-jp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kyle-in-jp.blogspot.com/feeds/5055601489430761207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37626267&amp;postID=5055601489430761207' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/5055601489430761207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/5055601489430761207'/><link rel='alternate' type='text/html' href='http://kyle-in-jp.blogspot.com/2009/11/processing_04.html' title='Processingで日本語文字列を描画する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06107225176403410381'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cCx7DDoiq4w/StCMvcvKjgI/AAAAAAAAF0k/YN5ZRa2SiTI/s72-c/sample1252a.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37626267.post-3892837488576174948</id><published>2009-11-03T06:55:00.000-08:00</published><updated>2009-11-03T06:55:00.241-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='PyWin32-ImageMagick'/><title type='text'>PyWin32とImageMagickで画像を絵画調に変換する</title><content type='html'>PyWin32とImageMagickで画像を絵画調に変換するには、以下のコードを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;# coding=UTF-8&lt;br /&gt;import win32com.client&lt;br /&gt;&lt;br /&gt;im = win32com.client.Dispatch("ImageMagickObject.MagickImage.1")&lt;br /&gt;im.convert("sf2.jpg", "-spread", "1", "-median", "2", &lt;br /&gt;"-emboss", "1", "sample1366a.png")&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;元画像(sf2.jpg)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cCx7DDoiq4w/StEtYu-OcyI/AAAAAAAAF0s/OWcx8X6eiQg/s1600-h/sf2.jpg"&gt;&lt;img style="cursor: pointer; width: 300px; height: 225px;" src="http://4.bp.blogspot.com/_cCx7DDoiq4w/StEtYu-OcyI/AAAAAAAAF0s/OWcx8X6eiQg/s320/sf2.jpg" alt="" id="BLOGGER_PHOTO_ID_5391140131888329506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;出力画像(sample1366a.png)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cCx7DDoiq4w/StEtf0gC7XI/AAAAAAAAF00/aPYSUDVow8M/s1600-h/sample1366a.png"&gt;&lt;img style="cursor: pointer; width: 300px; height: 225px;" src="http://1.bp.blogspot.com/_cCx7DDoiq4w/StEtf0gC7XI/AAAAAAAAF00/aPYSUDVow8M/s320/sample1366a.png" alt="" id="BLOGGER_PHOTO_ID_5391140253631442290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;Python3.1.1, Python for Windows Extensions (Build 214), ImageMagick6.5.5&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37626267-3892837488576174948?l=kyle-in-jp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kyle-in-jp.blogspot.com/feeds/3892837488576174948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37626267&amp;postID=3892837488576174948' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/3892837488576174948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/3892837488576174948'/><link rel='alternate' type='text/html' href='http://kyle-in-jp.blogspot.com/2009/11/pywin32imagemagick.html' title='PyWin32とImageMagickで画像を絵画調に変換する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06107225176403410381'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cCx7DDoiq4w/StEtYu-OcyI/AAAAAAAAF0s/OWcx8X6eiQg/s72-c/sf2.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37626267.post-7581387529403004917</id><published>2009-11-02T06:37:00.000-08:00</published><updated>2009-11-02T06:37:00.479-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><title type='text'>Processingで球を描画する</title><content type='html'>Processingで球を描画するには、以下のコードを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;// キャンバスサイズ&lt;br /&gt;size(400, 400, P3D);&lt;br /&gt;// 背景色&lt;br /&gt;background(#ffffee);&lt;br /&gt;// 線の色&lt;br /&gt;stroke(#7799dd, 128);&lt;br /&gt;// 線の太さ&lt;br /&gt;strokeWeight(2);&lt;br /&gt;// 塗りつぶし色&lt;br /&gt;fill(#e0e0f0, 128);&lt;br /&gt;// 移動&lt;br /&gt;translate(200, 200, 30);&lt;br /&gt;// 回転&lt;br /&gt;rotateX(PI/4);&lt;br /&gt;rotateY(PI/4);&lt;br /&gt;// 球&lt;br /&gt;sphere(150);&lt;br /&gt;// ファイル保存&lt;br /&gt;save("sample1251a.png");&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;出力画像(sample1251a.png)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cCx7DDoiq4w/StCL-MzZ8oI/AAAAAAAAF0c/n3tVqEl8eI4/s1600-h/sample1251a.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 320px;" src="http://4.bp.blogspot.com/_cCx7DDoiq4w/StCL-MzZ8oI/AAAAAAAAF0c/n3tVqEl8eI4/s320/sample1251a.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5390962654667469442" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;Processing 1.0.7&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37626267-7581387529403004917?l=kyle-in-jp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kyle-in-jp.blogspot.com/feeds/7581387529403004917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37626267&amp;postID=7581387529403004917' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/7581387529403004917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/7581387529403004917'/><link rel='alternate' type='text/html' href='http://kyle-in-jp.blogspot.com/2009/11/processing_02.html' title='Processingで球を描画する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06107225176403410381'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cCx7DDoiq4w/StCL-MzZ8oI/AAAAAAAAF0c/n3tVqEl8eI4/s72-c/sample1251a.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37626267.post-5508176049944052699</id><published>2009-11-01T06:29:00.000-08:00</published><updated>2009-11-01T06:29:00.047-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><title type='text'>Processingで立方体を描画する</title><content type='html'>Processingで立方体を描画するには、以下のコードを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;// キャンバスサイズ&lt;br /&gt;size(400, 400, P3D);&lt;br /&gt;// 背景色&lt;br /&gt;background(#ffffee);&lt;br /&gt;// 線の色&lt;br /&gt;stroke(#7799dd, 128);&lt;br /&gt;// 線の太さ&lt;br /&gt;strokeWeight(2);&lt;br /&gt;// 塗りつぶし色&lt;br /&gt;fill(#e0e0f0, 128);&lt;br /&gt;// 移動&lt;br /&gt;translate(200, 200, 30);&lt;br /&gt;// 回転&lt;br /&gt;rotateX(PI/4);&lt;br /&gt;rotateY(PI/4);&lt;br /&gt;// 立方体&lt;br /&gt;box(150);&lt;br /&gt;// ファイル保存&lt;br /&gt;save("sample1250a.png");&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;出力画像(sample1250a.png)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cCx7DDoiq4w/StCKL6tjGWI/AAAAAAAAF0U/3AdO9cvtBt4/s1600-h/sample1250a.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 320px;" src="http://1.bp.blogspot.com/_cCx7DDoiq4w/StCKL6tjGWI/AAAAAAAAF0U/3AdO9cvtBt4/s320/sample1250a.png" border="0" alt="Processingで描画した立方体" id="BLOGGER_PHOTO_ID_5390960691305978210" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;Processing 1.0.7&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37626267-5508176049944052699?l=kyle-in-jp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kyle-in-jp.blogspot.com/feeds/5508176049944052699/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37626267&amp;postID=5508176049944052699' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/5508176049944052699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/5508176049944052699'/><link rel='alternate' type='text/html' href='http://kyle-in-jp.blogspot.com/2009/11/processing.html' title='Processingで立方体を描画する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06107225176403410381'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_cCx7DDoiq4w/StCKL6tjGWI/AAAAAAAAF0U/3AdO9cvtBt4/s72-c/sample1250a.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37626267.post-1065765121434940604</id><published>2009-10-31T01:03:00.000-07:00</published><updated>2009-10-31T01:03:00.141-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><title type='text'>Processingでベジェ曲線を描画する</title><content type='html'>Processingでベジェ曲線を描画するには、以下のコードを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;// キャンバスサイズ&lt;br /&gt;size(400, 400);&lt;br /&gt;// 背景色&lt;br /&gt;background(#ffffee);&lt;br /&gt;// 線の色&lt;br /&gt;stroke(#7799dd);&lt;br /&gt;// 線の太さ&lt;br /&gt;strokeWeight(10);&lt;br /&gt;// ベジェ曲線&lt;br /&gt;bezier(20,200, 40,0, 360,400, 380,200);&lt;br /&gt;// ファイル保存&lt;br /&gt;save("sample1249a.png");&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;出力画像(sample1249a.png)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cCx7DDoiq4w/SswFJPAAyTI/AAAAAAAAF0M/gpA0G1ROmcg/s1600-h/sample1249a.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 320px;" src="http://3.bp.blogspot.com/_cCx7DDoiq4w/SswFJPAAyTI/AAAAAAAAF0M/gpA0G1ROmcg/s320/sample1249a.png" border="0" alt="Processingで描画したベジェ曲線" id="BLOGGER_PHOTO_ID_5389688510259185970" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;Processing 1.0.7&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37626267-1065765121434940604?l=kyle-in-jp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kyle-in-jp.blogspot.com/feeds/1065765121434940604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37626267&amp;postID=1065765121434940604' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/1065765121434940604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/1065765121434940604'/><link rel='alternate' type='text/html' href='http://kyle-in-jp.blogspot.com/2009/10/processing_31.html' title='Processingでベジェ曲線を描画する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06107225176403410381'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_cCx7DDoiq4w/SswFJPAAyTI/AAAAAAAAF0M/gpA0G1ROmcg/s72-c/sample1249a.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37626267.post-495118675764148947</id><published>2009-10-30T01:00:00.000-07:00</published><updated>2009-10-30T01:00:01.666-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><title type='text'>Processingで三角形を描画する</title><content type='html'>Processingで三角形を描画するには、以下のコードを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;// キャンバスサイズ&lt;br /&gt;size(400, 400);&lt;br /&gt;// 背景色&lt;br /&gt;background(#ffffee);&lt;br /&gt;// 線の色&lt;br /&gt;stroke(#7799dd);&lt;br /&gt;// 線の太さ&lt;br /&gt;strokeWeight(10);&lt;br /&gt;// 塗りつぶし色&lt;br /&gt;fill(#bbddff);&lt;br /&gt;// 三角形&lt;br /&gt;triangle(200, 50, 350, 350, 50, 350);&lt;br /&gt;// ファイル保存&lt;br /&gt;save("sample1248a.png");&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;出力画像(sample1248a.png)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cCx7DDoiq4w/SswEc7zz9HI/AAAAAAAAF0E/YjLlPfcNLGU/s1600-h/sample1248a.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 320px;" src="http://1.bp.blogspot.com/_cCx7DDoiq4w/SswEc7zz9HI/AAAAAAAAF0E/YjLlPfcNLGU/s320/sample1248a.png" border="0" alt="Processingで描画した三角形" id="BLOGGER_PHOTO_ID_5389687749193495666" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;Processing 1.0.7&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37626267-495118675764148947?l=kyle-in-jp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kyle-in-jp.blogspot.com/feeds/495118675764148947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37626267&amp;postID=495118675764148947' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/495118675764148947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/495118675764148947'/><link rel='alternate' type='text/html' href='http://kyle-in-jp.blogspot.com/2009/10/processing_30.html' title='Processingで三角形を描画する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06107225176403410381'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_cCx7DDoiq4w/SswEc7zz9HI/AAAAAAAAF0E/YjLlPfcNLGU/s72-c/sample1248a.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37626267.post-569778490369993036</id><published>2009-10-29T01:57:00.000-07:00</published><updated>2009-10-29T01:57:00.160-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><title type='text'>Processingで四角形を描画する</title><content type='html'>Processingで四角形を描画するには、以下のコードを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;// キャンバスサイズ&lt;br /&gt;size(400, 400);&lt;br /&gt;// 背景色&lt;br /&gt;background(#ffffee);&lt;br /&gt;// 線の色&lt;br /&gt;stroke(#7799dd);&lt;br /&gt;// 線の太さ&lt;br /&gt;strokeWeight(10);&lt;br /&gt;// 塗りつぶし色&lt;br /&gt;fill(#bbddff);&lt;br /&gt;// 四角形&lt;br /&gt;rect(50, 50, 300, 300);&lt;br /&gt;// ファイル保存&lt;br /&gt;save("sample1247a.png");&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;出力画像(sample1247a.png)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cCx7DDoiq4w/SswDzsOuntI/AAAAAAAAFz8/C8dIhGT61qc/s1600-h/sample1247a.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 320px;" src="http://3.bp.blogspot.com/_cCx7DDoiq4w/SswDzsOuntI/AAAAAAAAFz8/C8dIhGT61qc/s320/sample1247a.png" border="0" alt="Processingで描画した四角" id="BLOGGER_PHOTO_ID_5389687040636788434" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;Processing 1.0.7&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37626267-569778490369993036?l=kyle-in-jp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kyle-in-jp.blogspot.com/feeds/569778490369993036/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37626267&amp;postID=569778490369993036' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/569778490369993036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/569778490369993036'/><link rel='alternate' type='text/html' href='http://kyle-in-jp.blogspot.com/2009/10/processing_29.html' title='Processingで四角形を描画する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06107225176403410381'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_cCx7DDoiq4w/SswDzsOuntI/AAAAAAAAFz8/C8dIhGT61qc/s72-c/sample1247a.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37626267.post-6364726680916457857</id><published>2009-10-28T01:54:00.000-07:00</published><updated>2009-10-28T01:54:00.123-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><title type='text'>Processingで4画ポリゴンを描画する</title><content type='html'>Processingで4画ポリゴンを描画するには、以下のコードを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;// キャンバスサイズ&lt;br /&gt;size(400, 400);&lt;br /&gt;// 背景色&lt;br /&gt;background(#ffffee);&lt;br /&gt;// 線の色&lt;br /&gt;stroke(#7799dd);&lt;br /&gt;// 線の太さ&lt;br /&gt;strokeWeight(10);&lt;br /&gt;// 塗りつぶし色&lt;br /&gt;fill(#bbddff);&lt;br /&gt;// 4画ポリゴン&lt;br /&gt;quad(10, 50, 360, 30, 350, 320, 20, 360);&lt;br /&gt;// ファイル保存&lt;br /&gt;save("sample1246a.png");&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;動作環境(sample1246a.png)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cCx7DDoiq4w/SswDH-nSc8I/AAAAAAAAFz0/Bx8D84stkls/s1600-h/sample1246a.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 320px;" src="http://4.bp.blogspot.com/_cCx7DDoiq4w/SswDH-nSc8I/AAAAAAAAFz0/Bx8D84stkls/s320/sample1246a.png" border="0" alt="Processingで描画した4画ポリゴン" id="BLOGGER_PHOTO_ID_5389686289657394114" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;Processing 1.0.7&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37626267-6364726680916457857?l=kyle-in-jp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kyle-in-jp.blogspot.com/feeds/6364726680916457857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37626267&amp;postID=6364726680916457857' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/6364726680916457857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/6364726680916457857'/><link rel='alternate' type='text/html' href='http://kyle-in-jp.blogspot.com/2009/10/processing4.html' title='Processingで4画ポリゴンを描画する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06107225176403410381'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cCx7DDoiq4w/SswDH-nSc8I/AAAAAAAAFz0/Bx8D84stkls/s72-c/sample1246a.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37626267.post-1521920150498341954</id><published>2009-10-27T01:51:00.000-07:00</published><updated>2009-10-27T01:51:00.804-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><title type='text'>Processingで点を描画する</title><content type='html'>Processingで点を描画するには、以下のコードを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;// キャンバスサイズ&lt;br /&gt;size(400, 400);&lt;br /&gt;// 背景色&lt;br /&gt;background(#ffffee);&lt;br /&gt;// 線の色&lt;br /&gt;stroke(#7799dd, 50);&lt;br /&gt;// 線の太さ&lt;br /&gt;strokeWeight(10);&lt;br /&gt;// 点&lt;br /&gt;for(int li=0;li&amp;lt;800;li++){&lt;br /&gt;    float px = random(400);&lt;br /&gt;    float py = random(400);&lt;br /&gt;    point(px, py);&lt;br /&gt;}&lt;br /&gt;// ファイル保存&lt;br /&gt;save("sample1245a.png");&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;出力画像(sample1245a.png)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cCx7DDoiq4w/SswCaoV9n1I/AAAAAAAAFzs/NrP7tD5THHg/s1600-h/sample1245a.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 320px;" src="http://2.bp.blogspot.com/_cCx7DDoiq4w/SswCaoV9n1I/AAAAAAAAFzs/NrP7tD5THHg/s320/sample1245a.png" border="0" alt="Processingで描画した点" id="BLOGGER_PHOTO_ID_5389685510585032530" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;Processing 1.0.7&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37626267-1521920150498341954?l=kyle-in-jp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kyle-in-jp.blogspot.com/feeds/1521920150498341954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37626267&amp;postID=1521920150498341954' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/1521920150498341954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/1521920150498341954'/><link rel='alternate' type='text/html' href='http://kyle-in-jp.blogspot.com/2009/10/processing_27.html' title='Processingで点を描画する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06107225176403410381'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cCx7DDoiq4w/SswCaoV9n1I/AAAAAAAAFzs/NrP7tD5THHg/s72-c/sample1245a.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37626267.post-9197404022977674227</id><published>2009-10-26T01:47:00.000-07:00</published><updated>2009-10-26T01:47:41.273-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><title type='text'>Processingで直線を描画する</title><content type='html'>Processingで直線を描画するには、以下のコードを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;// キャンバスサイズ&lt;br /&gt;size(400, 400);&lt;br /&gt;// 背景色&lt;br /&gt;background(#ffffee);&lt;br /&gt;// 線の色&lt;br /&gt;stroke(#7799dd);&lt;br /&gt;// 線の太さ&lt;br /&gt;strokeWeight(10);&lt;br /&gt;// 線&lt;br /&gt;line(0, 0, 400, 400);&lt;br /&gt;// ファイル保存&lt;br /&gt;save("sample1244a.png");&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;出力画像(sample1244a.png)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cCx7DDoiq4w/SswBdv8ldRI/AAAAAAAAFzk/g-0NmDfnOQ8/s1600-h/sample1244a.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 320px;" src="http://2.bp.blogspot.com/_cCx7DDoiq4w/SswBdv8ldRI/AAAAAAAAFzk/g-0NmDfnOQ8/s320/sample1244a.png" border="0" alt="Processingで描画した直線" id="BLOGGER_PHOTO_ID_5389684464654054674" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;Processing 1.0.7&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37626267-9197404022977674227?l=kyle-in-jp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kyle-in-jp.blogspot.com/feeds/9197404022977674227/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37626267&amp;postID=9197404022977674227' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/9197404022977674227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/9197404022977674227'/><link rel='alternate' type='text/html' href='http://kyle-in-jp.blogspot.com/2009/10/processing_26.html' title='Processingで直線を描画する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06107225176403410381'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cCx7DDoiq4w/SswBdv8ldRI/AAAAAAAAFzk/g-0NmDfnOQ8/s72-c/sample1244a.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37626267.post-1473320627246746709</id><published>2009-10-25T01:38:00.000-07:00</published><updated>2009-10-25T01:38:00.330-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><title type='text'>Processingで楕円を描画する</title><content type='html'>Processingで楕円を描画するには、以下のコードを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;// キャンバスサイズ&lt;br /&gt;size(400, 400);&lt;br /&gt;// 背景色&lt;br /&gt;background(#ffffee);&lt;br /&gt;// 線の色&lt;br /&gt;stroke(#7799dd);&lt;br /&gt;// 線の太さ&lt;br /&gt;strokeWeight(10);&lt;br /&gt;// 塗りつぶし色&lt;br /&gt;fill(#bbddff);&lt;br /&gt;// 楕円&lt;br /&gt;ellipse(200, 200, 200,150);&lt;br /&gt;// ファイル保存&lt;br /&gt;save("sample1243a.png");&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;出力画像(sample1243a.png)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cCx7DDoiq4w/Ssv_W4M9ztI/AAAAAAAAFzc/Fnoat9xOHhA/s1600-h/sample1243a.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 320px;" src="http://2.bp.blogspot.com/_cCx7DDoiq4w/Ssv_W4M9ztI/AAAAAAAAFzc/Fnoat9xOHhA/s320/sample1243a.png" border="0" alt="Processingで描画した楕円" id="BLOGGER_PHOTO_ID_5389682147587903186" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;Processing 1.0.7&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37626267-1473320627246746709?l=kyle-in-jp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kyle-in-jp.blogspot.com/feeds/1473320627246746709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37626267&amp;postID=1473320627246746709' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/1473320627246746709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/1473320627246746709'/><link rel='alternate' type='text/html' href='http://kyle-in-jp.blogspot.com/2009/10/processing_25.html' title='Processingで楕円を描画する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06107225176403410381'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cCx7DDoiq4w/Ssv_W4M9ztI/AAAAAAAAFzc/Fnoat9xOHhA/s72-c/sample1243a.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37626267.post-3094296218480421005</id><published>2009-10-24T01:32:00.000-07:00</published><updated>2009-10-24T01:32:00.265-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='processing'/><title type='text'>Processingで円弧を描画する</title><content type='html'>Processingで円弧を描画するには、以下のコードを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;// キャンバスサイズ&lt;br /&gt;size(400, 400);&lt;br /&gt;// 背景色&lt;br /&gt;background(#ffffee);&lt;br /&gt;// 線の色&lt;br /&gt;stroke(#7799dd);&lt;br /&gt;// 線の太さ&lt;br /&gt;strokeWeight(10);&lt;br /&gt;// 円弧&lt;br /&gt;arc(200, 200, 160, 160, 0, 1.5*PI);&lt;br /&gt;// ファイル保存&lt;br /&gt;save("sample1242a.png");&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;出力画像(sample1242a.png)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cCx7DDoiq4w/Ssv-f-uJOqI/AAAAAAAAFzU/_mqyw1mi4iI/s1600-h/sample1242a.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 320px;" src="http://2.bp.blogspot.com/_cCx7DDoiq4w/Ssv-f-uJOqI/AAAAAAAAFzU/_mqyw1mi4iI/s320/sample1242a.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5389681204444871330" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;Processing 1.0.7&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37626267-3094296218480421005?l=kyle-in-jp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kyle-in-jp.blogspot.com/feeds/3094296218480421005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37626267&amp;postID=3094296218480421005' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/3094296218480421005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/3094296218480421005'/><link rel='alternate' type='text/html' href='http://kyle-in-jp.blogspot.com/2009/10/processing.html' title='Processingで円弧を描画する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06107225176403410381'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cCx7DDoiq4w/Ssv-f-uJOqI/AAAAAAAAFzU/_mqyw1mi4iI/s72-c/sample1242a.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37626267.post-4021322611132882221</id><published>2009-10-23T07:31:00.000-07:00</published><updated>2009-10-23T07:31:00.206-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='groovy-JOGL'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>groovyとJOGLで複数の立方体を渦巻状に描画する</title><content type='html'>groovyとJOGLで複数の立方体を渦巻状に描画するには、以下のコードを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;import static javax.media.opengl.GL.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;import javax.media.opengl.*;&lt;br /&gt;import com.sun.opengl.util.*;&lt;br /&gt;&lt;br /&gt;// 出力画像サイズ&lt;br /&gt;width = 300&lt;br /&gt;height = 300&lt;br /&gt;&lt;br /&gt;GLDrawableFactory gldf = &lt;br /&gt;  GLDrawableFactory.getFactory()&lt;br /&gt;GLCapabilities glc = new GLCapabilities()&lt;br /&gt;glc.setDoubleBuffered(false)&lt;br /&gt;GLPbuffer buf = gldf.createGLPbuffer(&lt;br /&gt;  glc, null, width, height, null)&lt;br /&gt;GL gl = buf.getGL()&lt;br /&gt;&lt;br /&gt;buf.addGLEventListener(&lt;br /&gt;[ init: {&lt;br /&gt;    // 背景色&lt;br /&gt;    gl.glClearColor(&lt;br /&gt;      0xf0/0xff as Float, &lt;br /&gt;      0xf0/0xff as Float, &lt;br /&gt;      0xf0/0xff as Float,&lt;br /&gt;      1f)&lt;br /&gt;  },&lt;br /&gt;&lt;br /&gt;  display: {&lt;br /&gt;    GLUT glut = new GLUT()&lt;br /&gt;    gl.glViewport(0, 0, width, height)&lt;br /&gt;&lt;br /&gt;    // 透視投影&lt;br /&gt;    gl.glMatrixMode(GL_PROJECTION)&lt;br /&gt;    gl.glLoadIdentity()&lt;br /&gt;    float ratio = height/width as Float&lt;br /&gt;    gl.glFrustum(-1.0f, 1.0f, -ratio, ratio,&lt;br /&gt;      5.0f, 60.0f)&lt;br /&gt;&lt;br /&gt;    gl.glMatrixMode(GL_MODELVIEW)&lt;br /&gt;    gl.glLoadIdentity()&lt;br /&gt;    gl.glTranslatef(0.0f, 0.0f, -50.0f)&lt;br /&gt;&lt;br /&gt;    gl.glEnable(GL_LIGHTING)&lt;br /&gt;    gl.glEnable(GL_LIGHT0)&lt;br /&gt;    gl.glEnable(GL_COLOR_MATERIAL)&lt;br /&gt;    gl.glEnable(GL_NORMALIZE)&lt;br /&gt;    gl.glEnable(GL_DEPTH_TEST)&lt;br /&gt;    gl.glEnable(GL_CULL_FACE)&lt;br /&gt;&lt;br /&gt;    gl.glClear(GL_COLOR_BUFFER_BIT&lt;br /&gt;      | GL_DEPTH_BUFFER_BIT )&lt;br /&gt;&lt;br /&gt;    gl.glPushMatrix()&lt;br /&gt;&lt;br /&gt;    // 面の色を設定&lt;br /&gt;    gl.glColor3f(&lt;br /&gt;      0x77/0xff as float, &lt;br /&gt;      0x99/0xff as float, &lt;br /&gt;      0xff/0xff as float&lt;br /&gt;    )&lt;br /&gt;&lt;br /&gt;    // Y軸回転&lt;br /&gt;    gl.glRotatef(30.0f, 0.0f, 1.0f, 0.0f)&lt;br /&gt;&lt;br /&gt;    cs = 0.01f&lt;br /&gt;    for(li in 0..300-1){&lt;br /&gt;      // Z軸回転&lt;br /&gt;      gl.glRotatef(12.0f, 0.0f, 0.0f, 1.0f)&lt;br /&gt;      // 移動&lt;br /&gt;      gl.glTranslatef(0.0f, cs*1.1f as float, 0.0f)&lt;br /&gt;      // 立方体を描画&lt;br /&gt;      glut.glutSolidCube((cs*=1.02) as float)&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    gl.glPopMatrix()&lt;br /&gt;  },&lt;br /&gt;&lt;br /&gt;  reshape: {},&lt;br /&gt;  displayChanged: {}&lt;br /&gt;] as GLEventListener&lt;br /&gt;)&lt;br /&gt;GLContext context = &lt;br /&gt;  buf.createContext(null)&lt;br /&gt;context.makeCurrent()&lt;br /&gt;buf.display()&lt;br /&gt;Screenshot.writeToFile(&lt;br /&gt;  new File("sample1317a.png"), &lt;br /&gt;  width, height, true)&lt;br /&gt;context.release()&lt;br /&gt;context.destroy()&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;出力画像(sample1317a.png)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cCx7DDoiq4w/SqGjidsZrCI/AAAAAAAAFzE/559OVGr1KL0/s1600-h/sample1317a.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 300px;" src="http://2.bp.blogspot.com/_cCx7DDoiq4w/SqGjidsZrCI/AAAAAAAAFzE/559OVGr1KL0/s320/sample1317a.png" border="0" alt="groovyとJOGLで描画した複数の立方体の渦巻き" id="BLOGGER_PHOTO_ID_5377759242538822690" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK1.6 Update14, Groovy 1.6.3, JOGL 1.1.1a&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37626267-4021322611132882221?l=kyle-in-jp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kyle-in-jp.blogspot.com/feeds/4021322611132882221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37626267&amp;postID=4021322611132882221' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/4021322611132882221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/4021322611132882221'/><link rel='alternate' type='text/html' href='http://kyle-in-jp.blogspot.com/2009/10/groovyjogl_23.html' title='groovyとJOGLで複数の立方体を渦巻状に描画する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06107225176403410381'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cCx7DDoiq4w/SqGjidsZrCI/AAAAAAAAFzE/559OVGr1KL0/s72-c/sample1317a.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37626267.post-466308786977416995</id><published>2009-10-22T07:23:00.000-07:00</published><updated>2009-10-22T07:23:00.187-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='groovy-JOGL'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>groovyとJOGLで凹んだポリゴンを描画する</title><content type='html'>groovyとJOGLで凹んだポリゴンを描画するには、以下のコードを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;import static javax.media.opengl.GL.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;import javax.media.opengl.glu.*;&lt;br /&gt;import javax.media.opengl.*;&lt;br /&gt;import com.sun.opengl.util.*;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;class TessCB extends GLUtessellatorCallbackAdapter &lt;br /&gt;{&lt;br /&gt;  def gl = null&lt;br /&gt;  def glu = null&lt;br /&gt;&lt;br /&gt;  TessCB(GL gla, GLU glua)&lt;br /&gt;  {&lt;br /&gt;    gl = gla&lt;br /&gt;    glu = glua&lt;br /&gt;  }&lt;br /&gt;  void begin(int type)&lt;br /&gt;  {&lt;br /&gt;    gl.glBegin(type)&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  void end()&lt;br /&gt;  {&lt;br /&gt;    gl.glEnd()&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  void vertex(Object vertexData)&lt;br /&gt;  {&lt;br /&gt;    if( vertexData instanceof double[] ){&lt;br /&gt;      gl.glVertex3dv(vertexData, 0);&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  void error(int errnum)&lt;br /&gt;  {&lt;br /&gt;    println(glu.gluErrorString(errnum))&lt;br /&gt;    System.exit(0)&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// 出力画像サイズ&lt;br /&gt;width = 300&lt;br /&gt;height = 300&lt;br /&gt;&lt;br /&gt;GLDrawableFactory gldf = &lt;br /&gt;  GLDrawableFactory.getFactory()&lt;br /&gt;GLCapabilities glc = new GLCapabilities()&lt;br /&gt;glc.setDoubleBuffered(false)&lt;br /&gt;GLPbuffer buf = gldf.createGLPbuffer(&lt;br /&gt;  glc, null, width, height, null)&lt;br /&gt;GL gl = buf.getGL()&lt;br /&gt;&lt;br /&gt;buf.addGLEventListener(&lt;br /&gt;[ init: {&lt;br /&gt;    // 背景色&lt;br /&gt;    gl.glClearColor(&lt;br /&gt;      0xf0/0xff as Float, &lt;br /&gt;      0xf0/0xff as Float, &lt;br /&gt;      0xf0/0xff as Float,&lt;br /&gt;      1f)&lt;br /&gt;  },&lt;br /&gt;&lt;br /&gt;  display: {&lt;br /&gt;    GLU glu = new GLU()&lt;br /&gt;    gl.glViewport(0, 0, width, height)&lt;br /&gt;&lt;br /&gt;    // 透視投影&lt;br /&gt;    gl.glMatrixMode(GL_PROJECTION)&lt;br /&gt;    gl.glLoadIdentity()&lt;br /&gt;    float ratio = height/width as Float&lt;br /&gt;    gl.glFrustum(-1.0f, 1.0f, -ratio, ratio,&lt;br /&gt;      5.0f, 40.0f)&lt;br /&gt;&lt;br /&gt;    gl.glMatrixMode(GL_MODELVIEW)&lt;br /&gt;    gl.glLoadIdentity()&lt;br /&gt;    gl.glTranslatef(0.0f, 0.0f, -7.0f)&lt;br /&gt;&lt;br /&gt;    gl.glEnable(GL_LIGHTING)&lt;br /&gt;    gl.glEnable(GL_LIGHT0)&lt;br /&gt;    gl.glEnable(GL_COLOR_MATERIAL)&lt;br /&gt;    gl.glEnable(GL_NORMALIZE)&lt;br /&gt;    gl.glEnable(GL_DEPTH_TEST)&lt;br /&gt;&lt;br /&gt;    gl.glClear(GL_COLOR_BUFFER_BIT&lt;br /&gt;      | GL_DEPTH_BUFFER_BIT )&lt;br /&gt;&lt;br /&gt;    gl.glPushMatrix()&lt;br /&gt;&lt;br /&gt;    // 面の色を設定&lt;br /&gt;    gl.glColor3f(&lt;br /&gt;      0x77/0xff as float, &lt;br /&gt;      0x99/0xff as float, &lt;br /&gt;      0xff/0xff as float&lt;br /&gt;    )&lt;br /&gt;&lt;br /&gt;    GLUtessellator tess = glu.gluNewTess()&lt;br /&gt;&lt;br /&gt;    tcb = new TessCB(gl, glu)&lt;br /&gt;    glu.gluTessCallback(tess, GLU.GLU_TESS_VERTEX, tcb)&lt;br /&gt;    glu.gluTessCallback(tess, GLU.GLU_TESS_BEGIN, tcb)&lt;br /&gt;    glu.gluTessCallback(tess, GLU.GLU_TESS_END, tcb)&lt;br /&gt;    glu.gluTessCallback(tess, GLU.GLU_TESS_ERROR, tcb)&lt;br /&gt;&lt;br /&gt;    va = [&lt;br /&gt;      [1.0, -1.0, 0.0],&lt;br /&gt;      [1.0, 1.0, 0.0],&lt;br /&gt;      [-1.0, 1.0, 0.0],&lt;br /&gt;      [-1.0, -1.0, 0.0],&lt;br /&gt;      [0.0, -0.5, 0.0]&lt;br /&gt;    ]&lt;br /&gt;&lt;br /&gt;    glu.gluTessBeginPolygon(tess, null);&lt;br /&gt;    glu.gluTessBeginContour(tess);&lt;br /&gt;    for(al in 0..va.size-1){&lt;br /&gt;      glu.gluTessVertex(tess, va[al] as double[], 0, &lt;br /&gt;        va[al] as double[])&lt;br /&gt;    }&lt;br /&gt;    glu.gluTessEndContour(tess);&lt;br /&gt;    glu.gluTessEndPolygon(tess);&lt;br /&gt;&lt;br /&gt;    gl.glPopMatrix()&lt;br /&gt;  },&lt;br /&gt;&lt;br /&gt;  reshape: {},&lt;br /&gt;  displayChanged: {}&lt;br /&gt;] as GLEventListener&lt;br /&gt;)&lt;br /&gt;GLContext context = &lt;br /&gt;  buf.createContext(null)&lt;br /&gt;context.makeCurrent()&lt;br /&gt;buf.display()&lt;br /&gt;Screenshot.writeToFile(&lt;br /&gt;  new File("sample1316a.png"), &lt;br /&gt;  width, height, true)&lt;br /&gt;context.release()&lt;br /&gt;context.destroy()&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;出力画像(sample1316a.png)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cCx7DDoiq4w/SqGiDvQ7PSI/AAAAAAAAFy8/d7Z3TOI4aNY/s1600-h/sample1316a.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 300px;" src="http://1.bp.blogspot.com/_cCx7DDoiq4w/SqGiDvQ7PSI/AAAAAAAAFy8/d7Z3TOI4aNY/s320/sample1316a.png" border="0" alt="groovyとJOGLで描画したへこんだポリゴン" id="BLOGGER_PHOTO_ID_5377757615167847714" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK1.6 Update14, Groovy 1.6.3, JOGL 1.1.1a&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37626267-466308786977416995?l=kyle-in-jp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kyle-in-jp.blogspot.com/feeds/466308786977416995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37626267&amp;postID=466308786977416995' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/466308786977416995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/466308786977416995'/><link rel='alternate' type='text/html' href='http://kyle-in-jp.blogspot.com/2009/10/groovyjogl_22.html' title='groovyとJOGLで凹んだポリゴンを描画する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06107225176403410381'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_cCx7DDoiq4w/SqGiDvQ7PSI/AAAAAAAAFy8/d7Z3TOI4aNY/s72-c/sample1316a.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37626267.post-2271605529045599676</id><published>2009-10-21T07:19:00.000-07:00</published><updated>2009-10-21T07:19:00.440-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='groovy-JOGL'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>groovyとJOGLで複数の球の文字列を描画する</title><content type='html'>groovyとJOGLで複数の球の文字列を描画するには、以下のコードを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;import static javax.media.opengl.GL.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;import java.awt.*;&lt;br /&gt;import java.awt.font.*;&lt;br /&gt;import java.awt.geom.*;&lt;br /&gt;import java.awt.image.*;&lt;br /&gt;import javax.media.opengl.*;&lt;br /&gt;import com.sun.opengl.util.*;&lt;br /&gt;&lt;br /&gt;// 出力画像サイズ&lt;br /&gt;width = 300&lt;br /&gt;height = 300&lt;br /&gt;&lt;br /&gt;GLDrawableFactory gldf = &lt;br /&gt;  GLDrawableFactory.getFactory()&lt;br /&gt;GLCapabilities glc = new GLCapabilities()&lt;br /&gt;glc.setDoubleBuffered(false)&lt;br /&gt;GLPbuffer buf = gldf.createGLPbuffer(&lt;br /&gt;  glc, null, width, height, null)&lt;br /&gt;GL gl = buf.getGL()&lt;br /&gt;&lt;br /&gt;buf.addGLEventListener(&lt;br /&gt;[ init: {&lt;br /&gt;    // 背景色&lt;br /&gt;    gl.glClearColor(&lt;br /&gt;      0xf0/0xff as Float, &lt;br /&gt;      0xf0/0xff as Float, &lt;br /&gt;      0xf0/0xff as Float,&lt;br /&gt;      1f)&lt;br /&gt;  },&lt;br /&gt;&lt;br /&gt;  display: {&lt;br /&gt;    GLUT glut = new GLUT()&lt;br /&gt;    gl.glViewport(0, 0, width, height)&lt;br /&gt;&lt;br /&gt;    // 透視投影&lt;br /&gt;    gl.glMatrixMode(GL_PROJECTION)&lt;br /&gt;    gl.glLoadIdentity()&lt;br /&gt;    float ratio = height/width as Float&lt;br /&gt;    gl.glFrustum(-1.0f, 1.0f, -ratio, ratio,&lt;br /&gt;      5.0f, 40.0f)&lt;br /&gt;&lt;br /&gt;    gl.glMatrixMode(GL_MODELVIEW)&lt;br /&gt;    gl.glLoadIdentity()&lt;br /&gt;    gl.glTranslatef(-6.0f, 1.0f, -35.0f)&lt;br /&gt;&lt;br /&gt;    gl.glEnable(GL_LIGHTING)&lt;br /&gt;    gl.glEnable(GL_LIGHT0)&lt;br /&gt;    gl.glEnable(GL_COLOR_MATERIAL)&lt;br /&gt;    gl.glEnable(GL_NORMALIZE)&lt;br /&gt;    gl.glEnable(GL_DEPTH_TEST)&lt;br /&gt;    gl.glEnable(GL_CULL_FACE)&lt;br /&gt;&lt;br /&gt;    gl.glClear(GL_COLOR_BUFFER_BIT&lt;br /&gt;      | GL_DEPTH_BUFFER_BIT )&lt;br /&gt;&lt;br /&gt;    gl.glPushMatrix()&lt;br /&gt;&lt;br /&gt;    // 面の色を設定&lt;br /&gt;    gl.glColor3f(&lt;br /&gt;      0x77/0xff as float, &lt;br /&gt;      0x99/0xff as float, &lt;br /&gt;      0xff/0xff as float&lt;br /&gt;    )&lt;br /&gt;&lt;br /&gt;    // X軸回転&lt;br /&gt;    gl.glRotatef(70.0f, 1.0f, 0.0f, 0.0f)&lt;br /&gt;    // Y軸回転&lt;br /&gt;    gl.glRotatef(10.0f, 0.0f, 1.0f, 0.0f)&lt;br /&gt;&lt;br /&gt;    /* 文字列描画用イメージを作成 */&lt;br /&gt;    message = "JOGL"&lt;br /&gt;    Font font = new Font(Font.SANS_SERIF, &lt;br /&gt;      Font.PLAIN, 10)&lt;br /&gt;    FontRenderContext frc = new FontRenderContext(&lt;br /&gt;      new AffineTransform(), false as boolean, &lt;br /&gt;      false as boolean)&lt;br /&gt;    TextLayout layout = new TextLayout(&lt;br /&gt;      message, font, frc)&lt;br /&gt;&lt;br /&gt;    BufferedImage img = new BufferedImage(&lt;br /&gt;      (int)layout.getBounds().getWidth(), &lt;br /&gt;      (int)layout.getAscent() + &lt;br /&gt;      (int)layout.getDescent(), &lt;br /&gt;      BufferedImage.TYPE_INT_ARGB)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    Graphics2D gr = img.createGraphics();&lt;br /&gt;    gr.setColor(new Color(0x00, 0x00, 0x00, 0x00))&lt;br /&gt;    gr.fill(new Rectangle2D.Double(0,0,&lt;br /&gt;      img.getWidth(),img.getHeight()))&lt;br /&gt;    /* 文字列を描画 */&lt;br /&gt;    gr.setColor(new Color(0xff, 0xff, 0xff))&lt;br /&gt;    gr.setFont(font)&lt;br /&gt;    layout.draw(gr, 0, &lt;br /&gt;      (img.getHeight()-layout.getDescent()) as int)&lt;br /&gt;    gr.dispose()&lt;br /&gt;&lt;br /&gt;    rs = 0.25f&lt;br /&gt;    ds = 0.45f&lt;br /&gt;    for(lz in 0..img.getHeight()-1){ &lt;br /&gt;      for(lx in 0..img.getWidth()-1){ &lt;br /&gt;        gl.glPushMatrix()&lt;br /&gt;        gl.glTranslatef(ds*lx as float, 0f, ds*lz as float)&lt;br /&gt;        if( img.getRGB(lx, lz) != 0 ){&lt;br /&gt;          glut.glutSolidSphere(rs, 16, 16)&lt;br /&gt;        }&lt;br /&gt;        gl.glPopMatrix()&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    gl.glPopMatrix()&lt;br /&gt;  },&lt;br /&gt;&lt;br /&gt;  reshape: {},&lt;br /&gt;  displayChanged: {}&lt;br /&gt;] as GLEventListener&lt;br /&gt;)&lt;br /&gt;GLContext context = &lt;br /&gt;  buf.createContext(null)&lt;br /&gt;context.makeCurrent()&lt;br /&gt;buf.display()&lt;br /&gt;Screenshot.writeToFile(&lt;br /&gt;  new File("sample1315a.png"), &lt;br /&gt;  width, height, true)&lt;br /&gt;context.release()&lt;br /&gt;context.destroy()&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;出力画像(sample1315a.png)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cCx7DDoiq4w/SqGgt-pHZuI/AAAAAAAAFy0/VS91WRtHeC0/s1600-h/sample1315a.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 300px;" src="http://2.bp.blogspot.com/_cCx7DDoiq4w/SqGgt-pHZuI/AAAAAAAAFy0/VS91WRtHeC0/s320/sample1315a.png" border="0" alt="groovyとJOGLで複数の球の文字列を描画した画像" id="BLOGGER_PHOTO_ID_5377756141827090146" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK1.6 Update14, Groovy 1.6.3, JOGL 1.1.1a&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37626267-2271605529045599676?l=kyle-in-jp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kyle-in-jp.blogspot.com/feeds/2271605529045599676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37626267&amp;postID=2271605529045599676' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/2271605529045599676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/2271605529045599676'/><link rel='alternate' type='text/html' href='http://kyle-in-jp.blogspot.com/2009/10/groovyjogl_21.html' title='groovyとJOGLで複数の球の文字列を描画する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06107225176403410381'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cCx7DDoiq4w/SqGgt-pHZuI/AAAAAAAAFy0/VS91WRtHeC0/s72-c/sample1315a.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37626267.post-7810060507536231225</id><published>2009-10-20T07:34:00.000-07:00</published><updated>2009-10-20T07:34:00.335-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='groovy-JOGL'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>groovyとJOGLで円柱がウニのように広がった画像を作成する</title><content type='html'>groovyとJOGLで円柱がウニのように広がった画像を作成するには、以下のコードを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;import static javax.media.opengl.GL.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;import javax.media.opengl.*;&lt;br /&gt;import com.sun.opengl.util.*;&lt;br /&gt;&lt;br /&gt;// 出力画像サイズ&lt;br /&gt;width = 300&lt;br /&gt;height = 300&lt;br /&gt;&lt;br /&gt;GLDrawableFactory gldf = &lt;br /&gt;  GLDrawableFactory.getFactory()&lt;br /&gt;GLCapabilities glc = new GLCapabilities()&lt;br /&gt;glc.setDoubleBuffered(false)&lt;br /&gt;GLPbuffer buf = gldf.createGLPbuffer(&lt;br /&gt;  glc, null, width, height, null)&lt;br /&gt;GL gl = buf.getGL()&lt;br /&gt;&lt;br /&gt;buf.addGLEventListener(&lt;br /&gt;[ init: {&lt;br /&gt;    // 背景色&lt;br /&gt;    gl.glClearColor(&lt;br /&gt;      0xf0/0xff as Float, &lt;br /&gt;      0xf0/0xff as Float, &lt;br /&gt;      0xf0/0xff as Float,&lt;br /&gt;      1f)&lt;br /&gt;  },&lt;br /&gt;&lt;br /&gt;  display: {&lt;br /&gt;    GLUT glut = new GLUT()&lt;br /&gt;    gl.glViewport(0, 0, width, height)&lt;br /&gt;&lt;br /&gt;    // 透視投影&lt;br /&gt;    gl.glMatrixMode(GL_PROJECTION)&lt;br /&gt;    gl.glLoadIdentity()&lt;br /&gt;    float ratio = height/width as Float&lt;br /&gt;    gl.glFrustum(-1.0f, 1.0f, -ratio, ratio,&lt;br /&gt;      5.0f, 40.0f)&lt;br /&gt;&lt;br /&gt;    gl.glMatrixMode(GL_MODELVIEW)&lt;br /&gt;    gl.glLoadIdentity()&lt;br /&gt;    gl.glTranslatef(0.0f, -1.0f, -30.0f)&lt;br /&gt;&lt;br /&gt;    gl.glEnable(GL_LIGHTING)&lt;br /&gt;    gl.glEnable(GL_LIGHT0)&lt;br /&gt;    gl.glEnable(GL_COLOR_MATERIAL)&lt;br /&gt;    gl.glEnable(GL_NORMALIZE)&lt;br /&gt;    gl.glEnable(GL_AUTO_NORMAL)&lt;br /&gt;    gl.glEnable(GL_DEPTH_TEST)&lt;br /&gt;    gl.glEnable(GL_CULL_FACE)&lt;br /&gt;&lt;br /&gt;    gl.glClear(GL_COLOR_BUFFER_BIT&lt;br /&gt;      | GL_DEPTH_BUFFER_BIT )&lt;br /&gt;&lt;br /&gt;    gl.glPushMatrix()&lt;br /&gt;&lt;br /&gt;    // 面の色を設定&lt;br /&gt;    gl.glColor3f(&lt;br /&gt;      0x77/0xff as float, &lt;br /&gt;      0x99/0xff as float, &lt;br /&gt;      0xff/0xff as float&lt;br /&gt;    )&lt;br /&gt;&lt;br /&gt;    // X軸回転&lt;br /&gt;    gl.glRotatef(45.0f, 1.0f, 0.0f, 0.0f)&lt;br /&gt;    // Y軸回転&lt;br /&gt;    gl.glRotatef(45.0f, 0.0f, 1.0f, 0.0f)&lt;br /&gt;&lt;br /&gt;    slices = 12&lt;br /&gt;    ch = 5f&lt;br /&gt;    cr = 0.25f&lt;br /&gt;&lt;br /&gt;    for(lx in 0..slices-1){&lt;br /&gt;      for(ly in 0..slices-1){&lt;br /&gt;        gl.glPushMatrix()&lt;br /&gt;        // X軸回転&lt;br /&gt;        gl.glRotatef(360f/slices*lx as float, 1.0f, 0.0f, 0.0f)&lt;br /&gt;        // Y軸回転&lt;br /&gt;        gl.glRotatef(360f/slices*ly as float, 0.0f, 1.0f, 0.0f)&lt;br /&gt;        // 円柱を描画&lt;br /&gt;        glut.glutSolidCylinder(cr, ch, 16, 4)&lt;br /&gt;        gl.glPopMatrix()&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    gl.glPopMatrix()&lt;br /&gt;  },&lt;br /&gt;&lt;br /&gt;  reshape: {},&lt;br /&gt;  displayChanged: {}&lt;br /&gt;] as GLEventListener&lt;br /&gt;)&lt;br /&gt;GLContext context = &lt;br /&gt;  buf.createContext(null)&lt;br /&gt;context.makeCurrent()&lt;br /&gt;buf.display()&lt;br /&gt;Screenshot.writeToFile(&lt;br /&gt;  new File("sample1314a.png"), &lt;br /&gt;  width, height, true)&lt;br /&gt;context.release()&lt;br /&gt;context.destroy()&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;出力画像(sample1314a.png)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cCx7DDoiq4w/Sp_NH9awv_I/AAAAAAAAFys/VCiaOaIfAEo/s1600-h/sample1314a.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 300px;" src="http://1.bp.blogspot.com/_cCx7DDoiq4w/Sp_NH9awv_I/AAAAAAAAFys/VCiaOaIfAEo/s320/sample1314a.png" border="0" alt="groovyとJOGLで描画した円柱がウニのように広がった画像" id="BLOGGER_PHOTO_ID_5377242016733249522" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK1.6 Update14, Groovy 1.6.3, JOGL 1.1.1a&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37626267-7810060507536231225?l=kyle-in-jp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kyle-in-jp.blogspot.com/feeds/7810060507536231225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37626267&amp;postID=7810060507536231225' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/7810060507536231225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/7810060507536231225'/><link rel='alternate' type='text/html' href='http://kyle-in-jp.blogspot.com/2009/10/groovyjogl_20.html' title='groovyとJOGLで円柱がウニのように広がった画像を作成する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06107225176403410381'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_cCx7DDoiq4w/Sp_NH9awv_I/AAAAAAAAFys/VCiaOaIfAEo/s72-c/sample1314a.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37626267.post-51210840555116824</id><published>2009-10-19T07:20:00.000-07:00</published><updated>2009-10-19T07:20:00.189-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='groovy-JOGL'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>groovyとJOGLでピラミッドを描画する</title><content type='html'>groovyとJOGLでピラミッドを描画するには、以下のコードを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;import static javax.media.opengl.GL.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;import javax.media.opengl.*;&lt;br /&gt;import com.sun.opengl.util.*;&lt;br /&gt;&lt;br /&gt;// 出力画像サイズ&lt;br /&gt;width = 300&lt;br /&gt;height = 300&lt;br /&gt;&lt;br /&gt;def drawTriangle(GL gl, &lt;br /&gt;  double p1x, double p1y, double p1z,&lt;br /&gt;  double p2x, double p2y, double p2z,&lt;br /&gt;  double p3x, double p3y, double p3z)&lt;br /&gt;{&lt;br /&gt;  gl.glBegin(GL_POLYGON)&lt;br /&gt;&lt;br /&gt;  gl.glNormal3d((p1x+p2x+p3x)/3, &lt;br /&gt;    1, (p1z+p2z+p3z)/3)&lt;br /&gt;  gl.glVertex3d(p1x, p1y, p1z)&lt;br /&gt;  gl.glNormal3d((p1x+p2x+p3x)/3, &lt;br /&gt;    0, (p1z+p2z+p3z)/3)&lt;br /&gt;  gl.glVertex3d(p2x, p2y, p2z)&lt;br /&gt;  gl.glNormal3d((p1x+p2x+p3x)/3, &lt;br /&gt;    0, (p1z+p2z+p3z)/3)&lt;br /&gt;  gl.glVertex3d(p3x, p3y, p3z)&lt;br /&gt;&lt;br /&gt;  gl.glEnd()&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;GLDrawableFactory gldf = &lt;br /&gt;  GLDrawableFactory.getFactory()&lt;br /&gt;GLCapabilities glc = new GLCapabilities()&lt;br /&gt;glc.setDoubleBuffered(false)&lt;br /&gt;GLPbuffer buf = gldf.createGLPbuffer(&lt;br /&gt;  glc, null, width, height, null)&lt;br /&gt;GL gl = buf.getGL()&lt;br /&gt;&lt;br /&gt;buf.addGLEventListener(&lt;br /&gt;[ init: {&lt;br /&gt;    // 背景色&lt;br /&gt;    gl.glClearColor(&lt;br /&gt;      0xf0/0xff as Float, &lt;br /&gt;      0xf0/0xff as Float, &lt;br /&gt;      0xf0/0xff as Float,&lt;br /&gt;      1f)&lt;br /&gt;  },&lt;br /&gt;&lt;br /&gt;  display: {&lt;br /&gt;    gl.glViewport(0, 0, width, height)&lt;br /&gt;&lt;br /&gt;    // 透視投影&lt;br /&gt;    gl.glMatrixMode(GL_PROJECTION)&lt;br /&gt;    gl.glLoadIdentity()&lt;br /&gt;    float ratio = height/width as Float&lt;br /&gt;    gl.glFrustum(-1.0f, 1.0f, -ratio, ratio,&lt;br /&gt;      5.0f, 40.0f)&lt;br /&gt;&lt;br /&gt;    gl.glMatrixMode(GL_MODELVIEW)&lt;br /&gt;    gl.glLoadIdentity()&lt;br /&gt;    gl.glTranslatef(0.0f, -1.0f, -12.0f)&lt;br /&gt;&lt;br /&gt;    gl.glEnable(GL_LIGHTING)&lt;br /&gt;    gl.glEnable(GL_LIGHT0)&lt;br /&gt;    gl.glEnable(GL_COLOR_MATERIAL)&lt;br /&gt;    gl.glEnable(GL_NORMALIZE)&lt;br /&gt;    gl.glEnable(GL_AUTO_NORMAL)&lt;br /&gt;    gl.glEnable(GL_DEPTH_TEST)&lt;br /&gt;    gl.glEnable(GL_CULL_FACE)&lt;br /&gt;&lt;br /&gt;    gl.glClear(GL_COLOR_BUFFER_BIT&lt;br /&gt;      | GL_DEPTH_BUFFER_BIT )&lt;br /&gt;&lt;br /&gt;    gl.glPushMatrix()&lt;br /&gt;&lt;br /&gt;    // 面の色を設定&lt;br /&gt;    gl.glColor3f(&lt;br /&gt;      0x77/0xff as float, &lt;br /&gt;      0x99/0xff as float, &lt;br /&gt;      0xff/0xff as float&lt;br /&gt;    )&lt;br /&gt;&lt;br /&gt;    // X軸回転&lt;br /&gt;    gl.glRotatef(40.0f, 1.0f, 0.0f, 0.0f)&lt;br /&gt;    // Y軸回転&lt;br /&gt;    gl.glRotatef(20.0f, 0.0f, 1.0f, 0.0f)&lt;br /&gt;&lt;br /&gt;    // ピラミッドサイズ&lt;br /&gt;    ph = 2.0&lt;br /&gt;    ps = 3.0&lt;br /&gt;&lt;br /&gt;    drawTriangle(gl, &lt;br /&gt;      0.0, ph, 0.0,&lt;br /&gt;      ps/2.0, 0.0, -ps/2.0,&lt;br /&gt;      -ps/2.0, 0.0, -ps/2.0)&lt;br /&gt;&lt;br /&gt;    drawTriangle(gl, &lt;br /&gt;      0.0, ph, 0.0, &lt;br /&gt;      -ps/2.0, 0.0, ps/2.0,&lt;br /&gt;      ps/2.0, 0.0, ps/2.0)&lt;br /&gt;&lt;br /&gt;    drawTriangle(gl, &lt;br /&gt;      0.0, ph, 0.0, &lt;br /&gt;      -ps/2.0, 0.0, -ps/2.0,&lt;br /&gt;      -ps/2.0, 0.0, ps/2.0)&lt;br /&gt;&lt;br /&gt;    drawTriangle(gl, &lt;br /&gt;      0.0, ph, 0.0, &lt;br /&gt;      ps/2.0, 0.0, ps/2.0,&lt;br /&gt;      ps/2.0, 0.0, -ps/2.0)&lt;br /&gt;&lt;br /&gt;    gl.glBegin(GL_POLYGON)&lt;br /&gt;    gl.glNormal3d(0,-1,0)&lt;br /&gt;    gl.glVertex3d(-ps/2, 0.0, ps/2)&lt;br /&gt;    gl.glVertex3d(-ps/2, 0.0, -ps/2)&lt;br /&gt;    gl.glVertex3d(ps/2, 0.0, -ps/2)&lt;br /&gt;    gl.glVertex3d(ps/2, 0.0, ps/2)&lt;br /&gt;    gl.glEnd()&lt;br /&gt;&lt;br /&gt;    gl.glPopMatrix()&lt;br /&gt;  },&lt;br /&gt;&lt;br /&gt;  reshape: {},&lt;br /&gt;  displayChanged: {}&lt;br /&gt;] as GLEventListener&lt;br /&gt;)&lt;br /&gt;GLContext context = &lt;br /&gt;  buf.createContext(null)&lt;br /&gt;context.makeCurrent()&lt;br /&gt;buf.display()&lt;br /&gt;Screenshot.writeToFile(&lt;br /&gt;  new File("sample1313a.png"), &lt;br /&gt;  width, height, true)&lt;br /&gt;context.release()&lt;br /&gt;context.destroy()&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;出力画像(sample1313a.png)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cCx7DDoiq4w/Sp_MOgDj0AI/AAAAAAAAFyk/0wuHC2oyJRw/s1600-h/sample1313a.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 300px;" src="http://3.bp.blogspot.com/_cCx7DDoiq4w/Sp_MOgDj0AI/AAAAAAAAFyk/0wuHC2oyJRw/s320/sample1313a.png" border="0" alt="groovyとJOGLで描画したピラミッド" id="BLOGGER_PHOTO_ID_5377241029598760962" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK1.6 Update14, Groovy 1.6.3, JOGL 1.1.1a&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37626267-51210840555116824?l=kyle-in-jp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kyle-in-jp.blogspot.com/feeds/51210840555116824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37626267&amp;postID=51210840555116824' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/51210840555116824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/51210840555116824'/><link rel='alternate' type='text/html' href='http://kyle-in-jp.blogspot.com/2009/10/groovyjogl_19.html' title='groovyとJOGLでピラミッドを描画する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06107225176403410381'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_cCx7DDoiq4w/Sp_MOgDj0AI/AAAAAAAAFyk/0wuHC2oyJRw/s72-c/sample1313a.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37626267.post-8553753004458211909</id><published>2009-10-18T07:17:00.000-07:00</published><updated>2009-10-18T07:17:00.824-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='groovy-JOGL'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>groovyとJOGLで複数の直方体の山を描画する</title><content type='html'>groovyとJOGLで複数の直方体の山を描画するには、以下のコードを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;import static javax.media.opengl.GL.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;import javax.media.opengl.*;&lt;br /&gt;import com.sun.opengl.util.*;&lt;br /&gt;&lt;br /&gt;// 出力画像サイズ&lt;br /&gt;width = 300&lt;br /&gt;height = 300&lt;br /&gt;&lt;br /&gt;GLDrawableFactory gldf = &lt;br /&gt;  GLDrawableFactory.getFactory()&lt;br /&gt;GLCapabilities glc = new GLCapabilities()&lt;br /&gt;glc.setDoubleBuffered(false)&lt;br /&gt;GLPbuffer buf = gldf.createGLPbuffer(&lt;br /&gt;  glc, null, width, height, null)&lt;br /&gt;GL gl = buf.getGL()&lt;br /&gt;&lt;br /&gt;buf.addGLEventListener(&lt;br /&gt;[ init: {&lt;br /&gt;    // 背景色&lt;br /&gt;    gl.glClearColor(&lt;br /&gt;      0x58/0xff as Float, &lt;br /&gt;      0x50/0xff as Float, &lt;br /&gt;      0x50/0xff as Float,&lt;br /&gt;      1f)&lt;br /&gt;  },&lt;br /&gt;&lt;br /&gt;  display: {&lt;br /&gt;    GLUT glut = new GLUT()&lt;br /&gt;    gl.glViewport(0, 0, width, height)&lt;br /&gt;&lt;br /&gt;    // 透視投影&lt;br /&gt;    gl.glMatrixMode(GL_PROJECTION)&lt;br /&gt;    gl.glLoadIdentity()&lt;br /&gt;    float ratio = height/width as Float&lt;br /&gt;    gl.glFrustum(-1.0f, 1.0f, -ratio, ratio,&lt;br /&gt;      5.0f, 40.0f)&lt;br /&gt;&lt;br /&gt;    gl.glMatrixMode(GL_MODELVIEW)&lt;br /&gt;    gl.glLoadIdentity()&lt;br /&gt;    gl.glTranslatef(-3.0f, -1.5f, -7.0f)&lt;br /&gt;&lt;br /&gt;    gl.glEnable(GL_LIGHTING)&lt;br /&gt;    gl.glEnable(GL_LIGHT0)&lt;br /&gt;    gl.glEnable(GL_COLOR_MATERIAL)&lt;br /&gt;    gl.glEnable(GL_NORMALIZE)&lt;br /&gt;    gl.glEnable(GL_DEPTH_TEST)&lt;br /&gt;    gl.glEnable(GL_CULL_FACE)&lt;br /&gt;&lt;br /&gt;    // フォグの設定&lt;br /&gt;    fog=[0.2f,0.2f,0.3f,1.0f]&lt;br /&gt;    gl.glFogfv(GL_FOG_COLOR,fog as float[], 0)&lt;br /&gt;    gl.glFogi(GL_FOG_MODE,GL.GL_EXP)&lt;br /&gt;    gl.glFogf(GL_FOG_DENSITY, 0.04f)&lt;br /&gt;    gl.glFogf(GL_FOG_START, 0.0f)&lt;br /&gt;    gl.glFogf(GL_FOG_END,20.0f)&lt;br /&gt;    gl.glEnable(GL_FOG)&lt;br /&gt;&lt;br /&gt;    // 光源の位置&lt;br /&gt;    l1pos = [-5.0f, 10.0f, 0.0f, 1.0f]&lt;br /&gt;    gl.glLightfv(GL_LIGHT0, GL_POSITION, l1pos as float[], 0)&lt;br /&gt;    // 環境光&lt;br /&gt;    l1amb = [0.1f, 0.1f, 0.1f, 1.0f]&lt;br /&gt;    gl.glLightfv(GL_LIGHT0, GL_AMBIENT, l1amb as float[], 0)&lt;br /&gt;    // 拡散光&lt;br /&gt;    l1dif = [0.9f, 0.9f, 0.9f, 1.0f]&lt;br /&gt;    gl.glLightfv(GL_LIGHT0, GL_DIFFUSE, l1dif as float[], 0)&lt;br /&gt;    // 鏡面光&lt;br /&gt;    l1spe = [1.0f, 1.0f, 1.0f, 1.0f]&lt;br /&gt;    gl.glLightfv(GL_LIGHT0, GL_SPECULAR, l1spe as float[], 0)&lt;br /&gt;&lt;br /&gt;    gl.glClear(GL_COLOR_BUFFER_BIT&lt;br /&gt;      | GL_DEPTH_BUFFER_BIT )&lt;br /&gt;&lt;br /&gt;    gl.glPushMatrix()&lt;br /&gt;&lt;br /&gt;    // 面の色を設定&lt;br /&gt;    gl.glColor3f(&lt;br /&gt;      0xff/0xff as float, &lt;br /&gt;      0xff/0xff as float, &lt;br /&gt;      0xff/0xff as float&lt;br /&gt;    )&lt;br /&gt;&lt;br /&gt;    // X軸回転&lt;br /&gt;    gl.glRotatef(15.0f, 1.0f, 0.0f, 0.0f)&lt;br /&gt;    // Y軸回転&lt;br /&gt;    gl.glRotatef(30.0f, 0.0f, 1.0f, 0.0f)&lt;br /&gt;&lt;br /&gt;    cs = 0.25f&lt;br /&gt;    gs = 0.3f&lt;br /&gt;    for(lz in -10..60){&lt;br /&gt;      for(lx in -10..100){&lt;br /&gt;        gl.glPushMatrix()&lt;br /&gt;        de = (gs*lx-5)*(gs*lx-5)+(gs*lz-3)*(gs*lz-3)+9&lt;br /&gt;        ch = 27/(de==0f?0.001f:de)&lt;br /&gt;        gl.glScalef(1f, ch as float, 1f)&lt;br /&gt;        gl.glTranslatef(lx*gs as float, &lt;br /&gt;          cs*ch/2 as float, -1*lz*gs as float)&lt;br /&gt;        glut.glutSolidCube(cs)&lt;br /&gt;        gl.glPopMatrix()&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    gl.glPopMatrix()&lt;br /&gt;  },&lt;br /&gt;&lt;br /&gt;  reshape: {},&lt;br /&gt;  displayChanged: {}&lt;br /&gt;] as GLEventListener&lt;br /&gt;)&lt;br /&gt;GLContext context = &lt;br /&gt;  buf.createContext(null)&lt;br /&gt;context.makeCurrent()&lt;br /&gt;buf.display()&lt;br /&gt;Screenshot.writeToFile(&lt;br /&gt;  new File("sample1312a.png"), &lt;br /&gt;  width, height, true)&lt;br /&gt;context.release()&lt;br /&gt;context.destroy()&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;出力画像(sample1312a.png)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cCx7DDoiq4w/Sp_Le0B0r4I/AAAAAAAAFyc/Y0tS4UDgRxg/s1600-h/sample1312a.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 300px;" src="http://1.bp.blogspot.com/_cCx7DDoiq4w/Sp_Le0B0r4I/AAAAAAAAFyc/Y0tS4UDgRxg/s320/sample1312a.png" border="0" alt="groovyとJOGLで描画した直方体の山" id="BLOGGER_PHOTO_ID_5377240210326466434" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK1.6 Update14, Groovy 1.6.3, JOGL 1.1.1a&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37626267-8553753004458211909?l=kyle-in-jp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kyle-in-jp.blogspot.com/feeds/8553753004458211909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37626267&amp;postID=8553753004458211909' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/8553753004458211909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/8553753004458211909'/><link rel='alternate' type='text/html' href='http://kyle-in-jp.blogspot.com/2009/10/groovyjogl_18.html' title='groovyとJOGLで複数の直方体の山を描画する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06107225176403410381'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_cCx7DDoiq4w/Sp_Le0B0r4I/AAAAAAAAFyc/Y0tS4UDgRxg/s72-c/sample1312a.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37626267.post-3666927901458137763</id><published>2009-10-17T07:04:00.000-07:00</published><updated>2009-10-17T07:04:00.319-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='groovy-JOGL'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>groovyとJOGLで複数の直方体をスプリング状に配置する</title><content type='html'>groovyとJOGLで複数の直方体をスプリング状に配置するには、以下のコードを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;import static javax.media.opengl.GL.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;import javax.media.opengl.*;&lt;br /&gt;import com.sun.opengl.util.*;&lt;br /&gt;&lt;br /&gt;// 出力画像サイズ&lt;br /&gt;width = 300&lt;br /&gt;height = 300&lt;br /&gt;&lt;br /&gt;GLDrawableFactory gldf = &lt;br /&gt;  GLDrawableFactory.getFactory()&lt;br /&gt;GLCapabilities glc = new GLCapabilities()&lt;br /&gt;glc.setDoubleBuffered(false)&lt;br /&gt;GLPbuffer buf = gldf.createGLPbuffer(&lt;br /&gt;  glc, null, width, height, null)&lt;br /&gt;GL gl = buf.getGL()&lt;br /&gt;&lt;br /&gt;buf.addGLEventListener(&lt;br /&gt;[ init: {&lt;br /&gt;    // 背景色&lt;br /&gt;    gl.glClearColor(&lt;br /&gt;      0xf0/0xff as Float, &lt;br /&gt;      0xf0/0xff as Float, &lt;br /&gt;      0xf0/0xff as Float,&lt;br /&gt;      1f)&lt;br /&gt;  },&lt;br /&gt;&lt;br /&gt;  display: {&lt;br /&gt;    GLUT glut = new GLUT()&lt;br /&gt;    gl.glViewport(0, 0, width, height)&lt;br /&gt;&lt;br /&gt;    // 透視投影&lt;br /&gt;    gl.glMatrixMode(GL_PROJECTION)&lt;br /&gt;    gl.glLoadIdentity()&lt;br /&gt;    float ratio = height/width as Float&lt;br /&gt;    gl.glFrustum(-1.0f, 1.0f, -ratio, ratio,&lt;br /&gt;      5.0f, 80.0f)&lt;br /&gt;&lt;br /&gt;    gl.glMatrixMode(GL_MODELVIEW)&lt;br /&gt;    gl.glLoadIdentity()&lt;br /&gt;    gl.glTranslatef(0.0f, -0.5f, -30.0f)&lt;br /&gt;&lt;br /&gt;    gl.glEnable(GL_LIGHTING)&lt;br /&gt;    gl.glEnable(GL_LIGHT0)&lt;br /&gt;    gl.glEnable(GL_COLOR_MATERIAL)&lt;br /&gt;    gl.glEnable(GL_NORMALIZE)&lt;br /&gt;    gl.glEnable(GL_DEPTH_TEST)&lt;br /&gt;    gl.glEnable(GL_CULL_FACE)&lt;br /&gt;&lt;br /&gt;    gl.glClear(GL_COLOR_BUFFER_BIT&lt;br /&gt;      | GL_DEPTH_BUFFER_BIT )&lt;br /&gt;&lt;br /&gt;    gl.glPushMatrix()&lt;br /&gt;&lt;br /&gt;    // 面の色を設定&lt;br /&gt;    gl.glColor3f(&lt;br /&gt;      0x77/0xff as float, &lt;br /&gt;      0x99/0xff as float, &lt;br /&gt;      0xff/0xff as float&lt;br /&gt;    )&lt;br /&gt;&lt;br /&gt;    // X軸回転&lt;br /&gt;    gl.glRotatef(15.0f, 1.0f, 0.0f, 0.0f)&lt;br /&gt;    // Y軸回転&lt;br /&gt;    gl.glRotatef(70.0f, 0.0f, 1.0f, 0.0f)&lt;br /&gt;&lt;br /&gt;    cs = 0.5f&lt;br /&gt;    gs = 0.05f&lt;br /&gt;    for(lx in -100..800-1){&lt;br /&gt;      gl.glPushMatrix()&lt;br /&gt;      gl.glRotatef(5f*lx as float, 1.0f, 0.0f, 0.0f)&lt;br /&gt;      gl.glTranslatef(gs*lx as float, 2f, 0f)&lt;br /&gt;      gl.glScalef(1f,1f,0.2f)&lt;br /&gt;      glut.glutSolidCube(cs)&lt;br /&gt;      gl.glPopMatrix()&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    gl.glPopMatrix()&lt;br /&gt;  },&lt;br /&gt;&lt;br /&gt;  reshape: {},&lt;br /&gt;  displayChanged: {}&lt;br /&gt;] as GLEventListener&lt;br /&gt;)&lt;br /&gt;GLContext context = &lt;br /&gt;  buf.createContext(null)&lt;br /&gt;context.makeCurrent()&lt;br /&gt;buf.display()&lt;br /&gt;Screenshot.writeToFile(&lt;br /&gt;  new File("sample1311a.png"), &lt;br /&gt;  width, height, true)&lt;br /&gt;context.release()&lt;br /&gt;context.destroy()&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;出力画像(sample1311a.png)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cCx7DDoiq4w/Sp3881CB8NI/AAAAAAAAFyU/b1AXiXlWecc/s1600-h/sample1311a.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 300px;" src="http://4.bp.blogspot.com/_cCx7DDoiq4w/Sp3881CB8NI/AAAAAAAAFyU/b1AXiXlWecc/s320/sample1311a.png" border="0" alt="groovyとJOGLで複数の直方体をスプリング状に配置した画像" id="BLOGGER_PHOTO_ID_5376731652108185810" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK1.6 Update14, Groovy 1.6.3, JOGL 1.1.1a&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37626267-3666927901458137763?l=kyle-in-jp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kyle-in-jp.blogspot.com/feeds/3666927901458137763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37626267&amp;postID=3666927901458137763' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/3666927901458137763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/3666927901458137763'/><link rel='alternate' type='text/html' href='http://kyle-in-jp.blogspot.com/2009/10/groovyjogl_17.html' title='groovyとJOGLで複数の直方体をスプリング状に配置する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06107225176403410381'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cCx7DDoiq4w/Sp3881CB8NI/AAAAAAAAFyU/b1AXiXlWecc/s72-c/sample1311a.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37626267.post-7465736736154339278</id><published>2009-10-16T07:58:00.000-07:00</published><updated>2009-10-16T07:58:00.688-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='groovy-JOGL'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>groovyとJOGLでスポットライトを使用する</title><content type='html'>groovyとJOGLでスポットライトを使用するには、以下のコードを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;import static javax.media.opengl.GL.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;import javax.media.opengl.*;&lt;br /&gt;import com.sun.opengl.util.*;&lt;br /&gt;&lt;br /&gt;// 出力画像サイズ&lt;br /&gt;width = 300&lt;br /&gt;height = 300&lt;br /&gt;&lt;br /&gt;GLDrawableFactory gldf = &lt;br /&gt;  GLDrawableFactory.getFactory()&lt;br /&gt;GLCapabilities glc = new GLCapabilities()&lt;br /&gt;glc.setDoubleBuffered(false)&lt;br /&gt;GLPbuffer buf = gldf.createGLPbuffer(&lt;br /&gt;  glc, null, width, height, null)&lt;br /&gt;GL gl = buf.getGL()&lt;br /&gt;&lt;br /&gt;buf.addGLEventListener(&lt;br /&gt;[ init: {&lt;br /&gt;    // 背景色&lt;br /&gt;    gl.glClearColor(&lt;br /&gt;      0x58/0xff as Float, &lt;br /&gt;      0x50/0xff as Float, &lt;br /&gt;      0x50/0xff as Float,&lt;br /&gt;      1f)&lt;br /&gt;  },&lt;br /&gt;&lt;br /&gt;  display: {&lt;br /&gt;    GLUT glut = new GLUT()&lt;br /&gt;    gl.glViewport(0, 0, width, height)&lt;br /&gt;&lt;br /&gt;    // 透視投影&lt;br /&gt;    gl.glMatrixMode(GL_PROJECTION)&lt;br /&gt;    gl.glLoadIdentity()&lt;br /&gt;    float ratio = height/width as Float&lt;br /&gt;    gl.glFrustum(-1.0f, 1.0f, -ratio, ratio,&lt;br /&gt;      5.0f, 40.0f)&lt;br /&gt;&lt;br /&gt;    gl.glMatrixMode(GL_MODELVIEW)&lt;br /&gt;    gl.glLoadIdentity()&lt;br /&gt;    gl.glTranslatef(-3.0f, -1.5f, -7.0f)&lt;br /&gt;&lt;br /&gt;    gl.glEnable(GL_LIGHTING)&lt;br /&gt;    gl.glEnable(GL_LIGHT0)&lt;br /&gt;    gl.glEnable(GL_LIGHT1)&lt;br /&gt;    gl.glEnable(GL_COLOR_MATERIAL)&lt;br /&gt;    gl.glEnable(GL_NORMALIZE)&lt;br /&gt;    gl.glEnable(GL_DEPTH_TEST)&lt;br /&gt;    gl.glEnable(GL_CULL_FACE)&lt;br /&gt;&lt;br /&gt;    // フォグの設定&lt;br /&gt;    fog=[0.2f,0.2f,0.3f,1.0f]&lt;br /&gt;    gl.glFogfv(GL_FOG_COLOR,fog as float[], 0)&lt;br /&gt;    gl.glFogi(GL_FOG_MODE,GL.GL_EXP)&lt;br /&gt;    gl.glFogf(GL_FOG_DENSITY, 0.04f)&lt;br /&gt;    gl.glFogf(GL_FOG_START, 0.0f)&lt;br /&gt;    gl.glFogf(GL_FOG_END,20.0f)&lt;br /&gt;    gl.glEnable(GL_FOG)&lt;br /&gt;&lt;br /&gt;    // 光源の位置&lt;br /&gt;    l0pos = [-5.0f, 5.0f, 0.0f, 1.0f]&lt;br /&gt;    gl.glLightfv(GL_LIGHT0, GL_POSITION, l0pos as float[], 0)&lt;br /&gt;    // 環境光&lt;br /&gt;    l0amb = [0.1f, 0.1f, 0.1f, 1.0f]&lt;br /&gt;    gl.glLightfv(GL_LIGHT0, GL_AMBIENT, l0amb as float[], 0)&lt;br /&gt;    // 拡散光&lt;br /&gt;    l0dif = [0.2f, 0.2f, 0.2f, 1.0f]&lt;br /&gt;    gl.glLightfv(GL_LIGHT0, GL_DIFFUSE, l0dif as float[], 0)&lt;br /&gt;    // 鏡面光&lt;br /&gt;    l0spe = [0.3f, 0.3f, 0.3f, 1.0f]&lt;br /&gt;    gl.glLightfv(GL_LIGHT0, GL_SPECULAR, l0spe as float[], 0)&lt;br /&gt;&lt;br /&gt;    // 光源の位置&lt;br /&gt;    l1pos = [3.0f, 4.0f, -5.0f, 1.0f]&lt;br /&gt;    gl.glLightfv(GL_LIGHT1, GL_POSITION, l1pos as float[], 0)&lt;br /&gt;    // 環境光&lt;br /&gt;    l1amb = [0.2f, 0.2f, 0.1f, 1.0f]&lt;br /&gt;    gl.glLightfv(GL_LIGHT1, GL_AMBIENT, l1amb as float[], 0)&lt;br /&gt;    // 拡散光&lt;br /&gt;    l1dif = [0.5f, 0.5f, 0.3f, 1.0f]&lt;br /&gt;    gl.glLightfv(GL_LIGHT1, GL_DIFFUSE, l1dif as float[], 0)&lt;br /&gt;    // 鏡面光&lt;br /&gt;    l1spe = [0.8f, 0.8f, 0.2f, 1.0f]&lt;br /&gt;    gl.glLightfv(GL_LIGHT1, GL_SPECULAR, l1spe as float[], 0)&lt;br /&gt;    // スポットライト&lt;br /&gt;    l1dir = [0.1f, -1.0f, 0.0f]&lt;br /&gt;    gl.glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION, l1dir as float[], 0)&lt;br /&gt;    gl.glLightf(GL_LIGHT1, GL_SPOT_CUTOFF, 30.0f)&lt;br /&gt;    gl.glLightf(GL_LIGHT1, GL_SPOT_EXPONENT, 5.0f)&lt;br /&gt;&lt;br /&gt;    gl.glClear(GL_COLOR_BUFFER_BIT&lt;br /&gt;      | GL_DEPTH_BUFFER_BIT )&lt;br /&gt;&lt;br /&gt;    gl.glPushMatrix()&lt;br /&gt;&lt;br /&gt;    // 面の色を設定&lt;br /&gt;    gl.glColor3f(&lt;br /&gt;      0xff/0xff as float, &lt;br /&gt;      0xff/0xff as float, &lt;br /&gt;      0xff/0xff as float&lt;br /&gt;    )&lt;br /&gt;&lt;br /&gt;    // X軸回転&lt;br /&gt;    gl.glRotatef(15.0f, 1.0f, 0.0f, 0.0f)&lt;br /&gt;    // Y軸回転&lt;br /&gt;    gl.glRotatef(30.0f, 0.0f, 1.0f, 0.0f)&lt;br /&gt;&lt;br /&gt;    cs = 0.4f&lt;br /&gt;    gs = 0.5f&lt;br /&gt;    xs = 100&lt;br /&gt;    zs = 100&lt;br /&gt;    for(lz in -3..zs-1){&lt;br /&gt;      for(lx in -3..xs-1){&lt;br /&gt;        gl.glPushMatrix()&lt;br /&gt;        ch = cs * (float)(Math.random()*1.0) as float&lt;br /&gt;        gl.glScalef(1f,ch, 1f)&lt;br /&gt;        gl.glTranslatef(lx*gs as float, &lt;br /&gt;          -(cs-ch)/2 as float, -1*lz*gs as float)&lt;br /&gt;        glut.glutSolidCube(cs)&lt;br /&gt;        gl.glPopMatrix()&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    gl.glPopMatrix()&lt;br /&gt;  },&lt;br /&gt;&lt;br /&gt;  reshape: {},&lt;br /&gt;  displayChanged: {}&lt;br /&gt;] as GLEventListener&lt;br /&gt;)&lt;br /&gt;GLContext context = &lt;br /&gt;  buf.createContext(null)&lt;br /&gt;context.makeCurrent()&lt;br /&gt;buf.display()&lt;br /&gt;Screenshot.writeToFile(&lt;br /&gt;  new File("sample1310a.png"), &lt;br /&gt;  width, height, true)&lt;br /&gt;context.release()&lt;br /&gt;context.destroy()&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;出力画像(sample1310a.png)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cCx7DDoiq4w/Sp37nw5mU9I/AAAAAAAAFyM/xn0En4NKeu4/s1600-h/sample1310a.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 300px;" src="http://1.bp.blogspot.com/_cCx7DDoiq4w/Sp37nw5mU9I/AAAAAAAAFyM/xn0En4NKeu4/s320/sample1310a.png" border="0" alt="groovyとJOGLで描画したスポットライトを使用した画像" id="BLOGGER_PHOTO_ID_5376730190710199250" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK1.6 Update14, Groovy 1.6.3, JOGL 1.1.1a&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37626267-7465736736154339278?l=kyle-in-jp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kyle-in-jp.blogspot.com/feeds/7465736736154339278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37626267&amp;postID=7465736736154339278' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/7465736736154339278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/7465736736154339278'/><link rel='alternate' type='text/html' href='http://kyle-in-jp.blogspot.com/2009/10/groovyjogl_16.html' title='groovyとJOGLでスポットライトを使用する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06107225176403410381'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_cCx7DDoiq4w/Sp37nw5mU9I/AAAAAAAAFyM/xn0En4NKeu4/s72-c/sample1310a.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37626267.post-4874503259340346740</id><published>2009-10-15T07:55:00.000-07:00</published><updated>2009-10-15T07:55:00.503-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='groovy-JOGL'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>groovyとJOGLで球状に配置された立方体を描画する</title><content type='html'>groovyとJOGLで球状に配置された立方体を描画するには、以下のコードを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;import static javax.media.opengl.GL.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;import javax.media.opengl.*;&lt;br /&gt;import com.sun.opengl.util.*;&lt;br /&gt;&lt;br /&gt;// 出力画像サイズ&lt;br /&gt;width = 300&lt;br /&gt;height = 300&lt;br /&gt;&lt;br /&gt;GLDrawableFactory gldf = &lt;br /&gt;  GLDrawableFactory.getFactory()&lt;br /&gt;GLCapabilities glc = new GLCapabilities()&lt;br /&gt;glc.setDoubleBuffered(false)&lt;br /&gt;GLPbuffer buf = gldf.createGLPbuffer(&lt;br /&gt;  glc, null, width, height, null)&lt;br /&gt;GL gl = buf.getGL()&lt;br /&gt;&lt;br /&gt;buf.addGLEventListener(&lt;br /&gt;[ init: {&lt;br /&gt;    // 背景色&lt;br /&gt;    gl.glClearColor(&lt;br /&gt;      0xf0/0xff as Float, &lt;br /&gt;      0xf0/0xff as Float, &lt;br /&gt;      0xf0/0xff as Float,&lt;br /&gt;      1f)&lt;br /&gt;  },&lt;br /&gt;&lt;br /&gt;  display: {&lt;br /&gt;    GLUT glut = new GLUT()&lt;br /&gt;    gl.glViewport(0, 0, width, height)&lt;br /&gt;&lt;br /&gt;    // 透視投影&lt;br /&gt;    gl.glMatrixMode(GL_PROJECTION)&lt;br /&gt;    gl.glLoadIdentity()&lt;br /&gt;    float ratio = height/width as Float&lt;br /&gt;    gl.glFrustum(-1.0f, 1.0f, -ratio, ratio,&lt;br /&gt;      5.0f, 40.0f)&lt;br /&gt;&lt;br /&gt;    gl.glMatrixMode(GL_MODELVIEW)&lt;br /&gt;    gl.glLoadIdentity()&lt;br /&gt;    gl.glTranslatef(0.0f, 0.0f, -22.0f)&lt;br /&gt;&lt;br /&gt;    gl.glEnable(GL_LIGHTING)&lt;br /&gt;    gl.glEnable(GL_LIGHT0)&lt;br /&gt;    gl.glEnable(GL_COLOR_MATERIAL)&lt;br /&gt;    gl.glEnable(GL_NORMALIZE)&lt;br /&gt;    gl.glEnable(GL_DEPTH_TEST)&lt;br /&gt;    gl.glEnable(GL_CULL_FACE)&lt;br /&gt;&lt;br /&gt;    gl.glClear(GL_COLOR_BUFFER_BIT&lt;br /&gt;      | GL_DEPTH_BUFFER_BIT )&lt;br /&gt;&lt;br /&gt;    gl.glPushMatrix()&lt;br /&gt;&lt;br /&gt;    // 面の色を設定&lt;br /&gt;    gl.glColor3f(&lt;br /&gt;      0x77/0xff as float, &lt;br /&gt;      0x99/0xff as float, &lt;br /&gt;      0xff/0xff as float&lt;br /&gt;    )&lt;br /&gt;&lt;br /&gt;    // X軸回転&lt;br /&gt;    gl.glRotatef(15.0f, 1.0f, 0.0f, 0.0f)&lt;br /&gt;    // Y軸回転&lt;br /&gt;    gl.glRotatef(30.0f, 0.0f, 1.0f, 0.0f)&lt;br /&gt;    // Z軸回転&lt;br /&gt;    gl.glRotatef(60.0f, 0.0f, 0.0f, 1.0f)&lt;br /&gt;&lt;br /&gt;    slices = 32&lt;br /&gt;    rad = 3f&lt;br /&gt;    cs = 0.25f&lt;br /&gt;&lt;br /&gt;    for(ly in 0..slices-1){&lt;br /&gt;      for(lz in 0..slices-1){&lt;br /&gt;        gl.glPushMatrix()&lt;br /&gt;        // Y軸回転&lt;br /&gt;        gl.glRotatef(360f/slices*ly as float, &lt;br /&gt;          0.0f, 1.0f, 0.0f)&lt;br /&gt;        // Z軸回転&lt;br /&gt;        gl.glRotatef(360f/slices*lz as float, &lt;br /&gt;          0.0f, 0.0f, 1.0f)&lt;br /&gt;        gl.glTranslatef(0f, rad, 0f)&lt;br /&gt;&lt;br /&gt;        glut.glutSolidCube(cs)&lt;br /&gt;        gl.glPopMatrix()&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    gl.glPopMatrix()&lt;br /&gt;  },&lt;br /&gt;&lt;br /&gt;  reshape: {},&lt;br /&gt;  displayChanged: {}&lt;br /&gt;] as GLEventListener&lt;br /&gt;)&lt;br /&gt;GLContext context = &lt;br /&gt;  buf.createContext(null)&lt;br /&gt;context.makeCurrent()&lt;br /&gt;buf.display()&lt;br /&gt;Screenshot.writeToFile(&lt;br /&gt;  new File("sample1309a.png"), &lt;br /&gt;  width, height, true)&lt;br /&gt;context.release()&lt;br /&gt;context.destroy()&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;出力画像(sample1309a.png)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cCx7DDoiq4w/Sp360nqUEII/AAAAAAAAFyE/ntCDA6fH-xI/s1600-h/sample1309a.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 300px;" src="http://2.bp.blogspot.com/_cCx7DDoiq4w/Sp360nqUEII/AAAAAAAAFyE/ntCDA6fH-xI/s320/sample1309a.png" border="0" alt="groovyとJOGLで描画した球状に配置した立方体" id="BLOGGER_PHOTO_ID_5376729312056840322" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK1.6 Update14, Groovy 1.6.3, JOGL 1.1.1a&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37626267-4874503259340346740?l=kyle-in-jp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kyle-in-jp.blogspot.com/feeds/4874503259340346740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37626267&amp;postID=4874503259340346740' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/4874503259340346740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/4874503259340346740'/><link rel='alternate' type='text/html' href='http://kyle-in-jp.blogspot.com/2009/10/groovyjogl_15.html' title='groovyとJOGLで球状に配置された立方体を描画する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06107225176403410381'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cCx7DDoiq4w/Sp360nqUEII/AAAAAAAAFyE/ntCDA6fH-xI/s72-c/sample1309a.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37626267.post-2188694707109957336</id><published>2009-10-14T08:38:00.000-07:00</published><updated>2009-10-14T08:38:00.349-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='groovy-JOGL'/><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>groovyとJOGLで複数の直方体を凸凹に配置する</title><content type='html'>groovyとJOGLで複数の直方体を凸凹に配置するには、以下のコードを実行します。&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;import static javax.media.opengl.GL.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;import javax.media.opengl.*;&lt;br /&gt;import com.sun.opengl.util.*;&lt;br /&gt;&lt;br /&gt;// 出力画像サイズ&lt;br /&gt;width = 300&lt;br /&gt;height = 300&lt;br /&gt;&lt;br /&gt;GLDrawableFactory gldf = &lt;br /&gt;  GLDrawableFactory.getFactory()&lt;br /&gt;GLCapabilities glc = new GLCapabilities()&lt;br /&gt;glc.setDoubleBuffered(false)&lt;br /&gt;GLPbuffer buf = gldf.createGLPbuffer(&lt;br /&gt;  glc, null, width, height, null)&lt;br /&gt;GL gl = buf.getGL()&lt;br /&gt;&lt;br /&gt;buf.addGLEventListener(&lt;br /&gt;[ init: {&lt;br /&gt;    // 背景色&lt;br /&gt;    gl.glClearColor(&lt;br /&gt;      0x58/0xff as Float, &lt;br /&gt;      0x50/0xff as Float, &lt;br /&gt;      0x50/0xff as Float,&lt;br /&gt;      1f)&lt;br /&gt;  },&lt;br /&gt;&lt;br /&gt;  display: {&lt;br /&gt;    GLUT glut = new GLUT()&lt;br /&gt;    gl.glViewport(0, 0, width, height)&lt;br /&gt;&lt;br /&gt;    // 透視投影&lt;br /&gt;    gl.glMatrixMode(GL_PROJECTION)&lt;br /&gt;    gl.glLoadIdentity()&lt;br /&gt;    float ratio = height/width as Float&lt;br /&gt;    gl.glFrustum(-1.0f, 1.0f, -ratio, ratio,&lt;br /&gt;      5.0f, 40.0f)&lt;br /&gt;&lt;br /&gt;    gl.glMatrixMode(GL_MODELVIEW)&lt;br /&gt;    gl.glLoadIdentity()&lt;br /&gt;    gl.glTranslatef(-3.0f, -1.5f, -7.0f)&lt;br /&gt;&lt;br /&gt;    gl.glEnable(GL_LIGHTING)&lt;br /&gt;    gl.glEnable(GL_LIGHT0)&lt;br /&gt;    gl.glEnable(GL_COLOR_MATERIAL)&lt;br /&gt;    gl.glEnable(GL_NORMALIZE)&lt;br /&gt;    gl.glEnable(GL_DEPTH_TEST)&lt;br /&gt;    gl.glEnable(GL_CULL_FACE)&lt;br /&gt;&lt;br /&gt;    // フォグの設定&lt;br /&gt;    fog=[0.1f,0.1f,0.2f,1.0f]&lt;br /&gt;    gl.glFogfv(GL_FOG_COLOR,fog as float[], 0)&lt;br /&gt;    gl.glFogi(GL_FOG_MODE,GL.GL_EXP)&lt;br /&gt;    gl.glFogf(GL_FOG_DENSITY, 0.08f)&lt;br /&gt;    gl.glFogf(GL_FOG_START, 0.0f)&lt;br /&gt;    gl.glFogf(GL_FOG_END,20.0f)&lt;br /&gt;    gl.glEnable(GL_FOG)&lt;br /&gt;&lt;br /&gt;    // 光源の位置&lt;br /&gt;    l1pos = [-5.0f, 5.0f, 0.0f, 1.0f]&lt;br /&gt;    gl.glLightfv(GL_LIGHT0, GL_POSITION, l1pos as float[], 0)&lt;br /&gt;    // 環境光&lt;br /&gt;    l1amb = [0.2f, 0.2f, 0.1f, 1.0f]&lt;br /&gt;    gl.glLightfv(GL_LIGHT0, GL_AMBIENT, l1amb as float[], 0)&lt;br /&gt;    // 拡散光&lt;br /&gt;    l1dif = [0.9f, 0.9f, 0.9f, 1.0f]&lt;br /&gt;    gl.glLightfv(GL_LIGHT0, GL_DIFFUSE, l1dif as float[], 0)&lt;br /&gt;    // 鏡面光&lt;br /&gt;    l1spe = [0.9f, 0.9f, 0.9f, 1.0f]&lt;br /&gt;    gl.glLightfv(GL_LIGHT0, GL_SPECULAR, l1spe as float[], 0)&lt;br /&gt;&lt;br /&gt;    gl.glClear(GL_COLOR_BUFFER_BIT&lt;br /&gt;      | GL_DEPTH_BUFFER_BIT )&lt;br /&gt;&lt;br /&gt;    gl.glPushMatrix()&lt;br /&gt;&lt;br /&gt;    // 面の色を設定&lt;br /&gt;    gl.glColor3f(&lt;br /&gt;      0xff/0xff as float, &lt;br /&gt;      0xff/0xff as float, &lt;br /&gt;      0xff/0xff as float&lt;br /&gt;    )&lt;br /&gt;&lt;br /&gt;    // X軸回転&lt;br /&gt;    gl.glRotatef(15.0f, 1.0f, 0.0f, 0.0f)&lt;br /&gt;    // Y軸回転&lt;br /&gt;    gl.glRotatef(30.0f, 0.0f, 1.0f, 0.0f)&lt;br /&gt;&lt;br /&gt;    cs = 0.5f&lt;br /&gt;    gs = 0.6f&lt;br /&gt;    xs = 50&lt;br /&gt;    zs = 50&lt;br /&gt;    for(lz in -3..zs-1){&lt;br /&gt;      for(lx in -3..xs-1){&lt;br /&gt;        gl.glPushMatrix()&lt;br /&gt;        ch = cs * (float)(Math.random()*1.0) as float&lt;br /&gt;        gl.glScalef(1f,ch, 1f)&lt;br /&gt;        gl.glTranslatef(lx*gs as float, &lt;br /&gt;          -(cs-ch)/2 as float, -1*lz*gs as float)&lt;br /&gt;        glut.glutSolidCube(cs)&lt;br /&gt;        gl.glPopMatrix()&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    gl.glPopMatrix()&lt;br /&gt;  },&lt;br /&gt;&lt;br /&gt;  reshape: {},&lt;br /&gt;  displayChanged: {}&lt;br /&gt;] as GLEventListener&lt;br /&gt;)&lt;br /&gt;GLContext context = &lt;br /&gt;  buf.createContext(null)&lt;br /&gt;context.makeCurrent()&lt;br /&gt;buf.display()&lt;br /&gt;Screenshot.writeToFile(&lt;br /&gt;  new File("sample1308a.png"), &lt;br /&gt;  width, height, true)&lt;br /&gt;context.release()&lt;br /&gt;context.destroy()&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;出力画像(sample1308a.png)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cCx7DDoiq4w/Spk9akZHVmI/AAAAAAAAFxc/GB-6SNP7XSY/s1600-h/sample1308a.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 300px;" src="http://1.bp.blogspot.com/_cCx7DDoiq4w/Spk9akZHVmI/AAAAAAAAFxc/GB-6SNP7XSY/s320/sample1308a.png" border="0" alt="groovyとJOGLで複数の直方体を凸凹に配置した画像" id="BLOGGER_PHOTO_ID_5375395156898305634" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;動作環境&lt;br /&gt;JDK1.6 Update14, Groovy 1.6.3, JOGL 1.1.1a&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37626267-2188694707109957336?l=kyle-in-jp.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kyle-in-jp.blogspot.com/feeds/2188694707109957336/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=37626267&amp;postID=2188694707109957336' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/2188694707109957336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37626267/posts/default/2188694707109957336'/><link rel='alternate' type='text/html' href='http://kyle-in-jp.blogspot.com/2009/10/groovyjogl_14.html' title='groovyとJOGLで複数の直方体を凸凹に配置する'/><author><name>kyle</name><uri>http://www.blogger.com/profile/04552840571621538070</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06107225176403410381'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_cCx7DDoiq4w/Spk9akZHVmI/AAAAAAAAFxc/GB-6SNP7XSY/s72-c/sample1308a.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>