更新记录

1.1.0(2023-11-06)

修复平面向量、空间向量、二维矩阵与数值乘法求值不正确的bug; 支持平面向量、空间向量、二维矩阵的 *= 运算; 支持字符串长度属性(.size/.length); 支持字符串求子串方法.substr(from, length);

1.0.9(2023-10-31)

修复数组元素复制时,传值/传引用自动判别错误的bug;

1.0.8(2023-10-30)

解决连续转义字符解析不正确的bug; 为数组增加双端队列、双端堆栈接口; ary = [1, 2, 3, 4]; ary.push_back(99); //尾部入栈,返回ary新的长度 ary.pop_back(); //尾部出栈,返回出栈元素 ary.push_front(99); //头部入栈,返回ary新的长度 ary.pop_front(); //头部出栈,返回出栈元素

查看更多

平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 3.1.0 app-vue app-nvue
钉钉小程序 快手小程序 飞书小程序 京东小程序
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari

xuhua-MathExpRelease

微信小程序体验码

优美绘-小程序-超级计算器-小程序码

1 使用方法

1.1 引入及调用


import { MathExp } from "@/uni_modules/xuhua-MathExpRelease/js_sdk/MathExp.js"

var mathExp = new MathExp();

mathExp.eval(`
    f(x) = sin(x);
`);

mathExp.eval(`
    a = f(45 * PI / 180);
`);

var res = mathExp.eval(`
    [a, sin(30), f.x];  //末尾的分号一定要加
`);

res = mathExp.eval(`
    【a, sin(30), f。x】;  //支持中文符号,方便移动端输入
`);

if (res.succ) {
    console.log(res);
}

1.2 运行结果


res = {
    result: [0.7071067811865475, -0.9880316240928618, 0.7853981633974483],
    succ: true
}

2 脚本语法

2.1 语句结尾需要加分号


x = 1;
str01 = "Hello World !!!";

2.2 注释


//单行注释

/*
多行注释
多行注释
*/

2.3 变量定义


var a01 = 99;   //本地变量定义
var i = 0, j = 1;   //本地变量定义

a02 = 99.99;    //变量赋值,如果上层作用域不存在,则创建本地变量

x = y = z = 10; //连续初始化

b = "Hello World !!!";
b.size;     //字符串长度
b.length;   //字符串长度

for (var i=j=0; i<b.length; ++i) {
    // i 为for循环局部变量
    // j 如果上层作用域不存在,则创建for循环局部变量
}

2.4 数组和矩阵

2.4.1 数组定义


ary = [1, 2, 3];    //一维数组

m1x2 = [ [1, 2] ];  //二维矩阵,一行两列
m2x3 = [
    [666, 12, 13],
    [21, 22, 23]
];

m2x3[0][0] = 11;    //666 -> 11

m2x3.size;  //-> 2
m2x3.length;    //-> 2
m2x3[1].size;   //-> 3

//双端队列、双端堆栈接口
ary.push_back(99);  //尾部入栈,返回ary新的长度
ary.pop_back();     //尾部出栈,返回出栈元素

ary.push_front(99); //头部入栈,返回ary新的长度
ary.pop_front();    //头部出栈,返回出栈元素

2.4.2 向量叉乘


//平面向量叉乘
a = [1, 2];
b = [3, 4];
a * b;  // => 结果:-2
b * a;  // => 结果:2

//空间向量叉乘
c = [1, 0, 0];
d = [0, 1, 0];
c * d;  // => 结果:[0, 0, 1]
d * c;  // => 结果:[0, 0, -1]

2.4.3 二维矩阵乘法


// 2 * 3 矩阵
A = [
    [1, 2, 3],
    [3, 2, 1]
];

// 3 * 2 矩阵
B = [
    [1, 1],
    [2, 2],
    [3, 3]
];

// 结果:2 * 2 矩阵
A * B;

=> 结果:
[
    [14, 14],
    [10, 10]
]

2.5 函数定义


f(x) = 16 * sin(x + 1) + 8;

g(x, y) = {
    z = f(x) + sin(y);
    return z;
}

f.x;    //访问 f 函数内部变量 x
g.z;    //访问 g 函数内部变量 z

2.6 分支 if 语句


c = 0;
if (a > b) {
    c = a;
} else {
    c = b;
}

2.7 分支 switch 语句


c = 0;
switch (a) {
    case 0:
        c = 10;
        break;
    case 10:
        c = 20;
        break;
    default:
        c = 100;
}

2.8 循环语句 for


for (var i=0; i<10; ++i) {
    if (i == 5) continue;

    print("第 " + (i+1) + "次\n");

    if (i == 8) break;
}

2.9 运算符


//数学运算
加减乘除:+ - * /, +=, -=, *=, /=
取模:x % 2, %=
乘方:x^2, ^=
阶乘:3!
自增自减:++x, x++, --x, x--

逻辑运算:&&, ||, !, ==, !=, >, >=, <, <=

三目运算:a > b ? a : b

位运算:&, |, ~, &=, |=, xor(a, b), >>, <<, >>=, <<=

2.10 内部常量


E = 2.718281828459045
PI = 3.141592653589793

2.11 内部函数


abs(x):     求绝对值
floor(x):   求不大于x的整数
ceil(x):    求不小于x的整数
round(x):   四舍五入

sqrt(x):    求x的平方根
exp(x):     求自然底数E的x次方
log(x):     求以E为底的自然对数

sin(x):     求x弧度的正弦
cos(x):     求x弧度的余弦
tan(x):     求x弧度的正切
asin(x):    求x弧度的反正弦
acos(x):    求x弧度的反余弦
atan(x):    求x弧度的反正切,结果范围[-PI/2 ~ PI/2]

random():   求随机数,范围[0 ~ 1]
xor(x, y):  求x和y的按位亦或

length(x):  求向量的长度
normalize(x):   求向量x的归一化向量
dot(m1, m2):    求向量m1和m2的点乘积

print(x):   打印x的值,内部为console.log(x)

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问