Skip to content
Forum Archive

Tips&Tricks in AVS

274 posts

Zevensoft#
Here's the engine I created for Matrix_Reality.

Dynamic Movement:
Init

js=.002;pi=acos(-1);pitch=0;yaw=0;density=.33;
Frame

j=if(above(j,1),-1+js*2,j+js);

ox=cos(j*pi)*.125;oy=sin(j*pi)*.5;oz=j*3.5;

ys=yaw;yaw=cos(j*pi)*.125;
roll=(roll*5-ys*5)*.0125;pitch=sin(j*pi)*.125;
pitch=if(above(abs(pitch),.5),sign(pitch)*.5,pitch);
cy=cos(yaw*pi);cx=cos(pitch*pi);cz=cos(roll*pi);
sy=sin(yaw*pi);sx=sin(pitch*pi);sz=sin(roll*pi);
Point

dx=x;dy=y;dz=1;

tx=dx*cy-dz*sy;tz=dz*cy+dx*sy;
ty=dy*cx-tz*sx;dz=tz*cx+dy*sx;
dx=tx*cz-ty*sz;dy=ty*cz+tx*sz;

kx=if(above(dx,0),abs((ox-1)/dx),abs((ox+1)/dx));
ky=if(above(dy,0),abs((oy-1)/dy),abs((oy+1)/dy));
kz=if(above(dz,0),abs((oz-4)/dz),abs((oz+4)/dz));

k=min(min(kx,ky),kz);

utx=oz+dz*kx;uty=oy+dy*kx;utz=ox+dx*kx;
vtx=ox+dx*ky;vty=oz+dz*ky;vtz=oy+dy*ky;
wtx=ox+dx*kz;wty=oy+dy*kz;wtz=oz+dz*kz;

x=if(equal(k,kz),wtx,if(equal(k,kx),utx,vtx));
y=if(equal(k,kz),wty,if(equal(k,kx),uty,-vty));

alpha=(1/pow(2.71828,sqr(k*density)))*(1-abs(pow(j,5)));
Blend:On | Bilinear:On | Wrap:On | RectCoord:On

----------------

Superscope.
Init

n=200;js=.002;pi=acos(-1);pitch=0;yaw=0;density=.33;bp=.5;
Frame

bp=if(above(bp,-4),bp+.1,if(above(getspec(.1,.1,0),.25),-3.9,bp));bp=if(above(bp,8),-4,bp);
by=if(above(bp,4),by*1.1,.05);
ox=cos(j*pi)*.125;
oy=sin(j*pi)*.5;
oz=j*3.5;
sy=sin(-yaw*pi);
sx=sin(-pitch*pi);
sz=sin(-roll*pi);
cy=cos(-yaw*pi);
cx=cos(-pitch*pi);
cz=cos(-roll*pi);
pitch=if(above(abs(pitch),.5),sign(pitch)*.5,pitch);
roll=(roll*5-ys*5)*.0125;
pitch=sin(j*pi)*.125;
ys=yaw;yaw=cos(j*pi)*.125;
j=if(above(j,1),-1+js*2,j+js);
Point

dx=cos(i*pi*20)*.01-ox;
dy=sin(i*pi*20)*.01-oy+by-.05;
dz=i*.05-oz+if(above(bp,4),4,3+(1-pow(1-(bp+4)*.125,3)*8))*.35;
tx=dx*cz-dy*sz;ty=dy*cz+dx*sz;
dy=ty*cx-dz*sx;tz=dz*cx+ty*sx;
dx=tx*cy-tz*sy;dz=tz*cy+tx*sy;
a=if(above(bp,-4),(1/pow(2.71828,sqr(dz*density))),0);
red=if(below(dz,.1),0,1)*a;
green=red;
blue=0;
k=1/if(equal(dz,0),1,dz);
x=dx*k;y=dy*k;
Draw: Lines
-------------------

The above is the room and a bullet from my Matrix_Reality preset. Here is a basic description of variables:
  • ox,oy,oz = Camera Position
  • pitch,roll,yaw = Camera Rotation Angles
  • density = Fog Density (Exponential Squared)
  • j = Synchronization Variable (js = timing speed)

It limits the pitch to +/-.5 (Vertical) so there aren't any gimble situations, and automatic roll is created for changes in yaw.
UnConeD#
If you want to post long pieces of code, use <font=courier>...</font> (replace <> with square brackets) to prevent from stretching the page.
blazer1504#
No tug, you got me wrong. I'm not saying that every tip in this thread are total bullshit, but what I am saying is that this thread shouldn't be filled with codes / tips (and posts like this 😉 ) that doesn't affect to fps rate "efficiently" . I tried some of these and I really couldn't see any fps difference between code A and code B. If some method saves alot fps compared to the others, yeah it's good to be mentioned, but if it saves only like 0.1 fps you think that this thread should be filled with codes/tips like these ?? :P

And what comes to my presets. Usually the use of complex colors makes the preset slow. And colors aren't just that easy to optimize. Of course I always try to erase things you don't necessarily need & try to make it as fast as possible, but sometimes you just can't make it any faster without radical changes. Sure I can replace all those tricky colors with a Utone or two for some real boost up, but that's just not me....
dirkdeftly#
Okay, just a tip...as long as we're on this page of
the thread, try just typing in your carriage returns
like this...

Anyway, just one thing to remember as AVSers: Any god
damned thing is possible in AVS once you put your
mind to it. Trust me, if I didn't keep telling
myself this, I wouldn't be doing any of what I've
been doing (i.e. 4D, life algorithms, etc.) I'd bet
money that Jheriko's been having to reasure himself
of this a lot for some of his scopes lately 😉 My
point is, you shouldn't just give up because you think
it can't be done. That's not a good reason. Give up
because you're lazy, or because you need to clip your
toenails, or for something important like that.
Jaheckelsafar#
Here's a simple one that I'm sue everyone here knows. Might help a
noob though. (that is kinda what this thread was intended to do, right?)

sin, cos, and tan are all calculated from the radian value.
This means the wavs have a period of 2*PI.

sin(3.141) = sin(3.141) = sin(6.282) = 0
sin (3.141/2) = 1
sin (3.141*3/2) = -1
jheriko#edited
Originally posted by Atero
I'd bet money that Jheriko's been having
to reasure himself of this a lot for some
of his scopes lately
That is true.

I still have ideas that I'm forcing myself
into doing right now, the coolest AVS i've
made haven't been released yet because they
don't work properly, but like atero said,
anything is possible so I never give up on
them, I just keep working on them in the
background. Like that sonic battlefield from
pack VI, I'm still working on that on and off.

The point is never to give up, force yourself
through to the end. Thats more general life
advice though.


Here is something more useful though; I'm certain
that a lot of you out there know exactly what you
want to do in AVS but have no idea about what
sort of maths you need to do it. I'm also certain
that there are a lot of mathematical methods
that would be useful for AVS if we knew about them.
Personally I think that maths is pretty important
for AVS (the technical side at least) so if you
have any maths questions my tip would be to check
this cool page that I found, or alternatively send
me some mail. I'm not going to pretend to know
everything about maths but I have a lot of knowledge
and a lot of textbooks too. 🙂

jheriko@ntlworld.com

EDIT: Here are some trig identities to add to Jaheckelsafar's list, these will probably all have some applications in AVS, don't ask me what though:



cos(pi/4) = sin(pi/4) = 1/sqrt(2)
cos(pi/6) = sin(pi/3) = sqrt(3)/2
cos(pi/3) = sin(pi/6) = 1/2

(sin(x))^2+(cos(x))^2 = 1
cos(x) = sin(x+pi/2)
cos(-x) = cos(x)
sin(-x) = -sin(x)
tan(x) = sin(x)/cos(x)
cot(x) = 1/tan(x) = cos(x)/sin(x)
sec(x) = 1/cos(x)
csc(x) = 1/sin(x)

sin(x+y) = cos(x)sin(y)+sin(x)cos(y)
sin(x-y) = cos(x)sin(y)-sin(x)cos(y)
cos(x+y) = cos(x)cos(y)-sin(x)sin(y)
cos(x-y) = cos(x)cos(y)+sin(x)sin(y)
sin(2x) = 2sin(x)cos(x)
cos(2x) = 2(cos(x))^2-1
cos(2x) = 1-2(sin(x))^2
cos(3x) = 4(cos(x))^3-3cos(x)
sin(3x) = 3sin(x)-4(sin(x))^3

There are a ton more things like this, identities
for cos(ax) and sin(ax) for instance, but I can't
remember them all off of the top of my head. 😛
dirkdeftly#
Damn...NOW I know why my trig teacher wanted me to memorize identities. She didn't show me the USEFUL ones.....
VisualAgnosia#
Hey there,

I was wanting to ask, (I've spent the last week going throught the forums) If some one could give me a running example purley for reference how to create a plane in 3D SSC and effect it with this function

z=x*e^(-x^2-y^2)

I use a 3d ploting program that I'm used to and enter this

plot3d(x*exp(-x^2-y^2), x=-2..2 y=-2..2)

works fine .. You should see the triped stuff I'm getting "TRYING to emulate this to AVS.. I've totaly forgot how to rearange the "e" with log and I got paper and shit all over my desk and room. ahhhhhhhhh where's my text books... I'm also giving up smoking 3 days now.

z being the third axis of course, e is the exponent and ^ is to the power. Because I'm used to this program alot I tend to have blunders converting to AVS. Gimme a couple of weeks tho no probs but hey I'm always looking to learn quicker from some experienced bruzza'z.

If anyone feeling Crwayzie mabey give z=cos(x)*sin(y) a try and show us. I feel that if I see an example of something I've done I might be able to bridge the gap faster.

🤪

P.s. I's it just me or does anyone here alos go to sleep and end up dreaming about Freakin' equation's accompanied by some major tripped lighting visual dreams.... waaaaaaah. sheeesh If only I could remember what code I was dreaming I might be able to pull something awsome out of my subconcious ... I guess the best thing to say here is ...

Keep Dreaming

Rez---pec-t..

The VIzAG🧟
UnConeD#
Atero: if you don't have anything constructive to add to someone's question, shut up please.

VisualAgnosia: the superscope is just a drawing tool... you give it (x,y) coordinates on the screen with a color if you wish.

So if you want to plot a graph of a function z=f(x,y), you'll first need to write code that traverses a grid of points in 2D rectangle, then calculates the z value for that point and then transforms the point with perspective.

The best way to do this is not to use the 'i' counter in the superscope, but make your own counters. For example, this draws a simple 20x20 grid:


init:
n=400;

per frame:
t=t-.05;px=0;py=0;ct=cos(t);st=sin(t);

per point:
gx=(px/19)*2-1; gy=(py/19)*2-1;
gz=-exp(-(sqr(gx)+sqr(gy))*4)*3+1.6;
x1=gx*ct-gy*st;y1=gx*st+gy*ct;
x=x1/(y1+3);y=gz/(y1+3);
px=if(below(px,19),px+1,0);
py=if(equal(px,0),py+1,py);
red=if(equal(px,1),0,1);green=red;blue=red;


There's a lot going on here, so I'll dissect it:

First, we have 400 points on our grid, so we set n to 400.
We'll be rotating the grid around, and we'll use 't' as the angle, which is decreased every frame by 0.05 radians. We also calculate the cosine and sine of the angle in the frame routine so we don't have to calculate it again every point, for speed reasons.
We'll be traversing a 20x20 grid, and we'll store the current grid point in (px,py). px and py will take on the values 0-19 (20 points), first x then y. We start at (0,0).

Per point, we transform (px,py) (between (0,0) and (19,19)) into (gx,gy) a point between (-1,-1) and (1,1). This is done by dividing by 19, multiplying by 2 and subtracting 1 (this piece can be done faster if we merge everything into one multiplication + add/sub, but this is easier to understand):

/19 *2 -1
0..19 -> 0..1 -> 0..2 -> -1..1
Next, we calculate 'gz' based on gx and gy. I use exp(-(sqr(gx)+sqr(gy))) which is an exponential 'hump' the shape of the normal gaussian distribution. We multiply it by 3 and add 1.6 to make it fit in the AVS window.

Next we rotate (gx,gy) by t radians, so that we get the point (x1,y1). We now use x1 as the x-coordinate, gz as the y-coordinate (z points up) and y1 as the depth coordinate (y points into the screen). We transform it into perspective by dividing (x,y) by z (plus a camera offset of 3).

Now all we need to do is make sure (px,py) traverse the values 0-19. First, we check per point if px is smaller than 19: if so, we add 1. If px equals 19, we reset it back to zero. If px equals zero, we increase py by 1.
This has the effect of traversion one row on the grid, and when we reach the end, we go to the next row and start over.

0 1 2 3 4 5 18 19
. . . . . . ..... . . |
. . . . . . ..... . . |
----------> \|/
v
And finally there's a little extra: AVS draws the superscope as one chain of line segments. This means that there will be a connecting line between the different rows, which is not what we want. So, we set the color to black for that certain line segment, and white for all the rest: if you use additive or maximum blending, the black lines won't show up.

Tadaa... you now have a rotating plot.
You could duplicate the scope and reverse the meaning of gx and gy in the second copy, that way you get a grid of lines. Make sure you reload the preset to synchronize the two scopes... (result is attached)

So you see if you want to plot a graph, you have to do *everything* yourself.
VisualAgnosia#
Awsome

Well I didn't expect that either ...

Thats quite a conecise explantation, Totaly get it..mind you I'm gonna print it out and study it like I have with 10 or so other wicked posts I've found. I'm getting a bit of a progression thing happening... from a couple days ago I'm getting more and more things undercontrol... still a long way to go. As it goes it's just a matter of sticking with it and "Dreaming new ideas"

A bit of props for AVS

--- Studing maths.. which I find interesting usually.. To use something with a straight away effect on visuals in such a dynamic flow of colour and music... Somehow's effected the time I spend studying by three fold --- weird???

Thanks for the effort again UnConeD.
you've helped yet ANOTHER potential AVSer bridge another gap


A note to other neewuubies like me have a look the load example superscopes, the code in there will give some indication as to the layout of the code. B4 you wrote this last post UnConeD I was resorting to the 3D layout they had going on in there.

Peace

VIsAG🧟
shreyas_potnis#
Tips and Tricks 2

Tuggummi started the first one, but that was long ago. I am sure there will be many new tricks (and Tips).
Just post them here,
Here's one:

when the amount of ssc's is quite large then cramp all of these into one.:
eg:

init:
n=1000;a1=1/(499-1);vrem=n/10;pi=acos(-1);tpi=acos(-1)*2
point:
cp=bnot(cp);cn=cn+1;i1=i1+a1;colc=bnot(equal(cn,501));
trans=above(cn,500);v1=if(bnot(cn%vrem),v,v1+abs(v/10));
d=if(cp,1+v1*0.2,.98);th=t+i1*tpi; outx=sin(th)*d*r;outy=cos(th)*d*r;
inx=bnot(cp)*sin(th)*.3;iny=bnot(cp)*cos(th)*.3;
x=if(trans,outx,inx)+ox;y=if(trans,outy,iny)+oy;
red=colc;green=colc*.5;blue=0;
frame:
fr=fr+.01;t=t+ti*.1;ti=ti*.8;r=.4;cn=0;i1=0;ox=sin(fr)/2;oy=cos(fr)/2
beat:
ti=1;r=.5;hu=rand(618)*.01;fr=fr+sin(t*hu)
the trick is to draw everything in one ssc and then blacken out the point connecting the two objects.
then use a maximum or addictive blend to hide the trick
shreyas_potnis#
Originally posted by Nic01
Shreyas : How about posting that code and explaining the code step by step? 😛

On the other hand, colormaps can be used to replace a few colorclips. As long as the colors are not too close together, you can just use 2 of the same color and use a bounding box to make sure you get the right color.
I have done that thing to improve the speed, colourmaps and clips do the opposite!
i have already explained a bit of the code,but here's a detailed one.

set cn=cn+1 in point, this will increase value of cn every point, an ideal way to count the number of the point.

then use custom i values,
this is what i figured out:
incrementation value of i is inversely proportional to (n-1).
so, if n=10; then
after every point : i=i+1/(n-1);
i.e i=i+1/9;
i.e i=i+0.111111111111111111111111111111111.
so if you draw a circle using i1 instead of i when cn is less than 10 and then draw some other object when cn>10, then blacken out the point joining the two objects, you get two separate objects.

I hope you understood atleast some part of this, because I find it hard to explain things, especially complicated ones. if you cant figure out what this means, then maybe i will write an essay on this topic, after thinking hard and selecting my words 😁
shreyas_potnis#edited
long essay

This one is all about the 2 in 1 scopes, I wrote all this when I was offline in notepad and then posted it here:
the previous two explainations just explained the concept, now here's the explaination of the actual code:

-----------
Lets just consider the pixel part first because the beat and frame part is just for the movement of the scope.
here's the code for the ssc:

some variables required at init🙁in fact, all the variables in the actual init are required 🙂 )

n=1000;a1=1/(499-1);vrem=n/10;pi=acos(-1);tpi=acos(-1)*2;
(I will explain their use later on)

reset values per frame :
cn=0;i1=0;

pixel part:
cp=bnot(cp);
cn=cn+1;
i1=i1+a1;
colc=bnot(equal(cn,501));
trans=above(cn,500);
v1=if(bnot(cn%vrem),v,v1+abs(v/10));
d=if(cp,1+v1*0.2,.98);
th=t+i1*tpi;
outx=sin(th)*d;
outy=cos(th)*d;
inx=bnot(cp)*sin(th)*.3;
iny=bnot(cp)*cos(th)*.3;
x=if(trans,outx,inx)+ox;y=if(trans,outy,iny)+oy;
red=colc;green=colc*.5;blue=0;

explaination:
1) value of cp swaps beetween 1 and 0 every point. this is basically used to make solid scopes.
eg:- when we multiply x and y with cp, and when
a) cp=1, then x=x and y=y
b) if cp=0 then x=0 and y=0.
So, after every alternate point, the co-ordinates of the next point are (0,0). so, when we render the scope as lines, the entire part is filled with lines and we get a solid scope (provided the no of pts (n) is quite high)

2) cn:- this is the number of the point drawn. it is reseted to 0 every frame.

3) i1:- Custom i value. i1 is incremented by a1 every point.
value of a1 is 1/(499-1). ie. 488. ie.0.0208333...

4) colc:- used for hiding the point which connects the two objects.
colc=bnot(equal(cn,501));
So, when cn=501, bnot(equal(cn,501)) will return 0 else it will retun 1
cn is the number of the point. bu assigning rgb values to colc, the values for the 501th point will be 0 and for the other points will be 1.

5) trans:- no connection with its name and its values. I too dont remember why I used such a variable name.
trans=above(cn,500); this will return 1 if cn is above 500, else it will return 0. (use explained later).

6) v1: Custom v value.
v1=if(bnot(cn%vrem),v,v1+abs(v/10));
if cn is divided by vrem(n/10 i.e 1000/10 i.e 100)
and the remainder is zero ( vrem is a factor of cn) then return v else return v1+abs(v/10);
In short v1 is used for the waves created in the outer circle. whenever vrem is a factor of cn, then value of v1 will jump to v ( i.e after every 100 point value of v1 will be v), else it will be v1+abs(v/10), the will create the normal waves.

7) d is distance for the outer circle. this will swap beetween .98 and 1+v1*.2 as cp swaps beetween 1 and 0.
d=if(cp,1+v1*0.2,.98);

