[Processing]3d始めました。

Posted under processing by uechoco on 火曜日 26 2月 2008 at 00 : 00 : 00

いよいよProcessingの3Dに入りました。こないだまで教科書だった「Built with Processing」は入門書なので、3Dはほとんど載っていないので、これからはサンプルとネット上の数少ない資料で頑張るしかないです。

手始めに球体を衛星に見立てて、原点の周りを回らせてみました。真新しい命令といえばshpere()とcamara()くらいなので、3Dも(現時点では)それほど難しくはないですね!

Processing:
  1. float angle;
  2. float omega = 5;
  3. float radius = 100;
  4.  
  5.   size (400, 400, P3D);
  6.   colorMode(RGB, 100);
  7.   background(90);
  8.   frameRate(15);
  9.   angle = 0;
  10. }
  11.  
  12.   lights();
  13.   background(90);
  14.   // cameraPos, targetPos, upVector
  15.   camera(-100, -50, 250, 0, 0, 0, 0, 1, 0);
  16.  
  17.   drawAxis(100);
  18.  
  19.   noStroke();
  20.   fill(100);
  21.   float x = cos(radians(angle)) * radius;
  22.   float y = -x;
  23.   float z = sin(radians(angle)) * radius;
  24.   translate(x, y, z);
  25.   sphere(10);
  26.   popMatrix();
  27.   angle = (angle + omega) % 360;
  28. }
  29.  
  30. void line(float x1, float y1, float z1, float x2, float y2, float z2) {
  31.   beginShape(LINES);
  32.   vertex(x1, y1, z1);
  33.   vertex(x2, y2, z2);
  34.   endShape();
  35. }
  36.  
  37. void drawAxis(float length) {
  38.   stroke(100, 0, 0);
  39.   line(0, 0, 0, length, 0, 0);
  40.   stroke(0, 100, 0);
  41.   line(0, 0, 0, 0, -length, 0);
  42.   stroke(0, 0, 100);
  43.   line(0, 0, 0, 0, 0, -length);
  44. }

※衛星の静止画

processing_satelliteSphere.jpg

※衛星軌道

processing_satelliteSphereOrbit.jpg

3Dデビューはあっさりですね。この調子でがんばります!


[Processing]ソースコードのsvnレポジトリ

Posted under processing by uechoco on 月曜日 25 2月 2008 at 00 : 00 : 00

 Processingのソースコードのsvnレポジトリは

svn://processing.org/trunk/processing

にあります。昔はcvsだったようですが、2005年8月12日よりsvnに移行したようです。

Build >> Develop Processing
http://dev.processing.org/build/

?


[Flex3]Atomフィードを読み込むサンプル

Posted under Flex/AIR/Flash by uechoco on 日曜日 24 2月 2008 at 00 : 00 : 00

Flex 2 / 3で、Atomフィードを読み込んで、ごにょごにょするための土台になるサンプル。他にも方法はあるけど、最初に覚えた方法なのでこう書きました。


<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
applicationComplete="appInit();">
<mx:Script><![CDATA[
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.*;
import mx.controls.Alert;

private const ATOM_URL:String = "http://rss.rssad.jp/rss/gihyo/feed/atom";
private namespace atom = "http://www.w3.org/2005/Atom";
use namespace atom;

private var entryArray:Array = new Array();
private var feed:XML;

private function appInit():void
{
var req:URLRequest = new URLRequest(ATOM_URL);
var ldr:URLLoader = new URLLoader();
ldr.addEventListener(IOErrorEvent.IO_ERROR, onAtomLoadIOError);
ldr.addEventListener(Event.COMPLETE, onAtomLoadComplete);
ldr.load(req);
}
private function onAtomLoadIOError(event:IOErrorEvent):void
{
Alert.show("failed to open url:"+ATOM_URL);
}

private function onAtomLoadComplete(event:Event):void
{
//Alert.show("successed to open url:"+ATOM_URL);
var ldr:URLLoader = URLLoader(event.target);
feed = XML(ldr.data);
var n:int = feed.entry.length();
for (var i:int = 0; i < n; i++ ) {
entryArray.push(String(feed.entry[i].title));
}
lstMain.dataProvider = entryArray;
}
]]></mx:Script>
<mx:List id="lstMain" width="100%" height="100%" />
</mx:Application>

■追記(2008/02/26 16:20)

いそっちノートの中の人に言われて思い出したんですが、Flashにはクロスドメイン制約というものがあります。具体的に言うと原則的に同一のドメイン内のURL(画像やRSS、Atomなど)にしかアクセスできないという制約です。あくまで原則的にです。このswfファイルをローカルで実行する分には関係ないのですが、ブラウザで実行しようとすると、たぶん読み込めないです。なので、クロスドメインポリシーによってアクセスが許可されているAtomに適宜変更するか、あるいはあくまでサンプルだと思ってください。もちろん、このソースコードに重大なミスがあるわけではありません(笑

参考

Atomをパースするなら - Flex Coder


[php][event]AA-Camp #9に参加しました

Posted under php by uechoco on 土曜日 23 2月 2008 at 16 : 00 : 00

 akkyさん主催のAA-Camp #9に参加しました。

 今回の目標は、Flex3でサンプルがてらに作っていたプレゼン用のスライドビューアーに、テンプレート機能とスライドアニメーションを追加することでしたが、なんとかできました。いろいろと改良の余地がありますが、満足のいくものになりました。

 偶然にも向かいに座っていたoverlastさんがFlexを始めて2日目だったようで、Flexの話ができました。overlastさんから面白いコンポーネントを紹介していただいたので、後でそっちもやろうかな。

 そして、overlastさんの隣に座っていたmomoseさんが、Flexに興味を持ち始めましたw ちょっとずつFlex人口が増えております。

 途中からyoskiさんとgroundwalkerさんも合流して、合計6人の参加となりました。


[Flex3]PanelやCanvasのスクロールバーを消す方法

Posted under Flex/AIR/Flash by uechoco on 土曜日 23 2月 2008 at 00 : 00 : 00

 FlexのContainerクラスやそのサブクラス(Accordion, Box, Canvas, Form, FormItem, LayoutContainer, Panel, Tile, ViewStack)は、子コントロールが表示領域を越えると、自動で縦スクロールバーや横スクロールバーが表示されるようになっていますが、その機能がかえって邪魔になる場合があります。

 そういった場合は、ContainerクラスのプロパティのverticalScrollPolicyhorizontalScrollPolicyに値を設定することで、スクロールバーの表示動作を変更することができます。この2つのプロパティは、デフォルトで"auto"、つまり必要なときだけ自動的にスクロールバーが表示されるモードになっていますが、"on"、つまり常に表示と、"off"、つまり常に非表示という値も設定できます。
 よって、PanelやCanvasなどのContainerクラスのサブクラスでスクロールバーを非表示にしたい場合は

<mx:Canvas
??id="cvsMain" width="100%" height="100%"
??verticalScrollPolicy="off" horizontalScrollPolicy="off"
/>

のようにmxmlを書きます。

verticalScrollPolicy - Container - Adobe® Flex™ 2 リファレンスガイド
ScrollPolicy - Adobe® Flex™ 2 リファレンスガイド


« 前ページへ次ページへ »

Copyright © 2012 うえちょこ@ぼろぐ. WP Theme created by Web Top.