-
Notifications
You must be signed in to change notification settings - Fork 10
部件级别错误类型
部件级别错误类型
错误类型 | 错误类型解释 | 错误编号 | 典型汉字 | 返回值 | 动画效果 |
---|---|---|---|---|---|
水平平齐 | 仅限两个点或笔画末端,如人字底部水平 | A0001 | 人 大 | A0001 | 连接错误两个点,并将y 轴高的点向下移动,闪现两次 |
中点切分 | 返回错误的点和正确的点,切分左右对称 | A0002 | 下 | A0002 | 错误交点移动到正确的位置 |
黄金分割 | 一笔切另外一笔,交点位置位于被切分笔画黄金分割点 | A0003 | 十 | A0003 | 将错误点移动到正确位置 |
首点居正 | 返回需要居中的横坐标位置,主的首点 | A0004 | 主 | A0004 | 错误点,正确点,正确点画虚竖线,然后将首点x 坐标移动 |
横笔等距 | 三 横笔划之间等距 | A0005 | 三 主 | A0005 | 将第一笔中点x,及其他笔 y 值连竖线 |
竖笔等距 | 卅 竖直笔画 | A0006 | 卅 | A0006 | 将返回到第一个点 y, 及其他笔 x 值连成横线 |
重心平稳 | 大字交叉点,在包围盒的重心位置 | A0007 | 大 | A0007 | 返回错误点,画包围盒 |
竖直水平 | 己 横笔端末尾平齐 | A0008 | 己 | A0008 | 用返回的两个点,x 小的往 大的移动 |
横平竖直 | 主笔 限定阈值更紧 | A0009 | 下 士 旦 | A0009 | 找到错误笔画,闪动笔画 |
长度比例 | 限定两个和多个笔画之间的长度比例关系 | A0010 | 三 川 二 仨 叁 卅 | 拿错误笔画,闪 |
笔画级别错误类型定义
错误类型 | 错误类型解释 | 错误编号 | 返回值 |
---|---|---|---|
笔画写错 | 笔画写成其他笔画 | B0001 | B0001 |
笔画位置错误 | 笔画的位置发生错误 | B0002 | B0002 |
汉字级别错误类型定义, 待定
错误类型 | 错误类型解释 | 错误编号 | 返回值 |
---|---|---|---|
宽高比 | 长和宽的比值 | C0001 | C0001 |
左右错位 | 左右结构汉字 错位 | C0002 | C0002 |
返回值类型
在以前的版本中返回值为两位,(这里隐藏一个BUG,JudgeManager::getResult,返回值有4位,而事实上只需要前两位即可,需要在LUA中约定)。如果修改API为传递其它字符串,是否考虑采用JSON格式,而非选用 A0001:-strokecount-point,-strokecount-point
类似字串。
采用如下方式:
A0001 错误返回格式
{
"ret":"101", # 表示部件有错误
"error": [
{
"errortype": "A0001",
"errorstroke": {"0":"0.2", "1":"0.3"}, # 错误的笔画
"rightposition": { }
}
]
}
A0002 和 A0003 类似
{
"ret":"101",
"error": [
{
"errortype": "A0002",
"errorstroke": {"0":"0.2"},
"rightposition": { "0":"0.4" }
}
]
}
A0004
{
"ret":"101",
"error": [
{
"errortype": "A0004",
"errorstroke": {"0":"0.2"}, # 错误笔画
"rightposition": { "1":"0.5" } # 正确笔画 x 值
}
]
}
A0005 和 A0006 类似
{
"ret":"101",
"error": [
{
"errortype": "A0005",
"errorstroke": {"0":"0.5", "1":"0.5", "2":"0.5"}, # 取各个点 y 值,连成竖线, 第一笔中点 x
"rightposition": {}
}
]
}
A0007
ret 字串内容,评判内容在每一笔完成之后返回,每次返回内容包含该笔画的错误,或者一个部件完成之后的部件正确与否的结果。
ret 字串返回值,一共有3位,每一位对应关系如下: 0 表示错误 ,1 表示正确
-
第一位 表示该笔画是否正确
其中可能产生笔画错误,或者笔画位置错误,两种错误类型
-
第二位 表示该笔画完成之后部件是否正确,如果部件未完成,默认为1正确
如果第二位出现0,则会产生部件的错误,部件的错误类型如上定义
-
第三位 表示该笔画完成,整个汉字正确,默认如果整个汉字未完成,默认为1正确,
传递error数组,包含错误列表,每种错误中包含 errortype
, errorstroke
, 两种错误具体错误。如果包含更多错误则继续在error中添加错误列表项。
举例:
例子1:
{
"ret":"111",
"error": []
}
该笔画没有错误,并且部件错误没有发现,整字未发生错误
例子2:
{
"ret":"011",
"error":[
{
"errortype": "B0001",
"errorstroke":{"null":null}
}
]
}
该笔画发生错误,该笔画的错误类型为 B0001,为该笔画写错。如果 B0002 则表示为笔画位置出现错误。
例子3:
{
"ret":"101",
"error": [
{
"errortype": "A0001",
"errorstroke": {"0":"0.2", "1":"0.3"}
},
{
"errortype": "A0021",
"errorstroke": {"0":"0.2", "1":"0.3"}
}
]
}
该笔画没有错误,但是部件发生错误,发生两个错误,分别是 A0001,A0021,错误具体笔画保存在 errorstroke 中。但是这样会遇到一个问题,当错误类型中包含着笔段信息的时候,如何返回 errorstroke 值。
这里舍弃了 errorpoint ,将 errorpoint 值提到 errorstroke 层级,使用 hash 将笔画对应的错误点信息关联起来。
例子4:
{
"ret":"110",
"error": [
{
"errortype": "C0001",
"errorstroke": {"null":null }
}
]
}
整字出现错误,该返回值只可能在整个汉字写完之后出现,返回该汉字的错误类型为 C0001,表示汉字左右部首发生错误。
可选择如下: