跳轉到內容

HP 計算器程式設計/命令/繪圖命令

來自華夏公益教科書,開放的書籍,開放的世界

重要說明

[編輯 | 編輯原始碼]

繪圖命令有點令人困惑,因為它們引用了“繪圖”的一部分,而不是物理螢幕的一部分。

直觀地認為(知道螢幕是 131x64 畫素寬,並且計算器透過類似笛卡爾座標系的系統引用點),在 (1,1) 處的畫素將 **始終** 是螢幕上最右下角的畫素。

但是,情況並非如此。(1,1) 是無限“繪圖”中 (1,1) 處的畫素。這意味著它將 **僅** 當繪圖設定為 1?X?131 和 1?Y?64 的尺寸時,才會按預期成為最右下角的畫素。這可以透過將 (X/Y)(MIN/MAX) 命令設定為適當的值來完成

1?XMIN:131?XMAX:
1?YMIN:64?YMAX:

將此程式碼新增到程式的開頭將自動將計算器的繪圖大小設定為這些規格,確保程式順利執行。但是,程式完成後,使用者可能設定的任何圖形都將在(可能)不正確的繪圖大小上顯示,這可能會讓使用者感到沮喪。您可以透過以下方式解決此問題

XMIN?A:XMAX?B:
YMIN?C:YMAX?D:
1?XMIN:131?XMAX:
1?YMIN:64?YMAX:

<program code goes here>

A?XMIN:B?XMAX:
C?YMIN:D?YMAX

當然,這在一定程度上增加了程式的臃腫,但會解決問題,**只要** 您沒有在程式中將您選擇的變數用於其他目的。另一種方法是將值儲存在列表中。

語法

ARC <cent-x>;<cent-y>;<radius>;<start>;<end>:

細節

  • <cent-x> 和 <cent-y> 是圓弧中心的 x 和 y 座標。
  • <radius> 只是圓弧的半徑。
  • <start> 是圓弧的起始角度,<end> 是圓弧的結束角度。
    • 角度按數學方式測量,即與 單位圓 一致;其中 0° 等於指南針的正東方向,而不是正北方向,逆時針方向為正方向。

危險

  • ARC 命令使用當前的角度模式來處理 <start> 和 <end> 引數。因此,如果您使用度數來設計圓弧,最好以程式設計方式將角度模式設定為度數,如下所示
1?HAngle:
  • 或者,可以使用 HAngle 值 2 或 3 將計算器分別設定為弧度或梯度。
  • ARC 命令特別慢,因此如果您需要大量繪製,最好(雖然很耗時)使用 MAKEGROB。

示例

ARC 65;32;15;0;360:

從螢幕中心繪製一個半徑為 15 畫素的完整圓。

ARC 65;32;15;10;80:
ARC 65;32;15;100;170:
ARC 65;32;15;190;260:
ARC 65;32;15;280;350:

繪製一個由四個圓弧組成的完整圓,但圓在每個基點處缺少一個 20° 的圓弧。使用迴圈更簡潔地表示

FOR X=0 TO 270 STEP 90;
ARC 65;32;15;10+X;80+X:
END:

語法

BOX <x1>;<y1>;<x2>;<y2>:

細節

  • (<x1>,<y1>) 是盒子的起始角的座標。
  • (<x2>,<y2>) 是完成盒子的角的座標。
  • 對使用的角沒有限制,只要它們是二進位制對立的,即左上角和右下角或左下角和右上角。此外,它們的使用順序並不重要。

示例

BOX 1;1;131;64:

在螢幕邊界周圍繪製一個框。

BOX 1;1;131;64:
BOX 2;2;130;63:

在螢幕周圍繪製一個 2 畫素厚的邊框。更簡潔

FOR X=0 TO 1;
BOX 1+X;1+X;131-X;64-X:
END:

這允許您透過簡單地調整 FOR 命令來輕鬆調整邊框的厚度;對於“FOR X= TO Z”,邊框將始終為 (Z-1) 畫素厚。

語法

ERASE:

細節

  • 擦除螢幕內容,就這麼簡單。
  • 在任何繪圖命令之前新增 ERASE: 通常是一個好主意,以防止程式在程式目錄或使用者當時可能處於的任何其他檢視上繪製。

語法

FREEZE:

細節

  • 停止程式,並等待按鍵繼續。
  • 在完成繪圖命令後使用它,以便使用者有時間檢視螢幕!

語法

LINE <x-start>;<y-start>;<x-end>;<y-end>:

細節

  • 從點 (<x-start>,<y-start>) 到點 (<x-end>,<y-end>) 繪製一條線。

示例

LINE 1;1;131;64:
LINE 1;64;131;1:

在螢幕上繪製一個十字。

PIXON/PIXOFF

[編輯 | 編輯原始碼]

語法

PIXON <x>;<y>:
PIXOFF <x>;<y>:

細節

  • 開啟或關閉 (<x>,<y>) 處的畫素。

危險

  • PIXON 和 PIXOFF 速度相當快,但在 FOR 迴圈內(見下文),可能會明顯變慢。如果您想做類似“假裝”載入欄(或者如果適用,甚至是一個真正的載入欄),您應該使用 LINE 或 TLINE,因為它們更快。

示例

FOR X=1 TO 131 STEP 1;
FOR Y=64 TO 1 STEP -1;
PIXON X;Y:
END:END:
FOR X=131 TO 1 STEP -1;
FOR Y=1 TO 64 STEP 1;
PIXOFF X;Y:
END:END:

用畫素從左到右、從上到下填充螢幕,然後反轉過程。

語法

TLINE <x-start>;<y-start>;<x-end>;<y-end>:

細節

  • 與 LINE 相同,但命令執行一個略有不同的任務 - 它不是開啟一行畫素,而是切換它們。也就是說,如果您要繪製的所有畫素都已關閉(例如您剛使用 ERASE:),它將充當普通 LINE,但如果已經打開了一些畫素,它將關閉這些畫素,反之亦然。

示例

ERASE:
DISPLAY? G1:
GROBNOT G1:
?DISPLAY G1:
TLINE 1;1;131;64:
TLINE 1;64;131;1:

在開啟所有畫素後,在螢幕上用白色繪製一個十字。因此,它的作用與以下命令相同

ERASE:
LINE 1;1;131;64:
LINE 1;64;131;1:
DISPLAY? G1:
GROBNOT G1:
?DISPLAY G1:
華夏公益教科書