CsGrafeq: 比 Desmos 更“能折腾”的几何函数画板(.NET + Avalonia)

CsGrafeq: 比 Desmos 更"能折腾"的几何函数画板(.NET + Avalonia)

一个由高中生独立开发的跨平台几何绘图与隐函数作图软件

GitHub:https://github.com/jyswjjgdwtdtj/CsGrafeq

当然不敢说"全面碾压",但在几何构造 + 隐函数绘图这条路线上,它确实更自由、更好玩,也更适合用来"探索"。



1. 项目一句话介绍

CsGrafeq 是一个面向学习与探索的几何草图工具:

你可以像在几何画板上一样进行点、线、圆等对象的构造与拖拽,也可以以高质量地绘制 隐函数图像 (例如 图1 exp(sin(x)+cos(y))=sin(exp(x+y))),用于数学学习、作图验证与直观理解。

关键词:跨平台 / 几何构造 / 隐函数绘图 / .NET / Avalonia


2. 我为什么要做这个(动机)

作为一个"货真价实"的学生,曾经也至少刷过百道平面几何大题,在学解析几何、圆锥曲线、函数图像时,经常遇到这些痛点:

  1. 图像不够直观:课堂常用的静态图难以感受参数变化带来的影响
  2. 工具门槛或平台限制:很多工具要么很老旧、要么只能在特定平台运行
  3. 想"动手做"但缺少合适的软件:既想画几何构造,又想把方程的图像画出来(尤其是隐函数)
  4. 功能落后:很多软件只能绘制一元函数,对断点、复杂结构等情况不够友好

所以我想做一个工具:

  • 开箱即用 适合学习
  • 跨平台(Windows / Linux / macOS 皆可)
  • 把几何构造与函数图像结合,让数学"可拖拽、可观察、可验证"

同时,这也是我学习软件工程与图形编程的一次完整实践:从需求、设计、实现、调试、优化到开源维护,尽量做成一个"像样的"项目。



3. CsGrafeq 能做什么(核心功能/使用场景)

下面是我希望 CsGrafeq 覆盖的主要场景(也欢迎大家提需求):

3.1 几何草图与构造

  • 点、线段、直线、圆等几何对象的创建与编辑
  • 拖拽点观察几何关系变化
  • 适合做:三角形性质验证、辅助线探索、作业验算、思路演示等

3.2 隐函数绘图(Implicit Function Plotting)

可以绘制类似下面这种形式的曲线/图形:

  • f(x, y) = 0
  • 例如:x^2 + y^2 - 1 = 0(单位圆)
  • 或更复杂的曲线,用于观察形状、交点、连通性等

很多"好看的曲线"无法写成形如 f(x)=...y=...,而是f(x,y)=0,或作为三维曲面的二维切片



tan(sin(x)+cos(y))=sin(tan(x+y))


4. 项目优势(我在意的点)

4.1 跨平台:一次开发,多端运行

本项目基于 .NET + Avalonia,目标是让它能在多个系统上运行,而不是把工具限制在单一平台。(虽然暂时因为没有解决也没有精力解决将表达式树编译为wasm的jit和安卓端java可执行的函数)

Avalonia 是一个跨平台 UI 框架,它让我可以用 C# 编写界面,并兼顾 Windows/Linux/macOS。

![platforms](https://img2024.cnblogs.com/blog/3653212/202605/3653212-20260509220401474-1019128907.jpg" width="50%">

(至少有计划不是吗【手动狗头】)

4.2 交互优先:为了"学习"和"探索"

我做这个工具不是为了堆一堆菜单功能,而是想做到:

  • 操作直观
  • 拖拽反馈及时
  • 让使用者能"玩"出数学直觉

4.3 开源:欢迎围观、提建议、一起改

项目已开源在 GitHub,欢迎:

  • 提 Issue:反馈 bug / 提需求
  • 点 Star:给我一点继续优化的动力
  • 提 PR:如果你也想参与实现某个功能(我也很想学习协作流程)

GitHub:https://github.com/jyswjjgdwtdtj/CsGrafeq


5. 作为高中生做这个项目,我想表达什么

很多人觉得"学生写软件"离自己很远,但这个项目从初中开始构思,经过数年从基础脚本,到更高级的语言,与一年多的功能开发、界面打磨、修 bug、做优化,我也从"会写点脚本"成长为更成熟的开发者。

在做这个项目的过程中,最大的收获是:

  • 学会把一个想法拆成可执行的任务
  • 学会调试与迭代:不是一次写完,而是不断改进
  • 学会写"能被别人使用"的东西,而不只是跑通 demo
  • 更重要的是:我发现只要愿意投入时间,做出一个真实可用的工具并不是遥不可及的事

如果你也是学生(或者正在自学编程/数学),希望这个项目能给你一点点启发:
不要只停留在"我想做",把它做出来,你就赢了一大半。

代码量:


6. 下载与使用


7. 未来计划(Roadmap)

我接下来想继续完善的方向包括(先列一些你愿意做/正在做的):

  1. 更多几何约束/构造工具(平行、垂直、中点、角平分线等)
  2. 提升性能(如使用GPU渲染,尽管目前发现似乎不如CPU快)
  3. 导出图片/导出文件(目前存在一些问题)
  4. 更友好的参数与表达式输入体验(比如"原生数学公式"的渲染式输入 但这几乎是一个全新的高难度项目;我在某个老版本做过一个体验不太好的尝试)

8. 最后:如果你觉得有意思

  • 欢迎点个 Star:https://github.com/jyswjjgdwtdtj/CsGrafeq
  • 欢迎提 Issue:告诉我哪里不好用、哪里可以改
  • 如果你是同学/老师,也欢迎拿去课堂演示或学习使用(我会很开心)

当初中生在手搓发动机,jumping在主=6时,的的确确有中学生能用课余时间做出一个正儿八经的项目!

谢谢你看到这里!