Programming C, C++, Java, PHP, Ruby, Turing, VB
Computer Science Canada 
Programming C, C++, Java, PHP, Ruby, Turing, VB  

Username:   Password: 
 RegisterRegister   
 Serpinsky Triangle with recursion
Index -> Programming, Turing -> Turing Submissions
View previous topic Printable versionDownload TopicRate TopicSubscribe to this topicPrivate MessagesRefresh page View next topic
Author Message
BenLi




PostPosted: Tue May 02, 2006 3:17 pm   Post subject: Serpinsky Triangle with recursion

Hey,
this is my first attempt at recursion, probably going to make a fractal tree next

code:

setscreen ("graphics:800;600")
%serpinsky
var middlex, middley:int
%var x1,y1,x2,y2,x3,y3:int

fcn midx (x1, x2:int):int
middlex:= (((x2 - x1)div 2)+ x1)
result middlex
end midx

fcn midy (y1, y2:int):int
middley:= (((y2 - y1)div 2)+ y1)
result middley
end midy

proc serpinsky (x1, y1, x2, y2, x3, y3:int)
drawline (x1, y1, x2, y2, black)
drawline (x2, y2, x3, y3, black)
drawline (x1, y1, x3, y3, black)

drawline (midx (x1, x2), midy ( y1, y2), midx (x1, x3), midy ( y1, y3), black)
drawline (midx (x1, x2), midy ( y1, y2), midx (x2, x3), midy ( y2, y3), black)
drawline (midx (x1, x3), midy ( y1, y3), midx (x2, x3), midy ( y2, y3), black)

serpinsky (midx (x1, x2), midy ( y1, y2),midx (x1, x3), midy ( y1, y3),midx (x2, x3), midy ( y2, y3))
end serpinsky
serpinsky (0, 0, 400, 600, maxx, 0)


actually, its not actually a serpinsky yet...
Sponsor
Sponsor
Sponsor
sponsor
zylum




PostPosted: Tue May 02, 2006 3:54 pm   Post subject: (No subject)

suggestion: make sure you have a terminating condition for your recursion. if you let your program run long enough, it eats up all the memory and crashes.

also, like you mentioned, its not quite a serpinsky triangle. an easy way to make a serpinsky triangle is to draw your beginning triangle, then half way between its centre and each of its vertices, draw another one half its size.

code:
setscreen ("graphics:600;600")

proc triangle (cx, cy, s : real, d : int)
    if d = 0 then
        return
    end if
    var x, y : array 1 .. 3 of int
    for i : 1 .. 3
        x (i) := round (cosd (i * 120 - 30) * s + cx)
        y (i) := round (sind (i * 120 - 30) * s + cy)
        triangle (cosd (i * 120 - 30) * (s / 2) + cx, sind (i * 120 - 30) * (s / 2) + cy, s / 2, d - 1)
    end for
    drawpolygon (x, y, 3, black)
    delay (10)
end triangle

triangle (maxx div 2, maxy div 3, 340, 7)


good luck with your fractal tree and recursion Wink there are a few good source codes for fractal trees. also take a look at my recursion tutorial in turing tutorials Cool
MysticVegeta




PostPosted: Tue May 02, 2006 5:43 pm   Post subject: (No subject)

zylum, I haven't taken grade 11 trig yet, can you guide me over what is happening in the draw polygon? I understand the recursion but I dont understand how you come up with values for the x and y array, I know they represent the vertices of the triangle, but dont know whats going on in them, lol
HellblazerX




PostPosted: Tue May 02, 2006 7:24 pm   Post subject: (No subject)

First of all, drawpolygon takes in an array of coordinates to draw the polygon. A triangle has three points, so he puts in an array of 3 x coordinates and an array of 3 y coordinates to draw the triangle. To get the x and y coordinates, he just takes the trigonometric values of them in the unit circle, and mulitplying by the size of the triangle. This way he can resize the triangles very easily.
zylum




PostPosted: Tue May 02, 2006 9:00 pm   Post subject: (No subject)

what ^he^ said Wink
MysticVegeta




PostPosted: Wed May 03, 2006 1:39 pm   Post subject: (No subject)

HellblazerX wrote:
First of all, drawpolygon takes in an array of coordinates to draw the polygon. A triangle has three points, so he puts in an array of 3 x coordinates and an array of 3 y coordinates to draw the triangle. To get the x and y coordinates, he just takes the trigonometric values of them in the unit circle, and mulitplying by the size of the triangle. This way he can resize the triangles very easily.


yeah I know that but I asked, how to "come up" withthe x and y vals, just the trig part I have a hard time understanding...
Display posts from previous:   
   Index -> Programming, Turing -> Turing Submissions
View previous topic Tell A FriendPrintable versionDownload TopicRate TopicSubscribe to this topicPrivate MessagesRefresh page View next topic

Page 1 of 1  [ 6 Posts ]
Jump to:   


Style:  
Search: