2015年6月11日木曜日

グラフ電卓の愉しみ #2 - Pickover Attractor

グラフ電卓には、それなりのグラフィクス機能があります。簡単なプログラムで興味深いグラフィクスを描き出す「Clifford Attractors」のプログラムを作成してみました。

Clifford A. Pickover 氏によるアトラクタで、en wiki には、2DのClifford attractor、3Dの「Pickover attractor」がある、と書かれています。3Dの表示はPCでも少々手数が掛かってしまうので、2D表示で出来るClifford attractor について、行ってみました。
Clifford attractorについては、以下のサイトで例が示されています。

Clifford Attractor
http://paulbourke.net/fractals/clifford/

ここで紹介されているグラフィクスは高性能のコンピュータを使って描き出されたものですから、これがそのままグラフ電卓で再現できるわけではないのですが、大まかな所は十分に描き出される筈です。

先ずは、TI-83+ で描いてみました。プログラム自体は実に簡単ですが、結構時間が掛かります。

PROGRAM:ATTRCT
:AxesOff
:ClrDraw
:0.5→X:0.5→Y
:For(I,1,1000)
:Pt-On(X,Y)
:sin(AY)+Ccos(AX)→Z
:sin(BX)+Dcos(BY)→Y
:Z→X
:End

プログラムを実行する前に、細かい指定を行っておかないとなりません。

1. Clifford attractor では、A, B, C, Dの4つのパラメタを変換させる事で、様々な意匠が得られます。プログラム実行前に、変数A, B, C, Dを予め指定しておきます。

例)
1.32→A : 0.804→B : 2.568→C : 1.824→D

2. つぎに、グラフを描く範囲を指定しておきます。TI83+の場合、グラフ電卓の機能として描図領域の設定等を電卓のメニューから行います。X, Y共に、-4~+4の範囲で描くと、いい感じです。

ついでにHP50GのSysRPLで作成したものを掲載しておきます。UserRPLより断然早いのですが、それでも1分以上掛かってしまいますネ。
こちらの場合は、スタックにA, B, C, Dの数値を積み、プログラムを実行します。
描図範囲は PPAR を参照するので、プログラム実行前に[WIN]キー([Left-Shift]+[F2])で描図範囲を設定して下さい。

!NO CODE
!RPL

::

0LASTOWDOB!
CK2NOLASTWD
CK&DISPATCH1
#1111

  ::

  GETXMIN GETXMAX GETXMIN %-
  GETYMAX GETYMAX GETYMIN %-

  { LAM a LAM b LAM c LAM d LAM xmin LAM xrng LAM ymax LAM yrng } BIND

  CLEARLCD
  TURNMENUOFF

  80 131 MAKEGROB
  GROB>GDISP
  TOGDISP

  ' ID X PURGE
  %0.5 ' ID X CREATE
  ' ID Y PURGE
  %0.5 ' ID Y CREATE

  1000 0 DO
    LAM a ID Y %* %SIN LAM c LAM a ID X %* %COS %* %+
    LAM b ID X %* %SIN LAM d LAM b ID Y %* %COS %* %+
    ' ID Y STO ' ID X STO

    ID X LAM xmin %- LAM xrng %/ %131 %* COERCE
    LAM ymax ID Y %- LAM yrng %/ %80  %* COERCE
    PIXON3
  LOOP

  ABND
  ;
;
@


2 件のコメント:

Sentaro さんのコメント...

akatuki様、こんばんは!

SysRPLはまずDebug4xで動作確認してからコネクトでhppを実機に持っていくのが最近のやり方になってるんですけど、#1、#2ともに一発で動きました。

グラフは実行していく結果が目に見えるのがよいですね(^^)

akatuki さんのコメント...

Sentaro 様、こんばんは !

> SysRPLはまずDebug4xで動作確認してからコネクトでhppを実機に持っていくのが最近のやり方になってるんですけど、#1、#2ともに一発で動きました。

検証作業、有難う御座居ます。

> グラフは実行していく結果が目に見えるのがよいですね(^^)

これこそ、グラフ電卓の醍醐味ですネ !