多様なグラフィックス座標系

 多様なグラフィックス座標系
<目 次> 

記載内容は fx-5800P、fx-9860GII (OS 2.04)、fx-CG20 (OS 2.00)で確認したものです.
本プロジェクトは進行中のため、変更があるかも知れません.


機 種
fx-9860GII、fx-CG20/10

機 能
  1. Casio Basicには多様な座標系、物理(デバイス)座標系と論理座標系が用意されている.
  2. 物理(デバイス)座標系はLCDのピクセルに直接対応する. 左上のピクセルは座標 (1, 1) で示され、 (第一行, 第一列) を意味する. 行は垂直方向で、飛び飛びの値(自然数)1, 2, 3,...が設定可能. 列は水平方向で、飛び飛びの値(自然数) 1, 2,3, ... が設定可能. fx-9860GII では最大行は 63、最大列は127. fx-CG20/10 では最大行は187、最大列は379. 最小~最大の範囲外、或いは少数をパラメータに設定すると、Casio Basic は ERRORを返す.
  3. 物理(デバイス)座標系は、Text, PlxOn, PxlOff, PxlChg そして PixlTest コマンドを用いる時のみ自動的に適用される. ユーザーは明示的に物理(デバイス)座標系を設定できない.
  4. 論理座標系の設定方法は2通り、デフォルト論理座標と ViewWindow 座標系がある..
  5. UNDOCUMENTED デフォルト論理座標系は、ClrGraph コマンドが実行されると自動的に選択される. この座標系は、Xmin = -6.3, Xmax = 6.3, Xscl = 0.1, Ymin = -3.1, Ymax = 3.1 そして Yscl = 0.1 で表すことができ、これら6変数には上記の値が自動的に代入される. ClrGraph の代わりに次のコードが同じ結果を与える;Cls:-6.3->Xmin:6.3->Xmax:0.1->Xscl:-3.1->Ymin:3.1->Ymax:0.1->Yscl (ここで -> は代入コマンド).
  6. ViewWindow コマンドを使えば、任意の座標系を自由に定義できる. この座標系をここでは ViewWindow 座標系と呼ぶ. ViewWindow コマンドの代わりに、6個の変数(Xmin, Xmax, Xscl, Ymin, Ymax, Yscl)を設定すると同じ結果になる。

ポイント
  1. ViewWindow 1,127,Xscl,63,1,Yscl (fx-9860GII) や ViewWindow 1,379,Xscl,187,1,Yscl (fx-CG20/10) を実行すれば、この座標系は物理(デバイス)座標系に近い座標系になるが、この座標系では座標値に小数が使える.
  2. デフォルト論理座標系は ViewWindow -6.3,6.3,0.1,-3.1,3.1,0.1 でも正しく設定できる.
  3. UNDOCUMENTED ViewWindow 0,126,0,0,62,0 の代わりに 例えば ViewWindow 0,127,0,0,63,0 を設定すると、以下の例で示すような予期せぬ結果になることがある;  
例 1-1: コードで期待した通りの結果 (fx-9860GII)
コード結果
ClrGraph
CoordOff
GridOff
AxesOff
LabelOO
ViewWindow 0,126,0,0,62,0
For 0→Y To 62
SketchDot F-Line 0,Y,126-MOD(Y,2),Y
Next
DLINE2s

例 1-2: 間違った ViewWindow 設定により期待していない水平線が現れる (fx-9860GII)
コード結果
ClrGraph
CoordOff
GridOff
AxesOff
LabelOO
ViewWindow 0,126,0,0,63,0
For 0→Y To 63
SketchDot F-Line 0,Y,126-MOD(Y,2),Y
Next
DLINE3.1s
垂直方向には実際に63ピクセルあるが、論理的には垂直に64個と定義されている. 全ての点の位置は計算して丸められ、物理的なLCDのピクセルと一対一対応している. そのため予期せぬ線が現れる.
 
 
fx-CG20/10 で ViewWindow 0,126,0,0,62,0 と ViewWindow 0,126,0,0,63,0 とした時も同様だが違った結果になる.

例 2-1: コードで期待した通りの結果 (fx-CG-20/10)
コード結果
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff
ViewWindow 0,126,0,0,62,0
For 0→Y To 62
SketchDot F-Line 0,Y,126-MOD(Y,2),Y
Next
DispOK_cg20

例 2-2: 間違った ViewWindow 設定により期待しない水平線が現れる (fx-CG20/10)
コード結果
ClrGraph
CoordOff
GridOff
AxesOff
LabelOff
ViewWindow 0,126,0,0,63,0
For 0→Y To 63
SketchDot F-Line 0,Y,126-MOD(Y,2),Y
Next
DispProblem_cg20
論理的には fx-9860GII と同じだが、fx-CG20/10 ではLCDの物理的なピクセル数が異なるので、出力結果の詳細は異なる. 



関連コマンド: ClrGraph, ViewWindow, Xmin, Xmax, Xscl, Ymin, Ymax, Yscl


Copyright (C) 2013 - 2016 Krtyski / egadget.blog.fc2.com  All Rights Reserved.


関連記事

テーマ : プログラム関数電卓
ジャンル : コンピュータ

コメントの投稿

非公開コメント

最新記事
最新コメント
カテゴリ
C# (3)
検索フォーム
Visitors
Online Counter
現在の閲覧者数:
プロフィール

やす (Krtyski)

Author:やす (Krtyski)
since Oct 30, 2013


プログラム関数電卓は、プログラムを作り・使ってナンボ!

実際に触って気づいたこと、自作プログラム、電卓プログラミングについて書いています

おもしろい・役に立つならクリックしてください。励みになります。
にほんブログ村 IT技術ブログ 開発言語へ
にほんブログ村


人気ブログランキングへ


FC2ブログランキングへ


写真: 「4駆で泥んこ遊び@オックスフォード郊外」

リンク
月別アーカイブ
Sitemap

全ての記事を表示する

RSSリンクの表示
最新トラックバック
ブロとも申請フォーム

この人とブロともになる

QRコード
QR