Thanks a lot for all the help! I got the courage to start at least.. I started by converting the pseudocode I had to python.
Still I have problems with perpendicular distance and creating a line with python. I need to create a line between two points and then check what is the distance between a line and intermediate points which were between lines start and end point. If someone could help me with this? I could not understand can I do this without math library or not? I'm a geographer student so all possible library suggestions concerning spatial data is also appreciated. Laura 2014-04-06 21:30 GMT+03:00 Danny Yoo <d...@hashcollision.org>: > Hi Laura, > > > Algorithmic code typically is simple enough that standard language > features should suffice. I think you might pick up an external > library to make it easier to visualize graphical output, but the core > algorithms there appear fairly straightforward. > > To get some familiarity with basic Python programming, take a look at > a tutorial like: > > http://www.greenteapress.com/thinkpython/thinkpython.html > > and see if you can pick up the basic language features of Python. If > you have questions with that tutorial, feel free to ask here. > > > It looks like you need enough to work with structured data (classes) > and the basic data structures (lists, numbers). At least from my > reading of the "curve simplification" page you pointed us to, I don't > see anything there that's too bad. > > * You'll want a way to represent points. I think a structured value > would be appropriate. Think classes. > > * You'll want to represent a sequence of these points. In Java, you > can hold that collection with ArrayLists or some other list > implementation. In Python, there's a generic list data structure that > serves a similar purpose. > > > For example, in Java, you'd represent structured data with classes, > and a collection of these with a List<Person>: > > /////////////////////////////////////////////////////////////// > class Person { > private String name; > public Person(String name) { this.name = name; } > public void greet() { System.out.println("Hello, my name is " + name); > } > } > > // Usage: > Person p = new Person("Laura"); > p.sayHello(); > Person p2 = new Person("Lydia"); > List<Person> people = new ArrayList<>(); > people.add(p); > people.add(p2); > /////////////////////////////////////////////////////////////// > > > And in Python, you can do an analogous construction: > > ##################################### > class Person(object): > def __init__(self, name): > self.name = name > def greet(self): > print("Hello, my name is " + self.name) > > ## Usage > p = Person("Laura") > p.sayHello() > p2 = Person("Lydia") > people = [] > people.append(p) > people.append(p2) > ##################################### > > > So there should be a lot of transfer of basic knowledge between what > you've learned in Java to Python programming. Many of the concepts > are the same, but the names are just different because of the Tower of > Babel effect. A basic tutorial of Python will cover these general > topics. > > > What might be domain-specific here is the visualization part: you'll > want to make it easy to visually see the output of these graphical > algorithms. You may want to visualize these points on a graphical > canvas on screen. You could have your program generate an image file > like a .png, .gif, or .svg file. > > Another approach may be to use a GUI toolkit that opens up a canvas as > part of the program, where you can then manipulate the canvas. If you > want to take that approach, you might consider Tkinter, which is a GUI > library that should come bundled with Python if I'm not mistaken. > See: > > http://effbot.org/tkinterbook/canvas.htm > > for a canvas example. So once you have the basic algorithms down, you > might use a Tkinter canvas to visualize and see that your algorithms > are doing something reasonable. >
_______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor