跳转到内容
彼岸论坛
欢迎抵达彼岸 彼岸花开 此处谁在 -彼岸论坛

[程序员] 怎么自己开发一个类似 GeoGebra 的可视化输入函数绘图工具?


小天管理

已推荐帖子

目前的工作内容需要开发一个类似 GeoGebra 的可视化输入函数绘图工具,目标用户是非专业人员,需要支持完全通过鼠标操作进行可视化输入。公式可以通过 LaTeX 渲染,但是不能让用户感知到有 LaTeX 的存在。公式有可能会复杂一点,比如下面这样:

y=\frac{2\tan\left(x\right)}{\log_{2}{\left|\sqrt[3]{3x}\right|}}

其实已经做了一部分了,基于 Web 前端开发,用了 MathQuill 库作为 LaTeX 表达式的渲染和可视化编辑; 另一方面通过 JS 函数绘图的方法也搞定了,没有使用现成的库,但是tan(x)这种存在间断点的函数也是能正确绘制的; 目前最大的问题还是不知道怎么把用户通过 MathQuill 的库自定义输入的 LaTeX 表达式编译成 JS 函数。比如上面的tan(x),通过软键盘的方式输入过后,实际得到的 LaTeX 字符串是:

\tan\left(x\right)

又或者说进一步复杂点的对数函数,软键盘的方式输入(调用 MathQuill 的实例将当前的 LaTeX 表达式设置为\log_{2}{x})过后再次编辑,把 x 改成 x+1 ,表达式就会变成下面这样:

\log_2x+1

非常头疼。

本身我没有学过计算机专业课,不过大概知道这一块算是编译原理需要解决的内容,我在做的东西应该是一个基于 LaTeX 语法的 JS 表达式引擎,但光是知道这些还是不太够。 目前的成果是,找到了一款名叫 filtrex 的 npm 库,他是基于另一个叫做 jison 的库提供了基础的 JS 表达式引擎功能,而这个 jison 是 Bison 的 JS 版本,Bison 则是一款专业的语法分析工具。 通过 GPT-4o 添加了一些我设定的语法规则,实际用起来发现只能做到正确解析我预设的函数,真正的用户输入和 MathQuill 的输出千变万化,无法一一穷举。 比如我可以做到解析(x)^{2},但是把(x)编辑成(x+1)过后,整个式子会变成(x+1)^2,jison 提示“Expecting 'LBRACE', got 'NUMBER'”,又无法解析了。更不要说\log_2x+1这种看起来就没法解析的 LaTeX 了。

各位 V 友有什么好的建议吗?是不是我走的方向有点错误,不应该从直接解析 LaTeX 入手?还是说这个问题的复杂程度其实是我无法胜任的应该尽量改变需求?

意见的链接
分享到其他网站

加入讨论

您现在可以发表并稍后注册. 如果您是会员,请现在登录来参与讨论.

游客
回复主题...

×   粘贴为富文本.   粘贴为纯文本来代替

  只允许使用75个表情符号.

×   您的链接已自动嵌入.   显示为链接来代替

×   您之前的内容已恢复.   清除编辑器

×   您无法直接粘贴图片.要从网址上传或插入图片.

  • 游客注册

    游客注册

  • 会员

    没有会员可显示

  • 最新的状态更新

    没有最新的状态更新
  • 最近查看

    • 没有会员查看此页面.
×
×
  • 创建新的...