8) th:- angle ( usually r ) th = t+i1*tpi;
we have used cutom i value, so at the start i1=0 and at the end it is roughly 2. this is because we want to draw basically 2 circles.

9) outx=sin(th)*d;
outy=cos(th)*d;
the outer circle. conversion of polar coords into rectangular coords.

10) inx=bnot(cp)*sin(th)*.3;
iny=bnot(cp)*cos(th)*.3;
the inner circle (d=.3). value swaps beetween 0 and sin(th)*.3 or cos(th)*.3 for the solid fill effect.

11) x=if(trans,outx,inx)+ox;
y=if(trans,outy,iny)+oy;
trans:
trans=above(cn,500);
so, if cn<500 draws the outer circle, else draw the inner circle.

12) red=colc;green=colc*.5;blue=0;
colc:
colc=bnot(equal(cn,501));
if cn=501, then red=0; green=0;blue=0;
if cn!=501 then red=1; green=.5;blue=0.
this is for the orange colour.

finally, i did it. hope you understand this, I havent explained the movment part because it is all normal and basic stuff.

this is the preset I used the scope in:
found in my first pack.

btw. good way to increase posts 😁
shreyas_potnis#
rovastar did a good job here, merged the two threads, Thanks.
edit: What about converting this thread into a sticky? can we do that?
anubis2003#
I was about to tell you to use the edit button until I realized that these posts have some time separating them. Yay for Rovastar, someone listened to my request!😁
anubis2003#
Good, it's stickied now. Here's a tip for AVS n00bs: Don't submit your packs to winamp.com without first posting them here. We will give you a lot of constructive criticism and you can then fix your presets to make them even better. And beware the Atero.
Nic01#
Actually, it's more like check the forums for your question, doublecheck, triplecheck, quadruplecheck, and pentuple check for it before posting a new topic about your question or face the wrath of Atero (And the rest of the regulars dogpiling on you)
Nic01#
*NOT CHECKED FOR REPEATED ENTRIES*

Custom inversion :

White SSC in an effect list, XOR output. Any other white surface will do.

AVS Lingo :

SSC - Superscope
DM - Dynamic Movement
DDM - Dynamic Distance Modifier
DS - Dynamic Shift
MP - Moving Particles
Convo Filter (Or just plain convo) - Convolution Filter
Fast Brite - Fast Brightness
(There are more, figure out yourself)

Chroming :
Chroming is changing the spectrum from 0...255 into 0..255...0 where 128 is now 255 - So it filters out anything too white.
It can be done in several ways :
-Effect list - Fast brite - Replace input, SubBlend2 output, another fast brite outside.
-Buffer save, clear screen, 3 effect lists. One colormap for each list, additive blend for each list (except for the top). Each taking different color, with buffer restore on top of them. Change the white into the corresponding colors, drag them to middle. Add a black in the end. (SLOW, too much work, just saying it)
-List (Replace input, max output) with invert in it, then an invert (outside the list) and a fast brite.
-Jheriko's multi filter. Fastest.

Rotation Delay :

