« 2007年3月4日 - 2007年3月10日 | トップページ | 2007年5月13日 - 2007年5月19日 »

2007年3月21日 (水)

Perlで図形言語2

前回 につづきPerlで図形言語を作成。
前回上手くできなかった再帰的な図形もできました。
Square_limit_4

原因は関数呼ぶだけでいいところを、
関数を返してしまっていた事でした。

それから、線だけじゃなくて画像もできるように改造。
拡大は実数OKだけど、縮小は実数を使えないみたいで、
ある程度ウィンドウのサイズと画像を調整しないと上手くいかないのが、
よろしくないのですが、ここまでできました。
Corner_split_4

ソースはこんな感じ。

#!/usr/bin/perl -w
use strict;
use Tk;
require "picture.pl";

my $width  = 360;
my $height = 360;
my $top = MainWindow->new();
my $canvas = $top->Canvas(width => $width, height => $height);
my $image= $top->Photo( -file => 'ch2-Z-G-30.gif');
print $image->width, ":", $image->height, "\n";

my $frame = &make_frame(&make_vect(0, 0),
                                         &make_vect($width, 0),
                                         &make_vect(0, $height));
my $painter = &picture_painter_2($canvas, $image);
my $func = &corner_split($painter, 4);
&$func($frame);

$canvas->pack();
MainLoop();

顔写真は、本家のサイトから拝借しました。
ライセンス的にどうなんでしょうか?
だめだったらすぐ削除します。

あと、線分と画像の座標の取り方が違ったので、
線分の表示する所をちょこっと変更。

下の3つが使用したコードです。
picture2.pl
main - 線分の方
main2 - 画像の方

picture2.plとなっているのは、同名のファイルをアップロードしようとすると上書きになるためです。

使用したい方はご自由にお使い下さい。ただし、責任は持ちません。

| | コメント (2) | トラックバック (0)

« 2007年3月4日 - 2007年3月10日 | トップページ | 2007年5月13日 - 2007年5月19日 »