西西软件园多重安全检测下载网站、值得信赖的软件下载站!
西西首页 常用软件 软件下载 安卓软件 游戏下载 安卓游戏 MAC应用 驱动下载 安卓电视
系统工具网络工具媒体工具图形图像聊天工具应用软件编程开发手机软件安卓应用电脑安全字体素材

WHY数学表达式可视化工具

v1.0 绿色版
  • WHY数学表达式可视化工具v1.0 绿色版
  • 软件大小:8.8M
  • 更新时间:2014-08-04 16:26
  • 软件语言:中文
  • 软件厂商:
  • 软件类别:国产软件 / 免费软件 / 行业软件
  • 软件等级:4级
  • 应用平台:WinAll, Win7
  • 官方网站:http://www.cr173.com
好评:50%
坏评:50%

软件介绍

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

软件介绍

(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);

}

软件标签: 表达式

软件截图

WHY数学表达式可视化工具 v1.0 绿色版

    其他版本下载

    热门评论

    最新评论

    发表评论 查看所有评论(0)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)

    下载帮助下载帮助西西破解版软件均来自互联网, 如有侵犯您的版权, 请与我们联系。

    TOP
    软件下载