From: asiga <asi...@ya...> - 2015-07-09 12:03:52
|
Hi, I need to render LaTeX math formulas on mobile apps (iOS/Android), with high quality, and as efficiently as possible. I'm considering matplotlib as the best candidate at the moment. Maybe it might be a bit overkill because I don't need plotting, just math formulas rendering, but it has a "copycenter" license (very welcome when you target iOS), and it seems to render LaTeX math with high quality. So I think it beats other options I found (MathGL: copyleft license; and MathJax: setting a complete Javascript engine just for rendering math does seem overkill to me). However, I still have some doubts before choosing matplotlib: 1) Can I redirect the output of math rendering to OpenGL calls, or convert it into a 2D triangle mesh for example? (if the drawing commands issued by matplotlib when rendering math are a relatively small set, I can translate them to OpenGL myself, but I need to know where should I do that translation (I've zero idea about matplotlib internals, and I'm a Python newbie -I'm here because I need math rendering, not because I use Python). (note that I wish to render through OpenGL because I want to be able to interactively pan and zoom math very efficiently: the best approach would be to cache the matplotlib output as a -for example- 2D triangle mesh, and then just send the triangles to OpenGL, without having to call matplotlib on each screen redraw, which would kill performance) 2) In order to get matplotlib running as efficient as possible on mobile devices, would you recommend that I translate matplotlib to C/C++ using any of the translators available? If affirmative, what translator would you suggest me to use? Thanks a lot!! -- View this message in context: http://matplotlib.1069221.n5.nabble.com/Efficient-matplotlib-use-on-iOS-and-Android-apps-tp45901.html Sent from the matplotlib - users mailing list archive at Nabble.com. |
From: Benjamin R. <ben...@ou...> - 2015-07-09 14:46:42
|
why not use MathJax? On Thu, Jul 9, 2015 at 8:03 AM, asiga <asi...@ya...> wrote: > Hi, > > I need to render LaTeX math formulas on mobile apps (iOS/Android), with > high > quality, and as efficiently as possible. > > I'm considering matplotlib as the best candidate at the moment. Maybe it > might be a bit overkill because I don't need plotting, just math formulas > rendering, but it has a "copycenter" license (very welcome when you target > iOS), and it seems to render LaTeX math with high quality. So I think it > beats other options I found (MathGL: copyleft license; and MathJax: setting > a complete Javascript engine just for rendering math does seem overkill to > me). > > However, I still have some doubts before choosing matplotlib: > > 1) Can I redirect the output of math rendering to OpenGL calls, or convert > it into a 2D triangle mesh for example? (if the drawing commands issued by > matplotlib when rendering math are a relatively small set, I can translate > them to OpenGL myself, but I need to know where should I do that > translation > (I've zero idea about matplotlib internals, and I'm a Python newbie -I'm > here because I need math rendering, not because I use Python). > > (note that I wish to render through OpenGL because I want to be able to > interactively pan and zoom math very efficiently: the best approach would > be > to cache the matplotlib output as a -for example- 2D triangle mesh, and > then > just send the triangles to OpenGL, without having to call matplotlib on > each > screen redraw, which would kill performance) > > 2) In order to get matplotlib running as efficient as possible on mobile > devices, would you recommend that I translate matplotlib to C/C++ using any > of the translators available? If affirmative, what translator would you > suggest me to use? > > Thanks a lot!! > > > > > > -- > View this message in context: > http://matplotlib.1069221.n5.nabble.com/Efficient-matplotlib-use-on-iOS-and-Android-apps-tp45901.html > Sent from the matplotlib - users mailing list archive at Nabble.com. > > > ------------------------------------------------------------------------------ > Don't Limit Your Business. Reach for the Cloud. > GigeNET's Cloud Solutions provide you with the tools and support that > you need to offload your IT needs and focus on growing your business. > Configured For All Businesses. Start Your Cloud Today. > https://www.gigenetcloud.com/ > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > |
From: asiga <asi...@ya...> - 2015-07-10 08:37:53
|
Why do you suggest MathJax? I assume Javascript will be less efficient than Python. Moreover, I'm not sure I can get the MathJax output as polygonal primitives that I can send to OpenGL. And, to complicate things, you cannot use JIT Javascript engines on iOS such as V8, due to sandboxing. In fact, I'm considering to build myself a minimal LaTeX distro. Maybe that would be the best option. -- View this message in context: http://matplotlib.1069221.n5.nabble.com/Efficient-matplotlib-use-on-iOS-and-Android-apps-tp45901p45914.html Sent from the matplotlib - users mailing list archive at Nabble.com. |
From: Benjamin R. <ben...@ou...> - 2015-07-10 15:02:19
|
The way matplotlib does its MathText rendering is 1) incomplete (we don't support all of MathTex), and 2) has *massive* overhead (relatively speaking). Matplotlib is intended for producing figures with many disparate components. The amount of code it takes to just generate a simple plot is fairly significant (along with also firing up a python interpreter). Meanwhile, MathJax is much lighter in the sense that all it needs to do is parse a string and render out font characters. As for matplotlib vs. MathJax, you will likely sending bitmaps to OpenGL (if possible) anyway because that is pretty much what you will need to do with matplotlib as well as MathJax. It is technically possible to obtain the stroke data to send the font lines to OpenGL, but it will not look the same as it would if you let a font renderer generate the bitmap. There are a few reasons why matplotlib does not have an OpenGL backend yet, one of them is because OpenGL does a terrible job in rendering text. This is not to say that what you are thinking of doing is impossible to do. It may be quite possible, but given that no one (that I am aware of) have managed to get matplotlib running on a mobile OS, you have a huge undertaking ahead of you just to get started. And, once you get there, it is quite likely that the performance won't be what you need. In addition, you might not like the resulting render. More power to you if you can get it working, and I know many people who are interested in getting that stack working on tablets and such. On the other hand, there are plenty of documentation on how to build mobile apps that take advantage of javascript-based technologies. Your startup cost is very low here. And given that you will likely going to need to use bitmaps anyway, it might not be all that bad of an option. I have no clue what the performance penalty of firing up a javascript renderer on a mobile OS, but in the face of the unknown, I avoid guessing. Don't fall victim to premature optimization. I have been very surprised at how fast certain (slow) technologies can be. A minimalist LaTeX distro is an intriguing idea. I have no clue how much effort it would take to do that, but that may be quite feasible. Best of luck to you, and I look forward to finding out what you manage to get working. Cheers! Ben Root On Fri, Jul 10, 2015 at 4:37 AM, asiga <asi...@ya...> wrote: > Why do you suggest MathJax? I assume Javascript will be less efficient than > Python. Moreover, I'm not sure I can get the MathJax output as polygonal > primitives that I can send to OpenGL. And, to complicate things, you cannot > use JIT Javascript engines on iOS such as V8, due to sandboxing. > > In fact, I'm considering to build myself a minimal LaTeX distro. Maybe that > would be the best option. > > > > > > -- > View this message in context: > http://matplotlib.1069221.n5.nabble.com/Efficient-matplotlib-use-on-iOS-and-Android-apps-tp45901p45914.html > Sent from the matplotlib - users mailing list archive at Nabble.com. > > > ------------------------------------------------------------------------------ > Don't Limit Your Business. Reach for the Cloud. > GigeNET's Cloud Solutions provide you with the tools and support that > you need to offload your IT needs and focus on growing your business. > Configured For All Businesses. Start Your Cloud Today. > https://www.gigenetcloud.com/ > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > |