| <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
| <html> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
| <title>Ray Simulation Analysis on the NetBeans Platform </title> |
| <link type="text/css" rel="stylesheet" media="all" href="../../../netbeans.css" /> |
| </head> |
| <body> |
| <h1>Ray Simulation Analysis on the NetBeans Platform </h1> |
| <p>Published on <a href="http://netbeans.dzone.com/">NetBeans Zone</a> by Geertjan Wielenga</p> |
| <p><br /></p> |
| <p> |
| <img src="../../../images_www/articles/interviews/ray-simulation-analysis/rapsor-1.png" |
| style="float:right;margin-left:10px"> |
| <em><a href="http://sourceforge.net/projects/rapsor/">RaPSor</a> |
| (Radio Propagation Simulator) is a framework for studying and testing |
| algorithms for ray based simulations, particularly in the area of radio |
| communication. This is an interview with its author, |
| Lilian Aveneau. Lilian is an associate professor (Maître de |
| Conférences) in computer science at the |
| <a href="http://en.wikipedia.org/wiki/University_of_Poitiers">University of Poitiers</a>, |
| where he works in the XLIM/SIC laboratory. His research area is |
| computer graphics, focusing specifically on 3D visibility and rendering |
| with ray methods, together with their usage in the context of radio |
| communication.</em> |
| </p> |
| <p><br /></p> |
| <h2>What's RaPSor's problem domain?</h2> |
| <p> |
| RaPSor is a platform based on the NetBeans Platform. It is used for studying |
| and testing algorithms for ray based simulations, mainly for radio |
| communication channel characterisations. |
| </p><p> |
| However, this kind of problem is not specific to radio problematics. A "ray" approach can be |
| used in computer graphics for image rendering using ray tracing |
| algorithms. Similarly, it is used in radio communication for coverage |
| simulation and prediction, even though some obvious specifics relate to |
| this scenario. For example, diffraction (scattering) is important in |
| radio communication, as well as specular reflection. Moreover, rays can |
| be used in acoustics for sound simulation in an architectural model, |
| such as when developing a new theatre or cinema project. And so on. |
| </p> <p> |
| For all these domains, a ray simulation is always based on some geometrical |
| recurrent constraints, which are solved using common knowledge. This is |
| the case in environment modelling, both for geometrical and topological |
| aspects and visibility (e.g., "Which surface is first intersected?" |
| "Are two given points occluded or visible to each other?"). These |
| questions imply an architectural design with ray optimizations. |
| </p> |
| <h2>That's very interesting. How did you come to create this application?</h2> |
| <p> |
| During my PhD thesis, from 1996 to 1999, I worked in both areas of computer |
| graphics and radio communication. The difference between these areas |
| relates mainly to the wavelength domain. |
| </p><p> |
| Then I began to develop two applications, one for computer graphics and one for radio |
| communication, using a common ray kernel written in C. These |
| applications are used by various people in production and in different |
| environments (Linux, IRIX, Windows). |
| </p><p> |
| When these users wanted to add new features relating to their research problematics, several |
| problems occured. Firstly, the application had to be compiled on the |
| various systems with different "glibc" versions, for each new user. |
| Secondly, the radio scientists had difficulties with computer science |
| and collaborative development, since they made modifications in their |
| local source code. Hence, we were not able to regroup all these |
| modifications into a single application. |
| </p><p> |
| For these reasons, I decided to begin a new application, |
| named RaPSor, with some specific design goals: |
| </p> |
| <ul><li> Modularity</li></ul><ul><li>Portability</li></ul><ul><li>Extensibility</li></ul> |
| <p> |
| A first version was developed in 2006, using new algorithms for the |
| kernel (since that's a great occasion to do new things, isn't it :-)). |
| I chose Java as the language, of course, firstly for its portability |
| and secondly for its simplicity (since radio users do not really |
| understand the unistd brk() function, do they? :-)). |
| </p><p> |
| At the same time, a student project was being developed using the NetBeans |
| Platform. It was named RenderTux and was a framework for GLSL shader |
| development and testing. Even though this student project ended up as a |
| profound disaster, it enabled me to look at NetBeans in a new way. I |
| began to learn more about it and then I moved the project to the |
| NetBeans Platform. This greatly simplified the modularity and |
| extensibility aspects of the project. |
| </p> |
| <h2>Let's see some screenshots!</h2> |
| <p> |
| OK. One thing we're doing is experimenting with a new Antenna model, which |
| is developed by another laboratory. We simulate the Antenna model in an |
| <a href="http://en.wikipedia.org/wiki/Anechoic_chamber">anechoic chamber</a>. |
| The receiver locations used in the real world are reproduced in this scene. |
| Only one big object, a metallic block, can be |
| seen in this context. Hence, only reflections and simple diffractions can |
| occur, as can be observed in these two screenshots: |
| </p> |
| <p><img src="../../../images_www/articles/interviews/ray-simulation-analysis/rapsor-6.png"></p> |
| <p><img src="../../../images_www/articles/interviews/ray-simulation-analysis/rapsor-2.png"></p> |
| <p> |
| The next two screenshots are, respectively, a 3d and a 2d view |
| of the same simulation. The simulations are in cover mode, which is a regular grid of receivers, |
| with a 1cm space interval between each receiver location. |
| </p> |
| <p><img src="../../../images_www/articles/interviews/ray-simulation-analysis/rapsor-3.png"></p> |
| <p><img src="../../../images_www/articles/interviews/ray-simulation-analysis/rapsor-4.png"></p> |
| <h2>How was the decision made to use the NetBeans Platform?</h2> |
| <p> |
| Ho, that's a great question. It was a July, a Saturday afternoon. I was |
| reading, on my terrace, the French translation of a wonderful John |
| Irving book, <a href="http://www.sun.com/books/catalog/rich_client_programming.xml">"The Fourth Hand"</a>, while listening to <a href="http://en.wikipedia.org/wiki/Hamlet_%28opera%29">the great Hamlet opera by Ambroise Thomas</a>. Then, though I think there was no correlation with <a href="http://www.natalie-dessay.com/">Natalie Dessay</a> or <a href="http://www.simonkeenlyside.info/">Simon Keenlisyde</a>, |
| a cloud began to rain on me. So I walked back inside while thinking |
| "and now, what should I do with my weekend?" (in french: "et |
| maintenant, bordel, je fais quoi ?"). I do not remember exactly why, |
| but it was at that precise moment that I decided to move RaPSor to the |
| NetBeans Platform. |
| </p> |
| <h2>Wow. Really?</h2> |
| <p> |
| No, in fact I do not remember how the decision was made. One day I decided to |
| do so and now it is done. But I like Irving, Thomas, and so on, so the |
| above is all true. ;-) |
| </p> |
| <h2>What are 3 things that you found very useful about using the NetBeans Platform?</h2> |
| <p> |
| Three things? Probably many things can be cited. May be the most useful are:</p> |
| <ul><li> |
| <b>Lookup</b>. Allows the user interface to automatically find user add ons. |
| </li><li> |
| <b>Autoupdate</b>. Allows me to send RaPSor kernel updates in the same way as NetBeans IDE does. |
| </li><li> |
| <b>Wizards & templates in NetBeans IDE.</b> Facilitates module integration to the RaPSor (and so the NetBeans) platform. |
| </li><li> |
| <b>Ease of extending NetBeans IDE with new tools.</b> Simplifies |
| NetBeans Platform application development. Three kinds of things users |
| can add to RaPSor in this way: Antennas, Simulators, and Exploitations. |
| </li></ul> |
| <h2>Let's see another screenshot!</h2> |
| <p> |
| OK. Below you see an indoor simulation in a real environment, the <a href="http://www.ester-technopole.org/">Esther building at |
| Limoges</a>. You can see we're using reflection and transmission at 2.5Ghz. Roughly speaking, |
| this could be seen as a Wifi simulation. |
| </p> |
| <p><img src="../../../images_www/articles/interviews/ray-simulation-analysis/rapsor-5.png"></p> |
| <p> </p> |
| <h2>What are some things that could be better about the NetBeans Platform?</h2> |
| <p> |
| From my experience, it's very easy to begin with the NetBeans Platform, but |
| we quickly became embarrassed with the many how-to-do problems we |
| encountered. |
| </p><p> |
| It is a big platform, with an API that must be |
| studied in order for it to be used. For instance, I'm not sure I really |
| understand how the DataObject/FileObject/File structure really works. |
| </p><p> |
| More generally, my main documentation is the book <a href="http://www.sun.com/books/catalog/rich_client_programming.xml">"Rich Client Programming: Plugging into the NetBeans Platform</a>, |
| the second half of which contains a lot of information for dedicated |
| users who want to add new language support to NetBeans IDE, not really |
| for end NetBeans Platform developers that want to create new |
| applications, though that is covered in the first half of the book. (A |
| newer book on the NetBeans Platform is "<a href="http://apress.com/book/view/9781430224174">The Definitive Guide to the NetBeans Platform</a>".) |
| </p><p> |
| I began with the NetBeans Platform when NetBeans 6.0 was released (and so with Java 6), when the <a href="http://platform.netbeans.org/tutorials">NetBeans Platform Learning Trail</a> was still being written, so at that time up-to-date information was not easy to find. |
| </p><p> |
| I think that, maybe, more use cases of complete sample applications (such as the <a href="http://platform.netbeans.org/tutorials/nbm-crud.html">NetBeans Platform CRUD Application Tutorial</a>) |
| should give more efficient information for newcomers to the NetBeans |
| Platform. And French documentation would be of help to French |
| developers like me, too! |
| </p> |
| <h2>Would you like code contributions from the broader Java community and, if so, in which areas of the application?</h2> |
| <p> |
| Contributions are welcome, such as new shaders for 3D objects representations, new |
| geometrical models, such as non-planar surfaces, like cylinders, and |
| new simulator/antennas/exploitations modules. |
| </p><p> |
| More generally, any comments on the architecture and the code itself are very welcome! ;-) |
| </p><p> |
| <h2>What's the future of RaPSor, i.e., what new features will be added and when?</h2> |
| <p> |
| Animation is the first big new thing. The project aims to add the fourth |
| dimension to the simulation, as was done in the RaPSor kernel. |
| </p><p> |
| But this will be done only after some major modifications inside the kernel itself have been completed:</p> |
| <ul><li> |
| I discovered recently some ways in which Java is different to C. For |
| example, some strange things can be done using design patterns (and |
| other strange things). So, I think that the RaPSor kernel needs to be |
| improved in various ways, with backward incompatibilities. An example |
| is in the class "org.sic.rapsorapi.kernel.EField", for the constructors |
| part. Other users do not know exactly which constructor must be chosen |
| because I use "overloading" (a very bad thing it is! I hate C++ in part |
| due to this point, the second reason is the slaughter concept blends). |
| Then I must suppress all the public constructors, replacing them with |
| fully qualified static methods (as Yoda says: "Factory Pattern is |
| this"). This is a minor thing, but many such examples exist. |
| </li><li> |
| More important are the architectural design problems. The link between a Ray |
| (the main class) and the electrical field is not correctly handled. A |
| ray can be a visibility ray or can have acoustic purposes too. So |
| currently, wrongly, a Ray carries an EField instance. This is a |
| conceptual error of RaPSor that I need to fix. |
| </li></ul> |
| <p> |
| I must correct these problems, after which I can add animation, as the fourth |
| dimension. At that point I will be able to realize my initial weekend |
| idea: watch 3D wrestling (John Irving is also a fan), while listening |
| to Natalie Dessay in a virtual cinema using Wifi for loudspeaker |
| connections, while wearing 3D glasses for the 4D experiment! |
| </p> |
| |
| <h2>Related Links</h2> |
| |
| <ul><li><a href="http://sourceforge.net/projects/rapsor/">RaPSor (SourceForge)</a> |
| </li><li><a href="http://platform.netbeans.org/">NetBeans Platform documentation</a> |
| </li><li><a href="http://www.sun.com/books/catalog/rich_client_programming.xml">Rich Client Programming: Plugging into the NetBeans Platform</a> (book) |
| </li><li><a href="http://apress.com/book/view/9781430224174">The Definitive Guide to the NetBeans Platform</a> (book) |
| </li></ul> |
| |
| </body> |
| </html> |