(Copied directly from fsk's guide. For the preset in action, go to fsk.deviantart.com, galleries, and then "Zvezda")

rotation dellay


init:
effect=25

on beat:
g=getosc(0,0,0)/15

per fr.:

rz1=rz1+g; srz1=sin(rz1)/10; rz2=rz2+srz1;
--------------------------------------------------------------
usualy you just use the rz1 but in this case you have to put it thru another sin to make the changes in the rotation soft (dunno how to put it otherwise - remeber the first tentacle I sent you, it didn't have tis and it kinnda jumped on beat)

per point:

x1=i*1.6-.8;
y1=0;

dst=sqrt(x1*x1+y1*y1);
-----------------------------------
The distance from center

rz=rz2-srz1*dst*effect;
----------------------------------
this is the effect part

srz1 is the current change in rotation, so if you aplly les (-) rotation to the points further away from the center (*dst) you get the desired effect 🙂.

cz=cos(rz);
sz=sin(rz);
----------------
this needs to be in the per point.

x=x1*cz+y1*sz;
y=y1*cz-x1*sz

That is it 😁. For 3D aplly to all three axes and use a 3D distance

--

Shape Engines :

Use point-by-point assigning (p=p+1 in pixel, p=0 in frame, and assign coordinates). Put in p%(points used in the shape) in place of the p in equal(p,n).
Use p1=if(equal(p%(points used in the shape),1),p1+1,p1) in pixel and p1=0 in frame to assign numbers for the shape.

--

Fix aspect ratio before posting your pack, or UnConeD will be angry at you.

Don't do the normal getosc syncing, or Atero will be angry at you.
Heck, he'll be angry at you anyways - The standard greeting.
AVS Axer#
There is another way of syncing other than with getoscs or getspecs?
please explaino.

Also..
There are some *hidden* coding paramerters for sscs and dms etc.
exp(x) returnes the 'e' (the exponential constant) to the power of x.
atan2(a,b) i really have no idea.
and (for the true n00b)
alpha=0..1 -alpha sets the level of alpha blending in a dm if the blend setting is activated. this is done per point, so that mixtures/grandients of input and output can be created. can also be used to add fog and/or cover 'uglyedge' syndrome for 3d scopes. But i wont get into that. If you can ray-trace, then i think you can work this out for yourself.

also pi=acos(-1);
cheers to whoever enlightened us on this one. (methinks steven)

thats all i can think of for now..

Oh Yeah.. With SSC. Never restrict yourself to creating shapes strictly from x/y= some form of 'i'.
This is a very restrictive mothod in some cases.

eg.
init-- t=0; s=0; n=64

perframe-- t=0; s=0
perpoint-- s=if(equal(t,8),s+1,s);
t=if(equal(t,8),0,t+1);
x=s/8; y=t/8

this should creat a 8x8 dot grid, but i cant test it on this comp so correkt me if im wrong.
use colour coding to blacken the bits where lines cross over screen.
Nic01#
AVS Axer :

Exp(x) and atan2(a,b) are already known, alpha is well known, pi is already a basic knowledge.

Oh, and your code is wrong (I didn't test, so not 100% sure).
1. T is never 8, so there is never any increase of t or s, so the counter won't work.
2. The x will just draw across the screen, so the correction should be x=s/8-t+1;
NemoOrange#
Heaven forbid that any newbie actually looks at this thread, cause if they do they will be completely overwhelmed.

My best advice is to not go into Whacko AVS or El-vis's stuff & try to pick apart how the hell those codes work. First go in, & try some very simple codes. Then check out other presets with very simple codes and see how they work. I think most of my stuff is pretty easy, I don't use too many varibles & other crap. (shameless self promotion).

All in all, start out small & build from there.
AVS Axer#
hey nic01.. i didnt mean they arnt well known.. they just explained in the program. so newbs may not know about them
Magic.X#
Originally posted by NemoOrange
Heaven forbid that any newbie actually looks at this thread, cause if they do they will be completely overwhelmed.
This wasnt meant to be a newbie startup thread but a knowledge topic for advanced AVSers (correct me if i got something wrong)
Raz#
This isn't supposed to help anyone in particular, just anything that may be useful to anyone goes in here.