2013-04-14 1 views
6

Mi chiedevo se esiste un modo semplice per implementare il rendering delle equazioni matematiche in un'app iOS. Non deve essere interattivo. Tutto ciò che dovrebbe fare è visualizzare l'equazione in modo tradizionale, così quando l'utente ha a che fare con equazioni complesse rende più facile seguirlo.Render equazioni matematiche in iOS

ex. 2^(2/(6^(1/2))) restituisce: Example output

Wolfram Alpha esegue questa operazione insieme ad altre app che ho visto. Non ha nemmeno a che fare con le variabili.

+1

Dai un'occhiata a questo: http://stackoverflow.com/questions/2907045/drawing-formulas-with-quartz-2d –

+0

@Tom, SirKaydian vuole un modo _easy_, e disegnare le formule con Quartz2D è, come Brad risponde , "non un'impresa banale" .. – foundry

+1

@ RichardJ.RossIII, non considererei questo come un duplicato, la tua domanda collegata è stata posta nel 2010 e auto-an ha oscillato nel 2011, prima dell'avvento del MathML su iOS5 – foundry

risposta

3

Un UIWebView può visualizzare mathML da iOS5. Il tuo esempio:

<math title="2^(2/(sqrt(6))" xmlns="http://www.w3.org/1998/Math/MathML"> 
    <mstyle mathcolor="blue" fontfamily="sanserif" displaystyle="true"> 
    <msup> 
     <mn>2</mn> 
     <mrow> 
     <mfrac> 
      <mn>2</mn> 
      <mrow> 
      <msqrt> 
       <mrow> 
       <mn>6</mn> 
       </mrow> 
      </msqrt> 
      </mrow> 
     </mfrac> 
     </mrow> 
    </msup> 
    </mstyle> 
</math> 

Questo render in UIWebView su iOS.

Ci sono librerie JavaScript in grado di convertire per voi - per esempio mathjax può accettare ASCIIMath ingresso come nell'esempio 2^(2/(sqrt (6))

C'è una buona discussione di questi problemi qui Tradeoff between LaTex, MathML, and XHTMLMathML in an iOS app?

+0

Ma manca un passaggio qui - ora avrete bisogno di una libreria per convertire un'equazione 'semplice' da '2^(2/(6^(1/2))) 'al suo equivalente MathML. –

+0

@ RichardJ.RossIII Ho modificato solo 6^(1/2) in sqrt (6) - il primo renderà "correttamente" mettendo "0.5" in apice di 6. Questa è una decisione dell'autore umano tanto quanto qualsiasi cosa (e forse la matematica lo renderebbe comunque con un simbolo sqrt, non l'ho provato) ... – foundry

1

Per le espressioni semplici, il modo più semplice è probabilmente utilizzare l'HTML e visualizzare l'espressione in un UIWebView. Ciò funzionerà particolarmente bene se la parte dell'espressione di altri contenuti può essere visualizzata anche utilizzando l'HTML.

+1

La difficoltà con questo è che le soluzioni JavaScript possono essere lente su dispositivi precedenti e UIWebViews in genere non sono conosciuti per le loro buone impronte di memoria. Queste limitazioni sono diminuite con i nuovi dispositivi, ma non lo consiglierei di impazzire con UIWebViews. –

+0

@ RichardJ.RossIII Accetto. D'altro canto, l'utilizzo di una visualizzazione Web è molto più semplice rispetto all'immersione in Core Text e alla scrittura della propria libreria di rendering matematici. Javascript non ha davvero bisogno di essere un fattore a meno che non si scelga di usare una libreria Javascript per aiutare con il rendering. – Caleb