public void ShowData(string title, string message = null, string rightExpression = null, List <FormulaNode> userExpression = null)
 {
     Title.text = title.Trim();
     if (string.IsNullOrEmpty(message))
     {
         Detail.gameObject.SetActive(false);
     }
     else
     {
         Detail.gameObject.SetActive(true);
         Detail.text = message;
     }
     if (rightExpression == null)
     {
         ExpressionPanel.SetActive(false);
     }
     else
     {
         ExpressionPanel.SetActive(true);
         LatexEquationRender.Render(rightExpression, res =>
         {
             Expression.FitImage(res, 220, 50);
         });
     }
     if (userExpression == null)
     {
         FormulaControllerPanel.SetActive(false);
     }
     else
     {
         FormulaControllerPanel.SetActive(true);
         Formula.LoadFormula(userExpression);
         Formula.interactable = false;
     }
 }
    /// <summary>
    /// 异步校验表达式
    /// </summary>
    /// <param name="error"></param>
    public void Validate(UnityAction <bool, string> error)
    {
        var text = StringExpressionInput.text;

        Loading.SetActive(true);
        try
        {
            var sym  = CalcArgs.GetSymexpr(text);
            var list = new List <string>();
            GetAllFactors(sym, list);
            foreach (var item in RecordManager.tempRecord.quantities)
            {
                if (item.processMethod == 1)
                {
                    if (list.Contains("k_" + item.Symbol) || list.Contains("Δ" + item.Symbol))
                    {
                        Loading.SetActive(false);
                        error?.Invoke(false, $"直接计算的物理量{item.Name}不能使用变化量或变化率");
                        return;
                    }
                }
                else if (item.processMethod == 2)
                {
                    if (list.Contains("k_" + item.Symbol) || list.Contains(item.Symbol))
                    {
                        Loading.SetActive(false);
                        error?.Invoke(false, $"逐差法处理的物理量{item.Name}不能直接使用其测量平均值或变化率");
                        return;
                    }
                }
                else if (item.processMethod == 3 || item.processMethod == 4)
                {
                    if (list.Contains(item.Symbol) || list.Contains("Δ" + item.Symbol))
                    {
                        Loading.SetActive(false);
                        error?.Invoke(false, $"物理量{item.Name}不能直接使用其测量平均值或变化量");
                        return;
                    }
                }
            }
            LatexEquationRender.Render(sym.ToLaTeX(),
                                       action: _ =>
            {
                Loading.SetActive(false);
                var(res, message) = StaticMethods.ValidExpression(ExpressionToCalc(text));
                error?.Invoke(res, message);
            },
                                       errorHandler: () =>
            {
                Loading.SetActive(false);
                error?.Invoke(false, "表达式渲染失败");
            });
        }
        catch
        {
            Loading.SetActive(false);
            error?.Invoke(false, "表达式格式不正确");
        }
    }
Beispiel #3
0
    private void RenderFormula()
    {
        var tex = EnterExpression.ExpressionToShow(RecordManager.tempRecord.stringExpression);

        LatexEquationRender.Render(tex, res =>
        {
            FormulaImage.FitImage(res, 270, 40);
        });
    }
Beispiel #4
0
    public void Render()
    {
        var text = _Expression.text;

        LatexEquationRender.Render(CalcArgs.GetSymexpr(text).ToLaTeX(), x =>
        {
            _Image.FitHeight(x);
        });
    }
    /// <summary>
    /// 渲染合成量表达式图片
    /// </summary>
    public void Render()
    {
        var exp = CalcArgs.GetSymexpr(
            EnterExpression.ExpressionToShow(RecordManager.tempRecord.stringExpression))
                  .ToLaTeX();

        LatexEquationRender.Render(exp, x =>
        {
            _Image.FitImage(x, 270, 40);
        });
    }
    /// <summary>
    /// 渲染表达式
    /// </summary>
    public void Render()
    {
        var text = StringExpressionInput.text;

        if (string.IsNullOrEmpty(text))
        {
            LatexEquationRender.Render("expr.", LoadSprite);
        }
        else
        {
            LatexEquationRender.Render(CalcArgs.GetSymexpr(text).ToLaTeX(), LoadSprite);
        }
    }
 private void Start()
 {
     Instance = this;
 }
Beispiel #8
0
    private void ShowImage()
    {
        var latex = $@"{{\Delta {quantity.Symbol}}}=\frac{{\delta {quantity.Symbol}}}{{{quantity.DifferencedData.data.Count}}}";

        LatexEquationRender.Render(latex, res => previewImage.FitImage(res, 170, 40));
    }
Beispiel #9
0
 private void ShowImage()
 {
     LatexEquationRender.Render("y=a+bx", previewImage.FitWidth);
 }