# Harinath

4 replies to this topic

### #1harinath

New Member

• Members
• 1 posts

Posted 21 September 2009 - 04:40 AM

Hi friends,
I am trying to write an program for drawing 2D polygons(convex or non-convex)) with mouse.what exactly i am doing is first i will draw an triangle with 3 assigned vertices and by one mouse click get one vertex ,then by finding nearest two vertices of previous triangle i want to add new triangle. I am not getting idea to find nearest vertices .Please can anyone help ?

### #2poita

Senior Member

• Members
• 322 posts

Posted 21 September 2009 - 05:15 AM

There's faster ways to do it, but you could always just compare each vertex to every other vertex at first. From the description of your app, it sounds unlikely that the complexity will cause any issues.

What in particular are you having trouble with? Do you know how to calculate distance? What language are you using?

### #3v71

Valued Member

• Members
• 353 posts

Posted 22 September 2009 - 05:12 PM

I think your way to solve this problem is wrong, don't blame on me but i see this as an higly error prone procedure.
What if you clicked inside a triangle ? , finding the nearest vertices ??
this doesn't make sense unless you give a ref system , nearest to what ? your current point ? this is a large topic , normally you would use a kdtree to see which couple of point is nearest to another , i think you are overcomplcating the problem.
I would do like this, click on a point, you enter in a subroutine where the program expects to click on another screen coordinat, once you click it , repeat unti the last point is connected to the first within a range tollerance, before accepting the point i would check for self intersecting lines.

### #4poita

Senior Member

• Members
• 322 posts

Posted 23 September 2009 - 03:30 AM

Honestly, if I were doing this (and I am), I'd just ask the user to click a bunch of points and use those as the vertex chain for the simply polygon. From there, just do a Delaunay triangulation, for which there's plenty of source code out there.

Of course, the user could enter a complex (self intersecting) polygon, but what you do with that is up to you and your application.

### #5ely_bob

New Member

• Members
• 14 posts

Posted 27 September 2009 - 04:17 PM

I recently did this for a chemistry project...

First Click on point(save index )

----Points indexed----(by connection)
then lookup the points location(x,y)..

if the polygon is growing as attached to a preexisting side, use relative distance to side midpoint, if not ignore,
treat the distacne pClick/(pMidpoint), pMouse as radius for the circumscribed circle, or inscribed which ever you prefer, refresh to screen the resulting polygons.

(i'd post code but that is not my intelectual property anymore..this bit is safe however)

#### 1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users