跳转到内容

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:
华夏公益教科书