该软件用于将数学表达式以图形的形式显示出来.软件中定义一套简单易学的脚本语言,用于描述数学表达式.使用时需要先要将数学表达式写成该脚本的形式,解析脚本代码以生成相应的图形.能够生成曲线图形和曲面图形. 目前只能处理显示表达式.
(1)主界面

在文件夹” MathScript”中,提供了500个以上已经写好的数学表达式脚本文件.将数学脚本文件拖入到主界面中,即显示其图形.亦可以通过菜单项打开脚本文件.

如果图形是一个3D图形,那么软件会自动为你切换到3D显示模式.使用鼠标右键拖动,以旋转视角.键盘上的WSAD,QERF,上下左右也对视角进行控制.这个不细讲了,用户自己去体验吧.如果图形是一个2D图形,打开时为二维显示模式,用户可以按下键盘上的’O’键,在3D,2D间进行切换.鼠标滚轮可以对视口进行缩放.
下图为一个二维的视图:

按下键盘上的’U’键,会在左边显示一套UI控件:

用于对一些显示属性的操作.可惜我的引擎目前不支持中文字体,所以先将就着用吧.
按下键盘上的’0’键,会在右边显示一个纹理选择控件,用于设置数学曲面的纹理:

UI面板上的
也可以控制纹理选择控件.
纹理文件存放在” Texture”文件夹下,用户可以将自己喜欢的图像文件放入其中.软件会自动为你加载.用户亦可以直接将图像文件拖入到主界面中.对图像格式的支持包括: dds,bmp,jpg,png,gif,tga.
当打开一个数学图形后,按下键盘上的’7’键,会显示一个滑动条控件,用于控制所显示的图形范围. 控件
也可以.滑动条上有两个滑块,分别表示其显示范围的最小与最大,如下图:黄线处为显的区域,绿线处为未显示的区域.
最小滑块与最大滑块可以错开:
下图为对曲面图形的操作

下图为对曲线图形的操作:

当打开一个数学曲面图形后, 按下键盘上的’P’键或点下
会在右下角显示两个对曲面上曲线进行操作的控件.

如下图所展示:

图中绿色曲线为第一维度的曲线,红色曲线为第二维度的曲线.
MathExpression模块中为数学表达式及脚本解析的代码逻辑.
(1)主要接口
文件”math_expression_parser.h”提供了对表达式的解析函数
// 设置参数值
void SetParameterValue(char c, float value);
// 清空参数值
void ClearParameterValues();
// 表达式解析
bool ParseExpression(const char* szExpression, float& rst);
// 括号内的子表达式解析
bool ParseBracketExpression(const char* szExpression,
unsigned int& pos, float& rst,
unsigned int bracketIndex, bool endComma);
可以针求独立表达式的结果,如:
bool sus = ParseExpression(“sin(PI*3) + 10*E*log(100)”, rst);
文件”math_script_parser.h”提供了一个对象MathScriptParser,用于对数学脚本的解析
class MathScriptParser
{
public:
...
// 加载脚本文件
bool LoadFile(const char* szFile);
// 处理内存数据
bool ProcessMemory(const char* bufPtr, unsigned int bufSize);
...
};
(2)添加或设置常量值
开发者可以通过”const_value.h”文件中的如下函数对常量进行添加或修改
// 添加或设置常量值
bool SetConstValue(const char* szName, float value);
(3)添加或设置函数运算符
程序中的运算符操作是以函数指针的方式使用,开发者可以将自己实现的函数设置到系统中.
有6种运算符函数类型
// 单目运算函数
typedef float (*SINGLE_OPERATOR_FUNC)(float);
// 双目运算函数
typedef float (*TWIN_OPERATOR_FUNC)(float, float);
// 三目运算函数
typedef float (*THREE_OPERATOR_FUNC)(float, float, float);
// 四目运算函数
typedef float (*FOUR_OPERATOR_FUNC)(float, float, float, float);
// 对ValueNode的运算函数(输入ValueNode,输出一个浮点数)
typedef float (*VALUENODE_TO_FLOAT_OPERATOR_FUNC)(const ValueNode*);
// 对ValueNode的运算函数(输入ValueNode,输出ValueNode)
typedef void (*VALUENODE_CONVERT_OPERATOR_FUNC)(const ValueNode*, ValueNode*);
开发者可自定义运算函数后,使用如下接口,将其添加到系统中.
// 添加或设置运算函数
bool SetSingleOperator(const char* szName, SINGLE_OPERATOR_FUNC func);
bool SetTwinOperator(const char* szName, TWIN_OPERATOR_FUNC func);
bool SetThreeOperator(const char* szName, THREE_OPERATOR_FUNC func);
bool SetFourOperator(const char* szName, FOUR_OPERATOR_FUNC func);
bool SetValueNodeToFloatOperator(const char* szName, VALUENODE_TO_FLOAT_OPERATOR_FUNC func);
bool SetValueNodeConvertOperator2(const char* szName, VALUENODE_CONVERT_OPERATOR_FUNC func);
需要注意这两个宏:
#define OPERATOR_NAME_LENGTH 24 // 操作符名的最大长度
#define MAX_FUNCTIONS_COUNT 256 // 运算函数的最大数目
如果不满足要求,请自己修改这两个宏值
代码中的Integraller模块为额外添加的数学函数.
在文件MathGraph.cpp中将额外的数学函数注册到系统中:
void CMathGraph::SetupIntergralFunctions()
{
Why::SetTwinOperator("Trapezia", TestTrapezia);
Why::SetTwinOperator("Simpson", TestSimpson);
Why::SetTwinOperator("ATrapezia", TestATrapezia);
Why::SetTwinOperator("Romberg", TestRomberg);
Why::SetTwinOperator("ValuePq", TestValuePq);
Why::SetTwinOperator("LegdGauss", TestLegdGauss);
Why::SetSingleOperator("Gamma", YfGamma);
Why::SetTwinOperator("Gamma2", YfGamma2);
Why::SetSingleOperator("Erf", YfErf);
Why::SetThreeOperator("Beta", YfBeta);
Why::SetThreeOperator("Gass", YfGass);
Why::SetTwinOperator("Student", YfStudent);
Why::SetTwinOperator("Chii", YfChii);
Why::SetThreeOperator("Fdisp", YfFdisp);
Why::SetSingleOperator("Sinn", YfSinn);
Why::SetSingleOperator("Coss", YfCoss);
Why::SetSingleOperator("Expp", YfExpp);
}
开发者其他应用

讯飞文档app官方版25.2M13484人在玩讯飞文档app官方下载2022最新版是科大讯飞公司打造的一款在线协作文档软件,这款讯飞文档app跟腾讯文档的功能有点类似,都可以让团队在线上进行协作。
下载
腾讯会议官方版app90.7M14041人在玩腾讯会议官方最新版app专门为需要在线线上会员的小伙伴准备的非常实用的app工具,支持电脑移动端同步,给需要开会你带来最棒的办公体验,相信不少的小伙伴都会需要
下载
2022货车帮货主版app140.8M17149人在玩货车帮货主是成都运力科技有限公司旗下物流智能分配货运平台,覆盖全国360多个城市的物流货运平台,是一款为全国各地货主提供经验丰富、安全可靠的货车司机的找车发货软件。
下载
招才猫直聘官方app67.6M7290人在玩招才猫直聘是由58同城推出的商业直聘专用APP,全国1850万商家都在使用招才猫直聘!海量各个领域人才等你来发现、挖掘,你可以在58招财猫官网上看到人家的详细资料。
下载
口碑外卖商家版75.1M87人在玩口碑外卖掌柜是淘宝为入驻口碑外卖的商家提供的一款手机客户端,商家们可以通过口碑掌柜客户端查看店铺的最新订单并对自己的店铺进行管理,有新的订单软件会以语音的形式提醒你接单
下载
易企秀设计app43.7M7599人在玩易企秀设计app是一款免费的移动场景自营销管家工具,这款易企秀设计app可以帮你免费制作各类手机h5营销类应用,另外这款易企秀设计app还可以帮你查看手机网页的访问量。
下载
美团外卖商家版117.2M19211人在玩美团外卖商家版是美团外卖专门为商家们打造的一款手机客户端。如果你是入驻美团外卖的商家,那么你可以在这里更好地管理你的商铺,美团外卖商家版app轻松地查看用户的下单信息。
下载
易企秀设计44.8M170人在玩易企秀是一款专门为企业打造的微信辅助类应用,你可以通过易企秀设定微信页面的场景、颜色、文字版式等等,还可以通过它查看网页的访问量以及潜在客户报名等等消息。
下载
boss直聘招聘版手机版123.8M5450人在玩boss直聘招聘版手机版是一款用相亲交友的方式做招聘,让老板和求职者在平台上直接沟通的社交软件。Boss直聘分为面向求职者的”牛人版“和面向老板的”Boss版“。
下载
饿了么商家版最新版本134.7M8390人在玩饿了么商家手机客户端是饿了么外卖网为入驻商家提供的一款手机客户端软件,这款应用可以帮助商家使用手机快速接单,部分应用要求用户时时打开应用界面才能接收订单消息推送。
下载