Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a book, tool, software library, tutorial or other off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 8 years ago.
Improve this question
I want to make voronoi treemaps for statistics data, like
newsgraphy
Do you know how I can do that in Perl, PHP, Ruby, or Python?
Math::Geometry::Voronoi
Nice demos and graphics for Python: http://home.scarlet.be/zoetrope/voronoi/ (Archived copy at wayback)
Just found this page. I've been working on a Voronoi demo applet using Javascript/canvas, after translating into Javascript a C# version of Steven Fortune's algorithm by Benjamin Dittes (available at Code Project, see "Fortune's Voronoi algorithm implemented in C#"). Here is the page which include Fortune's Voronoi algorithm in Javascript:
http://www.raymondhill.net/voronoi/voronoi.php
This is a first iteration, I plan to adapt it further to be better suited to Javascript. Hope this helps.
First of all, the lines are not strange: it's the result of the fact that this is not a normal Voronoi tessellation, but an area-weighted Voronoi (AWT) tessellation, possibly even a centroidal Voronoi tessellation (CVT). That being said, in order to have Voronoi regions (polygons) with significantly differing areas (which would reflect some attribute of the data), you need AWTs (preferably implemented as CVTs to retain nice aspect ratios for the polygons); a normal Voronoi algorithm (as suggested by some people above) will not be able to help you. There is probably no direct solution for this available, especially not for scripted languages, since the computational complexity due to iterative updating steps for AWTs is quite high. You should look up the work on "Voronoi Treemaps" and "Dynamic Voronoi Treemaps" by Balzer et al. and Sud et al. to get an idea of the algorithm and then implement it on your own (everything that you need is in their papers).
the other Python answer seems to point at a raster only solution. I am also interested in solving this problem (in Python) and I think the following script could form a usable starting point:
http://www.oxfish.com/python/voronoi.py
(Archived copy at wayback)
James Tauber is writing a tutorial that uses JavaScript and Fortune's algorithm to draw a Voronoi diagram in a canvas element: Voronoi Canvas Tutorial
It's not complete yet (he's at part 3 of 4) but there's enough there to complete it I think.
The latest version (2.0) of Macrofocus TreeMap has the Voronoi algorithm as an option, among others.
Related
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 8 years ago.
Improve this question
I am looking for a high level language which will still allow me to work directly with graphics. I want to be able to modify screen pixels, for instance. But I do not want to write huge amounts of code for each operation. I want simple one line commands for graphics somewhat like those listed below. What are some programming languages which would have these features?
Possible pseudocode:
Screen.clear
Graphics.line(4,5,20,25).color=green
Circle(centerx,centery,radius)
Depending on what you want to do (ie, how complex do you need to get?) Processing is a very high-level, graphics-focused environment. Note, however, that it seems to be focused on the fixed function OpenGL pipeline, which is deprecated (though arguably the easiest and most intuitive way to get started).
Processing is built in Java, runs in web browser (or from your desktop), and abstracts most of the initialization and cleanup code required to use OpenGL.
Edit
I've just noticed your comment that says you're not an experienced programmer. In that case, I'd recommend starting with Processing. Once you get the hang of it, move on to Python.
Another, slightly more complex, option is Python. Python is very powerful, fairly easy to pick up (depending upon your prior development experience), and widely supported. It'll also allow you to use shaders and other features from the 21st century, and is cross-platform See this link for PyOpenGL, the first Python OpenGL site that popped up in google.
Then, there's C# + OpenTK. This can get pretty complex pretty quickly, but is very powerful, and since it's compiled (under .NET or Mono), can potentially give you better performance than Python.
Finally, for close-to-bare-metal performance, C++ is unbeatable, though arguably the most complex of these options, with a significant learning curve. However, most of the example code you'll find online is in C++, which can be an issue if you're not using C++ and aren't comfortable reading it.
Using Qt you can create QImage objects and draw on them usign QPainter.
You've of course pixel control using that abstraction level, but you can also access the underlying memory directly using bits() and bytesPerLine() methods thus accessing the image memory directly.
The format that is easiest to use to do fast special computations is in my opinion QImage::Format_ARGB32 with 32 bits per pixel.
Qt is a C++ library portable on may OSs and platforms, and bindings are available for many very high level languages (e.g. Python).
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
Are there any good tools to solve integer programs on Linux?
I have a small problem that I want to compute to save time :D. It is kind of a subset sum problem. I have a list of around 20 Integer-Values and I want to compute the subset with the smallest sum that satisfies a certain minimum. You could formulate this with a integer program... something like
\sum_{i=1}^{n} w*x -> min
with
\sum_{i=1}^{n} w*x >= c with x \in \{0,1\}
Or is there an other good way to do this?
I would try either GLPK or SCIP.
They have their own modeling language, GLPK has GNU MathProg and SCIP has ZIMPL, so you can conveniently code your LP problem.
GNU MathProg has the advantage of being compatible with AMPL. Thus, you could try the student version of AMPL with CPLEX or Gurobi with your GNU MathProg model. Keep in mind that AMPL, CPLEX and Gurobi are commercial software.
Have you tried to do that with LibreOffice Calc Solver?
Microsoft Solver Foundation on Mono Framework could also do the job for you if you know C#.
Try Lindo/Lingo. They are not free, but you can try them.
They allow you to specify your problem in a very neat mathematical way.
You could try gnu octave - its a subset of matlab
I wanted to add one more option to the GLPK suggestions that #Ali has made. I suggest that anyone interested in solving LPs/IPs also look into the optimization packages that the R Language offers.
If you already know and use R, then it is just a matter of downloading the right package. And even if you don't, this is a good way to get introduced to R, which is really taking off in the analytics space.
This vignette is very good way to know which R packages are relevant.
For you, RSymphony or Rglpk might be the ones to start with.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 8 years ago.
Improve this question
I am interested in audio DSP programming, but not in any specific language. I seem to recall a website that had recipes for common DSP application (compressors, limiters, et cetera), but I can't seem to find it in my bookmarks or via Google.... does anyone here know of such a place?
Short of that, I am not very mathematically literate but I have a strong sense for algorithms and logic, as well as working knowledge of a few different languages. What are some good resources for the beginning DSP programmer?
Thanks
Tom
Was the website www.MusicDSP.org?
This question: Recommended books for developing audio/music applications? lists a few books which may be relevant to you.
I'm going to suggest The Audio Programming Book from MIT Press. Lots of recipes and example code.
For general signal processing I'd recommend MatLab. MatLab has the libraries you need, good documentation and it was basically designed for this sort of thing. Now, I've not used it for audio signal processing, just sensor data and some data mining, but I think it's a good start to getting used to stuff like Fourier Transforms + various filters/windows.
Here's the MatLab documentation for the discrete fourier transform- really good:
http://www.mathworks.com/help/techdoc/ref/fft.html;jsessionid=x9xhNglGm1DdQNTBzyhj8DGb50QVnvCGxf3KmvM3xbnPlMbxGBQT!-779685318
If you are looking for:
1. programming languages: I would recommend MATLAB or Octave. Octave is free, and almost the same as MATLab in every respect. If you are going to be using MATLab, you can take a look at the MATLab exchange. The site contains good examples of code for solving good problems, audio DSP and otherwise.
Books: A good book to begin in DSP theory is the one by Proakis and Manolakis. Also, for a breezy tutorial to DSP, the Scientist and Engineer's Guide to DSP is one of the best. You can download the book for free and in some parts it is actually like reading a novel. Gets you upto speed with most issues that you might face in dsp and does so very intuitively with little Math.
Applications: There are tons of applications out there! And with the increasing power, processing and otherwise, of smartphones and the like, intensive DSP calculations that were once the preserve of very powerful computers are now being done on the device itself. Once you are proficient enough, you may even consider contributing to different open-source projects.
Adapted from: Where can I find good tutorials on writing audio DSP filters (lowpass, etc)?
A good filter cookbook is http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt
I also recommend getting Lyon's Understanding Digital Signal Processing. I am a bit biased, though, since I was a reviewer for the second edition (but I think a third edition came out recently).
Also check out Digital Audio Signal Processing and DAFX:Digital Audio Effects, both by Udo Zölzer.
Making Audio Plugins gives a very gentle start without too much DSP math.
The tutorials start from the very beginning and show how to create this synthesizer:
There's a lot of stuff for Python in music, although most of them don't emphasize DSP. Also, some parts of the language standard lib such as the itertools can be handy.
Implementing algorithms such as the ones declared that aren't part of the packages there (e.g. a limiter, a compressor) might be easier when thinking on Python iterables instead of taking care of segregating the sample-based and block-base approach manually, and that makes it easier to make the algorithm used in real time directly. AudioLazy is a Python DSP package made to have a simple API, maybe it'll help as basic structures such as Z-Transform filters are done directly by their equation, and any Python iterable can be used as audio. Perhaps seeing its code can be helpful, as well. (Disclosure: I'm the author of this package)
About a book, I like the DAFx, which is extremely practical and audio-oriented. You might consider implementing the algorithms on there (the MATLAB code) in Python.
For a more solid knowledge on DSP, you should read the book "Discrete-Time Signal Processing", by Oppenheim and Schafer.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
I want to solve geometry problems in online programming contests. But whenever I read them, I just find too difficult. Please suggest some books and resources which I can study computational geometry.
A classic work: Computational Geometry in C.
And there's also: http://www.cs.uu.nl/geobook/.
In order to solve basic geometry problems quickly, so that it runs within the time limits of the contest, you need to make certain you have a strong grasp of writing algorithms.
This page has some good suggestions on how to get better. It is set up as a two semester course of reading.
http://mrmbdctg.freehostia.com/contest_Tipsforbeginner.html
You can try the problem archive on TopCoder.
But you should register first.
On the filter choose:
Category: Geometry
Division II Level: Level One or Level Two.
Almost all problems have description of solutions.
They are pretty simple in comparison you choose random geometric problem from some contest archive.
On the page you can also find a lot of tutorials, including geometric ones.
I recommend two books (among others):
The Algorithm Design Manual By Steven S. Skiena - discusses algorithms in general, but has a lot of useful information about computational geometry
Computational Geometry: Algorithms and Applications
If you want to clear your basics, this is a good starting point - https://www.hackerearth.com/notes/computational-geometry-i-1/. There are some practice problems as well in the article.
You should also read through this article - http://www.toptal.com/python/computational-geometry-in-python-from-theory-to-implementation that covers some advanced concepts.
You must know convex hull and point-in-polygon. Often on TopCoder people create a reusable library for geometry applications, since the same is code is used many times.
Check lbackstrom's tutorial for start. Computional Geometry by de Berg, Cheong, van Kreveld, Overmars [edit: already mentioned by Bart] might be more than you need.
And of course there's Computational Geometry - An Introduction, by Preparata and Shamos. I own it, and recommend it for an introduction to the principles. Not really a dictionary of code, though.
Here are two excellent books, I used them as textbooks at university:
J D Foley, A van Dam et al. Introduction to Computer Graphics. Addison-Wesley, 1994, ISBN 0-201-60921-5.
D Hearn and M P Baker. Computer Graphics with Open GL (3rd edition). Prentice-Hall, 2004, ISBN 0-13-120238-3.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 8 years ago.
Improve this question
I'm currently looking for diagramming software that allows me to quickly map stuff and jot down concepts such as a filesystem directories represented by nested boxes containing icons (representing files.)
Off course the simplest solution of all would be to just use paper and pencil, but unfortunately i have such poor motor skills that after minutes i cannot even distinguish the shapes I've drawn myself, never mind have these notes be of any use to someone else in order to have him/her work with them.
So far I've tried a ton of software packages but none of it seem to be simple/flexible/powerful enough to help fulfill the modeling /sketching tasks I'm trying to achieve
Visio,
smartdraw
Edraw
conceptdraw
Vue
yEd
Dia
Kivio
paint.net
photoshop
Illustrator
GIMP
in addition I've played around with modeling tools including staruml,argouml and Visual Paradigm as well as Eclipse modeling, but most of them were too complicated, too constricting and in some ways completely alien. On a side note, I absolutely HATE eclipse, I'm used to writing shellscripts with nano on a shell, The sheer amount of features (That i will never ever have any use for) make it hard for me to find that which I'm really looking for. YAGNI GDDMM*T!
Allthough UML modeling is at times important, such models are more for the next follow up phase and would be overkill (as well as a creativity killing burden) when I'm trying to come up with something from scratch.
Right now I'm looking for something new, I would be more than happy if someone could perhaps suggest something,
Most importantly i would like to find a program where the software allows me to do add new shapes and with the parent shape automatically growing so that that added shapes all fit inside of it rather than that i have to manually resize the parent shape
Your problem is a common one, and in recent years the big UML tool vendors have started adding functionality for sketching, as opposed to traditional modelling. My favourite, Enterprise Architect from Sparx Systems, has got "whiteboard" sketching and is also able to import from Visio.
It boils down to whether you know you'll just want to sketch, in which case you should get a tool which does that really really well (that last feature you mentioned is something I haven't seen in any UML tool). If on the other hand you know that you'll eventually want to turn the sketches into UML models, you need to consider whether you'll want to start over (which might be the easiest option, honestly) or have some sort of in-tool support to do that.
For "UML as a Sketch" I use the Hruby UML Stencil for Visio. These do not enforce eny semantics, so you can be as sketchy as you need to quickly record ideas and communicate.
See http://www.softwarestencils.com/uml/index.html
I use Dia. It is cross platform. Very simple tool.
However, My favorite has always been to sketch it on paper and scan (fotopragh it on my mobile) and keep it for records. Nothing beats pen and paper yet !
I tried yEd recently, because I happened to see it mentioned in another thread here. I'm quite impressed with it. Its pretty easy to use. I think the feature I liked the most is that I can draw my diagram regardless of the spacing and orientation. Then 1 button and poof, the whole things rearranges into the ordering I want.
As a linux diagramming tool, im pretty impressed with it.
this one is good for remote team members.
Nothing to install
http://www.dabbleboard.com/
I've used Visio for so long IMHO nothing beats it.
That said, I rarely use Visio in meetings to take initial notes. We'll diagram on whiteboards (get someone else to do the diagramming while you "facilitate") and then I take pictures of the result. Transcribing the photos to a Visio diagram helps me think it through.