Winamp Forums > AVS Please, explain me this:

 21st September 2006, 13:25 #1 Paufer Junior Member   Join Date: Aug 2006 Posts: 19 Please, explain me this: I was reading PAK-9's progamming guide, in the superscope section, when realized that this will draw a square: INIT: n=6; x1=0.5; y1=0.5; x2=0.5; y2=-0.5; x3=-0.5; y3=-0.5; x4=-0.5; y4= 0.5; x5=-0.5; y5=0.5; x6=0.5; y6=0.5; FRAME: curpoint=0; POINT: curpoint=curpoint+1; x=(if(equal(curpoint,1),x1, if(equal(curpoint,2),x2, if(equal(curpoint,3),x3, if(equal(curpoint,4),x4, if(equal(curpoint,5),x5,x6)))))); y=(if(equal(curpoint,1),y1, if(equal(curpoint,2),y2, if(equal(curpoint,3),y3, if(equal(curpoint,4),y4, if(equal(curpoint,5),y5,y6)))))); BUT, why this draws a square: Init n=5; Frame Rot=0; Point=0; Beat Point x1=-equal(point,0)+equal(point,1)+equal(point,2)-equal(point,3); y1=equal(point,0)+equal(point,1)-equal(point,2)-equal(point,3); x1=x1*0.5; y1=y1*0.5; x=x1*cos(rot)-y1*sin(rot); y=x1*sin(rot)+y1*cos(rot); point=if(equal(point,3),0,point+1); WHY?????????? ok, I know it's a rotating square, but still is a square... Thanks in advance.
 21st September 2006, 17:08 #2 Warrior of the Light Fοrum King (AVS Reviewer)     Join Date: Aug 2002 Location: The Netherlands Posts: 3,785 It'd take me four pages to explain that.. the best suggestion that I can give is that you write an input>output scheme: if 'point' is 0, then what would happen with all of the values? etc Jesus loves you [yes, you] so much, he even died for you so that you will not need to die, but live forever
 21st September 2006, 19:54 #3 Paufer Junior Member   Join Date: Aug 2006 Posts: 19 Well, I tried to think this way already, but I don't see the square in these codes... Any other sugestion??
 21st September 2006, 22:21 #4 Warrior of the Light Fοrum King (AVS Reviewer)     Join Date: Aug 2002 Location: The Netherlands Posts: 3,785 Okay, I'll go through it with you: I'll just handle the postion on the x-axis for the first point of the line. The formula: x1=-equal(point,0)+equal(point,1)+equal(point,2)-equal(point,3); point=0. (since it hasn't been defined yet) I'll split it in four parts: the first part: -equal(point,0) point=0, so this results in: -equal(0,0) equal(0,0) is true, so equal() returns 1. There's a "-" in front of it, so here stands "-1" now. second part: +equal(point,1) point=0, so this results in: +equal(0,1) equal(0,1) is false, so equal() returns 0. There's a "+" in front of it, so here stands "+0" now. The complete line so far is: -1+0. Third part: +equal(point,2) point=0, so this results in: +equal(0,2) equal(0,2) is false, so equal() returns 0. There's a "+" in front of it, so here stands "+0" now. The complete line so far is: -1+0+0. Fourth part: -equal(point,3); point=0, so this results in: -equal(0,4); equal(0,4) is false, so equal() returns 0. There's a "-" in front of it, so here stands "-0" now. The complete line so far is: -1+0+0-0. a ";" ends the line. -1+0+0-0=-1 So, for the first point, x1=-1 then we find that x1=x1*.5 -1*.5=.5 x1=-.5 x=x1*cos(rot)-y1*sin(rot); (I'll omit the rotation mumbojumbo as it is not relevant at this time) point=if(equal(point,3),0,point+1); if point=3, then point=0. Otherwise point=point+1. In this case, point was 0, so point becomes 1 now (0+1=1). This is done for the next point of the square (or better: line) that will be calculated. (and when the line is finished, point'll be reset to 0) Jesus loves you [yes, you] so much, he even died for you so that you will not need to die, but live forever
 21st September 2006, 23:24 #5 Paufer Junior Member   Join Date: Aug 2006 Posts: 19 Okay, now I see a light in the end of the tunnel, but it is very complicated yet... I must be stupid or something, I get how the codes works, but I still don't see a square. I don't know how to explain it in english but I'll try: "-1+0+0-0=-1 So, for the first point, x1=-1 then we find that x1=x1*.5 -1*.5=.5 x1=-.5" ok, thats clear to me, but why or how does it change to 0.5 or the other values?? Sorry for bothering you with that... and thanks!
 22nd September 2006, 22:35 #6 PAK-9 Major Dude     Join Date: Oct 2002 Location: The United Kingdom of Great Britain and Northern Ireland Posts: 1,374 Take a simpler example and imagine the code is just this --- frame: n=5; point=0; point: x=-equal(point,0)+equal(point,1)+equal(point,2)-equal(point,3); y=equal(point,0)+equal(point,1)-equal(point,2)-equal(point,3); point=if(equal(point,3),0,point+1); --- the point code is executed 5 times because n=5; for each pass of the point code the variable 'point' will be 0,1,2,3,0 in that order. When point=0: equal(point,1) = 0 equal(point,2) = 0 equal(point,3) = 0 only 'equal(point,0)' is non-zero, it equals 1. So for this value of point, x=-1 and y=1 When point=1: equal(point,0) = 0 equal(point,2) = 0 equal(point,3) = 0 only 'equal(point,1)' is non-zero, it equals 1. So for this value of point, x=1 and y=1 if you follow this logic for each execution of the point code you get: (first pass, point=0) x=-1,y=1 (second pass, point=1) x=1,y=1 (third pass, point=2) x=1,y=-1 (fourth pass, point=3) x=-1,y=-1 (fifth pass, point=0) x=-1,y=1 It should (hopefully) be apparent that this renders a closed square. Hope this helps http://PAK-9.deviantart.com ...innit
 23rd September 2006, 15:58 #7 Paufer Junior Member   Join Date: Aug 2006 Posts: 19 yeah, thanks PAK-9 and Warrior!!! Now I understand, but still, you have to think quite a bit to draw things in the SSC... Well, I think that just practicing I'll get it... Thanks again!!
 Winamp Forums > AVS Please, explain me this: