drawploy : how does it work ?

BlitzMax Forums/BlitzMax Programming/drawploy : how does it work ?

QuietBloke(Posted 2008) [#1]
I'm trying to create a polygon but I dont see what Im doing wrong.

To following code I thought would create a polygon shaped like a number 1. something like this :

_*
_*
_*
_*
***

but when i run it it looks nothing like that. So my question is can I create a polygon like that shape using drawploy or do I have to draw two 4 sided polys ?




TomToad(Posted 2008) [#2]
drawpoly doesn't do concave angles, which is what the top of your "1" is. You need to break the "1" down into two separate polygons.


QuietBloke(Posted 2008) [#3]
OK.. thats cool.. I can work with that.. I just wasnt sure I was using it correctly.

Thanx


Floyd(Posted 2008) [#4]
I don't know if it's mentioned anywhere, but algorithms like drawpoly usually assume the points are in a particular order. The polygon must be traversed counterclockwise.

Graphics 640,480

Local angle:Int
Local p:Float[8*2]

p[0] = -5
p[1] = -25

p[2] = 5
p[3] = -25

p[4] = 5
p[5] = 20

p[6] = 10
p[7] = 20

p[8] = 10
p[9] = 25

p[10] = -10
p[11] = 25

p[12] = -10
p[13] = 20

p[14] = -5
p[15] = 20

' Quick fix, reverse order of vertices.

For n = 0 To 6 Step 2
	m = n
	temp = p[m] ; p[m] = p[14-m] ; p[14-m]=temp
	m = n + 1
	temp = p[m] ; p[m] = p[16-m] ; p[16-m]=temp
Next

While Not KeyHit(key_space)
	Cls
	angle :+ 1
	If angle > 360 Then 
		angle :- 360
	End If
	SetOrigin 50,50
	SetRotation angle 
	DrawPoly(p)	
	Flip
Wend



QuietBloke(Posted 2008) [#5]
thanx floyd

I have already fixed my problem by drawing a collection of rectangles and it will be a bit of a rewrite to do it properly now but I will certainly remember it for next time.

If only I'd desgned the poly in reverse order I would never have hit this problem in the first place. :)