HBTech's Blog
HBTech's Blog
fx-92+ Spéciale Collège 开箱贴图评测

fx-92+ Spéciale Collège 应该是 CASIO 发布的在 ClassWiz 系列中最新的了,它于2018年在法国发布,是之前两款 ClassWiz 型号,fx-92(B) Spéciale Collège 的“升级款”。这两者的区别在于 fx-92B Spéciale Collège 具有三种语言,即法语、荷兰语、英语,而 fx-92 Spéciale Collège 仅有法语。同样的,今天要评测的 fx-92+ Spéciale Collège 也是仅有法语,但它特殊就在于新增了一个在传统的函数计算器从未有过的功能——算法模式 (Algorithmique)

下为 CASIO 官网截图,由谷歌翻译机翻:

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/Screenshot_2019-12-09-10-45-06-755_com.android.ch_.jpg

现在我手上的这一台计算器,于2019年12月在某宝找亚马逊代购所得

下面开始开箱

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/IMG_20191214_185514_compress17.jpg

可以看到,它的包装为一次性包装,不同于国内的包装可以重复打开与关合,如果要取出计算器而不破坏包装以留作纪念,很难做到
包装的侧面特写以及背面内容

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/IMG_20191214_185723_compress13.jpg

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/IMG_20191214_185730_compress56.jpg

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/IMG_20191214_185853_compress89.jpg

小心拆开包装后,包装物一览

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/IMG_20191214_190237_compress30.jpg

包装上那个写有 3€ 的标签背面,写了如下内容。用谷歌翻译机翻了一下,大致是按照上面的要求去做(邮寄什么鬼的给 CASIO),就可以获得 3 欧元的退款。

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/IMG_20191214_212411_compress85.jpg

同时注意到纸面板上似乎有个类似于 NFC 标签的玩意,但是用手机的背部靠近后并没有任何反应。猜测可能是防盗或者防伪用途?

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/IMG_20191214_212416_compress20.jpg

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/IMG_20191214_212524_compress56.jpg

说明书、保证书就略过了。那么包装部分就到此结束,下面是计算器本体的介绍
首先我们注意到它的屏幕,被卡婊弄了个印着算法模式界面的塑料纸上去,强调了它的特色功能,毕竟目前就这一个型号拥有这功能

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/IMG_20191214_190538_compress23.jpg

让我们来看一下按键。作为 ClassWiz 中的一款机型,T键是必不可少的,因此在以前的系列里v键的位置就被T键代替了,f也被作为a键的第二功能键

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/IMG_20200128_181734_compress75.jpg

下面把滑盖盖上正面,看一下滑盖特写,背面以及铭牌特写

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/IMG_20191214_210637_compress0.jpg

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/IMG_20191214_190737_compress1.jpg

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/IMG_20191214_190749_compress43.jpg

可以看到背部除了铭牌,它的下方还贴了个贴纸
既然都盖了后盖了,话不多说,先来拆机

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/IMG_20191215_013240_compress32.jpg

电路板特写

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/IMG_20191214_205909_compress58.jpg

拆机完毕,接下来是自检。这里只放出“第三自检”的图,这一自检在早期的 ClassWiz 上并没有出现,是后面才添加进去的

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/IMG_20191214_211725_compress48.jpg

进入此自检界面同样需要同时按下q9W,松开后再按下6。之后,正如屏幕上所提示的那样,按下不同的数字键将会进入到相应的自检程序,结束后按下 C 又会回到此屏,可继续选择进入别的自检程序或者退出

那么硬件以及自检的部分就先到这里。下面会着重介绍该机型的“算法模式”,其它的功能因为与前代的变动不大,贴吧中又有相应评测,故不再赘述,想了解的可以看看这篇帖子,同时也提供了备份用站点

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/IMG_20191214_211850_compress58-1.jpg

按下w,再按下8或者移动光标到算法模式的图标后再按下B,即可进入算法模式

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/IMG_20191214_211819_compress42.jpg

进入后将会看到一条用法语书写的提示,意思是“按下T以创建一条算法”。这便是这个算法模式的特点所在,通过按下T来键入相应的算法,以实现简易的编程和画图

我们先忽略屏幕的提示,直接按下B,以进入到算法的执行画面

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/IMG_20200128_193309_compress68.jpg

按下B后,屏幕上出现了一个坐标系和一个处于原点,指向右方的箭头。这便是算法模式的初始状态,我们输入相应的算法,按下B后便是从这个初始状态开始执行。但是它的显示范围是固定的,一个像素为一个坐标,显示的范围为 -95≦ x ≦96, -23≦ y ≦23 ,不能移动;而在算法执行的过程中,箭头是可以在屏幕区域外进行操作的,范围为 -999≦ x ≦999, -999≦ y ≦999 。这样的设计让我想到了当年的 ArithMax 开源图形计算器,看来卡婊抄袭法师实锤了(下为工程机,拍摄于2015年8月):

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/969e69224f4a20a41c370b9496529822730ed0c4.jpg

让我们继续回到这台呕吐绿。实际上,在 CONFIG 中是可以调整坐标系样式的,一共有四种样式:

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/IMG_20200128_184824_compress65.jpg

默认情况就如上面的图,仅显示坐标轴。除此之外可以选择显示轴和网格,轴、轴的名称及坐标数字,或者不显示轴:

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/IMG_20200128_193337_compress7.jpg

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/IMG_20200128_193348_compress42.jpg

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/IMG_20200128_193400_compress60.jpg

下面让我们返回算法的输入界面,并按下T,便出现了算法菜单。

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/IMG_20200128_184458_compress65.jpg

菜单一共有 5 页,前 4 页为可以用的算法,共有 16 条,这里关于每一个算法的功能可参看知乎上的相关介绍,或者 CASIO WES 上关于这一模式的说明书,此处不再赘述。

菜单的最后一页是 4 个功能操作,分别是运行算法、复制粘贴算法、插入空白行以及清空所有算法。实际上我们输入的算法按下B就可以执行,而按下W或者关机后就会全部清空,所以第一和最后一个功能似乎是没有必要的

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/IMG_20200128_184734_compress7.jpg

那么算法模式的基础功能就基本介绍完毕,从中不难看出,这一模式有着很高的可玩性,上面提到的知乎文章也写到了相关的进阶应用。下面我将重点谈谈利用此功能实现“拼图”功能。
众所周知,“拼图”是 f 吧发现的,在 991+ 时代十分“火爆、流行”的“功能”,在当时还是利用了计算器的 bug 来实现的;然而它在 ClassWiz 的推出和 CASIO 对 bug 的封锁后而逐渐式微,但未曾想到今天我们可以直接用上“官方拼图”!

下面就先让我们欣赏几幅拼图成果:

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/IMG_20191223_222345_compress51.jpg

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/IMG_20191214_193353_compress80.jpg

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/IMG_20191224_200747_compress86-1.jpg

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/IMG_20191224_233114_compress2.jpg

上面的拼图都是预先设计好,再输入到计算器中让其执行得到的。如果我们在坐标参数中让其包含了 Ran# 函数,即计算器的随机数生成函数,可以得到一些较为随意的线条:

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/IMG_20191215_193414_compress77.jpg

emmm好像还蛮有艺术感的?

下面开始介绍拼图的思路。首先便是确定好图案的坐标,这是预备工作。这一点就和以前的拼图不同,在 991+ 时代我们可以在方格纸上任意绘画,最后根据像素的明暗转换成二进制代码,再根据字符表换算成字符,最后利用不稳定字符输进计算器即可。但现在我们需要确定好图形的“特征坐标”,把它们输进计算器,计算器再将其连成线条。以上面的 LOVE❤ 图案为例,通过将图案放在坐标系中——既可以是印刷在纸上的坐标系,也可以是 Excel 或者别的什么坐标系,确定好每一个“边角”的坐标后,再利用计算器的“移动坐标”等功能,画出一个完整的图案。

最开始的 LOVE❤ 图案我是借助 Excel 和画图来确定坐标的,但之后发现这样来工作量太大了。后来就发现了一个叫 Desmos 的网站,借用它丰富的功能大大减轻了取点的工作量。

Desmos 支持用户导入图片到坐标纸上,进行进一步加工,我已经按照算法模式的可视区域大小,192×47,绘制了一个网格纸出来,导入到 Desmos 中并调整好位置了。就是借助这个程序,我才确定了上面的几个图案的坐标。点击下面的链接,就可以在 Desmos 中看到上面几个图案的坐标点:

网格纸:https://www.desmos.com/calculator/ge99g57v5p
小猪佩奇:https://www.desmos.com/calculator/s9dhidd9kp
Hello Kitty:https://www.desmos.com/calculator/ysyniywmwf
娘口三三:https://www.desmos.com/calculator/3stg9vqqt0

这里顺便说一句, Desmos 上有很多用户借助它丰富的功能用函数来绘画,具体可以在这个网页查看

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/Snipaste_2020-01-29_13-16-48.jpg

下面我们继续回到算法模式,来说说取点坐标的技巧。说回刚刚的 LOVE❤ 图案,字母 LVE 是比较“棱角分明”的,例如字母 L 只需要确定三个点即可画出(如果像上图一样做成空心的就需要更多的点),而 O 和 ❤ 由于存在曲线段,可以考虑先拟合出合适的函数式,再利用计算器的循环结构将其画出。
有关让计算器用循环结构画出函数解析式的方法可参考这一篇知乎文章

由于代码过于繁琐,这个“LOVE❤”的图案我已通过计算器的QR码功能导出,可以访问其网站来查看其伪代码,分别有英文版法语版。英文版方便理解代码的执行过程,法语版方便再次输入进计算器。

然而,计算器的存储是有限的,尤其是作为一个函数计算器来说;如果我们想要得到的图案的关键点太多,就会导致无法将其全部输进计算器。因此我们不禁会想,有没有什么办法可以解决什么问题?答案当然是肯定的,只需要利用计算器的循环结构和询问值算法即可。

话不多说,下面直接贴代码好了:

Style Cross
0 →F
Repeat until F=999
//控制起笔落笔
	? →M
	If M≠0 then
		Pen Down
	else
		Pen Up
	End
//控制坐标位置
	? →A
	? →B
	Go to x=A , y=B
//画圆。将会以光标所处坐标为圆的上顶点,C的值为半径,顺时针画一个圆
	? →C
	If C≠0 then
		Pen Down
		Repeat 180
		Turn ↺ -2 degrees
			Move 2Ctan(π÷180 pixels
		⤴
		If M=0 then
			Pen Up
		End
	End
//画二次曲线。用D判断是否绘制;ABC为系数;DE为x的范围
	? →D
	If D≠0 then
		? →A
		? →B
		? →C
		? →D
		? →E
		Pen Up
		Go to x=D , y=AD²+BD+C
		Pen Down
		Repeat until D=E
			Go to x=D , y=AD²+BD+C
			D+1 →D
		⤴
		If M=0 then
			Pen Up
		End
	End
	? →F
⤴

Pen Up
Go to x=999 , y=999

各代码块的功能注释里面写有了,我再具体说明一下。

首先我们给变量F赋值0,并设定一个循环,循环结束的条件是F=999。接下来,请求M的值以控制起笔和落笔。随后请求A、B的值用以控制箭头的坐标,要注意x和y的值是不能请求的,它们随着箭头的坐标变化而变化。

考虑到图案中较为常见的弧线就是圆了,通过请求C的值判断接下来是否需要在以箭头所处坐标为圆的上顶点,C的值为半径,顺时针画一个圆。这里考虑到了计算器屏幕的精度不高,实际上画的是一个正多边形,但也够用了。

又考虑到一些弧线是可以通过用二次函数拟合的方式确定下来的,利用ABCDE五个变量以实现其绘图。但它实际体验并不佳,后面实际操作的时候抛弃了这一方法,直接在弧线上取足够的点连起来即可,这里把此算法放上来仅供参考。

最后询问F的值,如果不赋值则重新上面的循环,继续绘画,直到图案完成,我们再赋F值为999,退出循环并将光标移动到 (999,999) 处以免影响图案美观。

这样一来它的优点就在于,它可以不局限于图案的复杂程度,可以无限画下去;并且,当我完成了一个图案后,如果想在它的旁边继续添加,也可以很方便的做到。

当然,这种方法的缺点也显而易见,因为计算器并没有提供擦除的算法,所以如果一旦不小心输错了坐标,就没有可以挽回的余地了,必然会对图案的美观造成影响,甚至只能从头再重新把坐标再输一遍。
比如上面那个 Hello Kitty 的图案,我在绘图完毕后想再继续在她的旁边写上“Merry Christmas”,结果手残了输错坐标,于是就……

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/IMG_20191224_210144_compress35.jpg

图案完成后,还有一个问题没有解决,那就是计算器在没有操作一定时间后会自动关机。为了解决这个问题,我们可以让计算器计算一些比较复杂的式子,提高它的运算量,同时利用循环结构让其无休止的计算下去,以使其不自动关机。下面就是一个画出三角函数的算法画出来的图,理论上它将永远画下去

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/IMG_20191215_202941_compress37.jpg

好像有点像 DNA 的双螺旋结构……

那么我之后就对上面的算法做出了改进,也去除了画圆和二次函数的算法,得到以下算法:

Style Cross
0→F
Repeat until F≠0
	? →M
	If M=0 then
		Pen Up
	else
		Pen Down
	End
	? →A
	? →B
	Go to x=A, y=B
	? →F
⤴

0→M
Pen Up
Go to x=-95, y=23
Pen Down
Repeat until M≠0
	-95→A
	Repeat until A=96
		Move sin⁻¹(sin(cos⁻¹(cos(sin⁻¹(cos⁻¹(tan⁻¹(tan(cos(sin(sin⁻¹(cos⁻¹(tan⁻¹(tan(cos(sin(sin⁻¹(cos⁻¹(tan⁻¹(tan(cos(sin((A×9.9999999x109)^(0 pixels
		A+1→A
	⤴
	Turn↺ -90 degrees
	23→B
	Repeat until B=-23
		Move sin⁻¹(sin(cos⁻¹(cos(sin⁻¹(cos⁻¹(tan⁻¹(tan(cos(sin(sin⁻¹(cos⁻¹(tan⁻¹(tan(cos(sin(sin⁻¹(cos⁻¹(tan⁻¹(tan(cos(sin((B×9.9999999x109)^(0 pixels
		B+1→B
	⤴
	Turn↺-90 degrees
	Repeat until A=-95
		Move sin⁻¹(sin(cos⁻¹(cos(sin⁻¹(cos⁻¹(tan⁻¹(tan(cos(sin(sin⁻¹(cos⁻¹(tan⁻¹(tan(cos(sin(sin⁻¹(cos⁻¹(tan⁻¹(tan(cos(sin((A×9.9999999x109)^(0 pixels
		A-1→A
	⤴
	Turn↺-90 degrees
	Repeat until B=23
		Move sin⁻¹(sin(cos⁻¹(cos(sin⁻¹(cos⁻¹(tan⁻¹(tan(cos(sin(sin⁻¹(cos⁻¹(tan⁻¹(tan(cos(sin(sin⁻¹(cos⁻¹(tan⁻¹(tan(cos(sin((B×9.9999999x109)^(0 pixels
		B-1→B
	⤴
⤴

绘图完毕后将执行最后面的一长串的代码,它将会在可视区域外围画一个框,但是这样的画法大大增加了计算器的运算量,使得其不会自动关机。以下是使用了这种方法后目前最长的计时,理论上是可以无限算下去的:

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/5079089fc3c756d7_compress49.jpg

那么有人可能会问了,可不可以只添加一个死循环的结构,不必增加运算量呢?并不可以,因为如果计算量不够大,计算器是可以“检测”出存在死循环,并报错的:

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/IMG_20191214_230159_compress86.jpg

“检测”加了引号,这是因为不存在这样的一个程序,可以用来判断一段代码运行后是否会出现死循环(可搜索“停机问题(Halting Problem)”了解)。

计算器在一些情况下会爆出死循环的错误,有可能是检测到运行的次数达到了阈值,于是报错,它仍旧不具有检测代码是否会导致死循环的功能。

=====分割线=====

那么这篇评测文章咕了这么久,终于就到此告一段落了!如果还有什么需要补充的,我会在这篇文章里直接加上去。

最后,感谢所有为这篇文章提供素材和建议的人,也祝大家在新的一年里心想事成,万事如意!

https://hbtech.oss-cn-shenzhen.aliyuncs.com/blog/haha.png

HBTech's Blog

fx-92+ Spéciale Collège 开箱贴图评测
fx-92+ Spéciale Collège 应该是 CASIO 发布的在 ClassWiz 系列中最新的了,它于2018年在法国发布,是之前两款 ClassWiz 型号,fx-92(B) Spéciale Collège 的“升级款”。这两者的区别在于 …
扫描二维码继续阅读
2020-01-28