Re: [Tutor] Python & algorithms (Lang line simplification algorithm)

2014-04-15 Thread Laura Kauria
Okay I'll try. What the main job is to do an algorithm which simples a
line. Algorithm deletes points which are unnecessary accurate according to
tolerance distance user gives.

>> I started by converting the pseudocode I had to python.

Pseudocode:
http://web.cs.sunyit.edu/~poissad/projects/Curve/about_algorithms/lang


   1. function lang(PointList[], Tolerance)
   2. key=0
   3. endP= PointList.length-1
   4. do {
   5. endP= PointList.length-1
   6. if (key+1 != endP) // If there are intermediate points
   7. line= new Line( PointList[key], PointList[endP])
   8. /* Find the point with the furthest perpendicular distance */
   9. maxIndex= key+1
   10. maxD= perpendicularDistance(line, PointList[maxIndex])
   11. for (i=maxIndex+1; i maxD)
   14. maxIndex=i
   15. maxD=d
   16. if (maxD > Tolerance)
   17. endP--;
   18. else
   19. for (i=key+1; i> Still I have problems with perpendicular distance and creating a line
>> with python.

What I mean by creating a line is what Alan answered "checking
distances/intersections
etc only requires the math model." I need the mathematical model not a
picture/graph. I'll try move forward with Bens suggestion of ‘math’ module
which probably help me with both mathematical line model between two points
and its distance between the intermediate points.
> http://docs.python.org/3/library/math.html#trigonometric-functions>.

Here is a picture of the lang algorithm, where you can see distance of
interest by purple
http://psimpl.sourceforge.net/lang.html.

I'll ask later if I can't get this work.

Cheers!





2014-04-15 3:23 GMT+03:00 Ben Finney :

> Laura Kauria  writes:
>
> > Thanks a lot for all the help! I got the courage to start at least..
>
> Congratulations! Courage is a necessary ingredient when starting :-)
>
> Could you please avoid  top-posting, and instead use interleaved style
> https://en.wikipedia.org/wiki/Posting_style#Interleaved_style> for
> your replies, so the conversation is in a natural order.
>
> > I started by converting the pseudocode I had to python.
>
> If it's short and simple, please post it here so we can discuss it in
> context.
>
> > 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?
>
> The ‘math’ module in the standard library has trigonometric functions
> http://docs.python.org/3/library/math.html#trigonometric-functions>.
> If you have co-ordinate data and know how to use trigonometry, then
> those functions will do what you expect.
>
> --
>  \“If I melt dry ice, can I swim without getting wet?” —Steven |
>   `\Wright |
> _o__)  |
> Ben Finney
>
> ___
> Tutor maillist  -  Tutor@python.org
> To unsubscribe or change subscription options:
> https://mail.python.org/mailman/listinfo/tutor
>
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Python & algorithms (Lang line simplification algorithm)

2014-04-14 Thread Ben Finney
Laura Kauria  writes:

> Thanks a lot for all the help! I got the courage to start at least..

Congratulations! Courage is a necessary ingredient when starting :-)

Could you please avoid  top-posting, and instead use interleaved style
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style> for
your replies, so the conversation is in a natural order.

> I started by converting the pseudocode I had to python.

If it's short and simple, please post it here so we can discuss it in
context.

> 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?

The ‘math’ module in the standard library has trigonometric functions
http://docs.python.org/3/library/math.html#trigonometric-functions>.
If you have co-ordinate data and know how to use trigonometry, then
those functions will do what you expect.

-- 
 \“If I melt dry ice, can I swim without getting wet?” —Steven |
  `\Wright |
_o__)  |
Ben Finney

___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Python & algorithms (Lang line simplification algorithm)

2014-04-14 Thread Alan Gauld

On 14/04/14 21:21, Laura Kauria wrote:


line = new Line( pointList[startPoint], pointList[endPoint])


line = Line(pointList[startPoint], pointList[endPoint])

is the translation. But that probably doesn't help much.


I've done point list and indexes already, put don't know how to create
the line.


See my other post. What do you mean by "create a line"?
What is your expectation of the end result?

--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.flickr.com/photos/alangauldphotos

___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Python & algorithms (Lang line simplification algorithm)

2014-04-14 Thread Alan Gauld

On 14/04/14 16:30, Laura Kauria wrote:


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.


When you say you want to "create a line" what do you mean?
Do you want to
- create a line in data as a set of points(at what precision?)
- plot or draw a line on screen (with axes?)
- build a mathematical model of a line?

Checking distances/intersections etc only requires the math model. But 
if you want to visualise it you may prefer a combination of all three.


We need a bit more detail about what you are expecting as a result.
The three options above all have solutions that are potentially
very different.

--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.flickr.com/photos/alangauldphotos

___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Python & algorithms (Lang line simplification algorithm)

2014-04-14 Thread Laura Kauria
Hi,

sorry I don't know the conventions yet.

I'd need to know how to create a line between two points. I don't know
after many hours checking, how to convert this pseudocode to python.

line = new Line( pointList[startPoint], pointList[endPoint])

I've done point list and indexes already, put don't know how to create the
line.

Laura


2014-04-14 22:21 GMT+03:00 bob gailer :

> On 4/14/2014 11:30 AM, Laura Kauria wrote:
>
>> Thanks a lot for all the help! I got the courage to start at least..
>>
>>  Some requests regarding posts.
>
> 1) put your comments following the relevant text rather than at the top.
> 2) delete old (irrelevant) text.
> 4) be more clear with your questions.
>
>  I started by converting the pseudocode I had to python.
>>
>
> 3) post your code
>
>  Still I have problems with perpendicular distance and creating a line
>> with python.
>> I need to create a line between two points
>>
> what does that mean (apart from the obvious) in terms of your code>
>
>> 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'm a geographer student so all possible library suggestions concerning
>> spatial data is also appreciated.
>>
>>  4) be more clear with your questions.
>
> I can make guesses about what you want, but that wastes time.
>
> " distance between a line and intermediate points which were between lines
> start and end point" as I read this the answer seems to be zero. ( a point
> that is between lines start and end point is on the line). I don't think
> you mean that.
>
> We are here to help. The more you tell us the easier it is for us to help.
>
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Python & algorithms (Lang line simplification algorithm)

2014-04-14 Thread bob gailer

On 4/14/2014 11:30 AM, Laura Kauria wrote:

Thanks a lot for all the help! I got the courage to start at least..


Some requests regarding posts.

1) put your comments following the relevant text rather than at the top.
2) delete old (irrelevant) text.
4) be more clear with your questions.

I started by converting the pseudocode I had to python.


3) post your code
Still I have problems with perpendicular distance and creating a line 
with python.

I need to create a line between two points

what does that mean (apart from the obvious) in terms of your code>
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'm a geographer student so all possible library suggestions 
concerning spatial data is also appreciated.



4) be more clear with your questions.

I can make guesses about what you want, but that wastes time.

" distance between a line and intermediate points which were between 
lines start and end point" as I read this the answer seems to be zero. ( 
a point that is between lines start and end point is on the line). I 
don't think you mean that.


We are here to help. The more you tell us the easier it is for us to help.
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Python & algorithms (Lang line simplification algorithm)

2014-04-14 Thread Laura Kauria
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 :

> 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:
>
> ///
> 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 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


Re: [Tutor] Python & algorithms (Lang line simplification algorithm)

2014-04-06 Thread Danny Yoo
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:

///
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 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


Re: [Tutor] Python & algorithms (Lang line simplification algorithm)

2014-04-06 Thread Alan Gauld

On 06/04/14 09:46, Laura Kauria wrote:


Can someone help with which kinds of libraries I need to download to
start to work with lists consisting coordinates?


It depends what you are doing but you may not need to
download anything. Like Java Python has a large
standard library of modules.

Also python built in collection types include tuples
which can be used to store point data (x,y,z)
And lists for collections of objects, including
other lists. And dictionaries for value based lookups.


Here are a pseudocode of the algorithm
http://web.cs.sunyit.edu/~poissad/projects/Curve/about_algorithms/lang


A cursory glance suggests you can do all of that
using standard Python.

--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.flickr.com/photos/alangauldphotos

___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor


[Tutor] Python & algorithms (Lang line simplification algorithm)

2014-04-06 Thread Laura Kauria
Hi all,

I'm new with python and have done little coding with Java. At uni I would
need to start a coding task with python writing a proper/working code and
we don't get much help at school.

Can someone help with which kinds of libraries I need to download to start
to work with lists consisting coordinates?

Here are a pseudocode of the algorithm
http://web.cs.sunyit.edu/~poissad/projects/Curve/about_algorithms/lang


Thanks for all the answers!


Laura
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor