byRo
![]() |
Up to now we've seen folks generating circles by multiplying orthogonal smooth gradients. For small circles the approximation is fine, but as the circle grows it becomes squarer.
However, there is no need to approximate. With the tools available in FF you can generate exact circles. 1) Wave.Triangle, output = x, origin at centre; 2) Math.Multiply, output = sqr(x); 3) Orthogonal gradients, outputs = sqr(x) and sqr(y) 4) Blend 50%, output = (sqr(x) + sqr(y))/2; 5) Threshold to size. Now, just need to figure out the relationship between Threshold parameter and the circle size. ![]() Rô ![]() _________________________________
My favourite question is "Why?". My second favourite is "Why not?" |
|||
Posted: June 10, 2006 7:01 am | ||||
Lucato
![]() |
Hey Rô, if you replace 'Wave' and 'math' for just 'Gausian' you get the same, don't you?
Exchanging the subject, have you checked this out ? |
|||
Posted: June 10, 2006 7:30 am | ||||
Kraellin
![]() |
Ro,
i'm not even going to pretend i know why that works. i'll have to leave this as one of those that fits into the category of something sufficiently above my own level to seem as if magic. but, i can play with it ![]() craig ![]() If wishes were horses... there'd be a whole lot of horse crap to clean up!
Craig |
|||
Posted: June 10, 2006 7:58 am | ||||
Quasimondo
![]() |
No, that will not give you the same result. What you need is a true parabola. The gaussian curve uses a different formula what you can see at angle of the outer edges. Great work Rô! |
|||
Posted: June 10, 2006 11:32 am | ||||
uberzev
![]() |
Nice work, but for my uses I prefer a technique that produces evenly spaced concentric circles. This also produces more predictable threshhold results.
http://www.filterforge.com/filters/418.html ![]() |
|||
Posted: June 10, 2006 11:55 am | ||||
byRo
![]() |
Oops: Can't edit the first post so I'll correct the Math here. It's 2x, duh
![]() 1) Wave.Triangle, output = 2x, origin at centre; 2) Math.Multiply, output = sqr(2x); 3) Orthogonal gradients, outputs = sqr(2x) and sqr(2y) 4) Blend 50%, output = (sqr(2x) + sqr(2y))/2, but sqr(2x) + sqr(2y) can be replaced by sqr(2r) - where r is the radius; 5) Threshold(t) to size: t = sqr(2r)/2, rearranging r = root(2t)/2 Examples: For a full-size circle r = 0.50, t = sqr(2 x 0,50)/2 = 0.5 For a half-size circle r = 0.25, t = sqr(2 x 0,25)/2 = 0.3536 If t = 0.4, r = root(2 x 0.4)/2 = 0.4472 Rô _________________________________
My favourite question is "Why?". My second favourite is "Why not?" |
|||
Posted: June 10, 2006 2:34 pm | ||||
byRo
![]() |
I did a quick check and was going to agree with Lucato (obs: change blend to multiply also). Now I'll have a closer look and also see if I can do the math. Rô _________________________________
My favourite question is "Why?". My second favourite is "Why not?" |
|||
Posted: June 10, 2006 2:42 pm | ||||
byRo
![]() |
The math works just fine for Gaussian alternative.
Formula is proportional to "e" to the power of sqr(-x) When the two directons are multiplied in the Blend, the power becomes sqr(-x) + sqr(-y), which is a circle-like function - so yes it does return a true circle. Still think the first method is easier to understand and control though. ![]() Rô _________________________________
My favourite question is "Why?". My second favourite is "Why not?" |
|||
Posted: June 10, 2006 5:11 pm | ||||
Quasimondo
![]() |
Oh wow - I'm impressed. Can you post the filter in the Gaussian version? |
|||
Posted: June 11, 2006 5:57 am | ||||
byRo
![]() |
||||
Posted: June 11, 2006 8:15 am | ||||
byRo
![]() |
||||
Posted: June 11, 2006 8:19 am | ||||
Vladimir Golovin
Administrator |
Guys, you scare me!
|
|||
Posted: June 12, 2006 9:10 am | ||||
Lucato
![]() |
Mee too! I get hard time with my poor English trying to read all these stuffs, adding all these mathematics than, pppfffff no way!!!! ![]() ![]() |
|||
Posted: June 12, 2006 5:58 pm | ||||
uberzev
![]() |
||||
Posted: June 14, 2006 5:05 pm | ||||
deAd |
It can be done very simply using Tiles and Kaleidoscope, and I haven't seen any squaring...
|
|||
Posted: October 29, 2006 1:08 pm | ||||
jffe |
And here I was just using the *Frame* module with *corners* set to 0% ha-ha. But then I have no idea most of the time, and with a program that's as open ended as this one, there's probably 20 ways to make circles of one form another eh.
![]() jffe Filter Forger |
|||
Posted: October 29, 2006 8:29 pm | ||||
CFandM
![]() |
Well actually this thread pre-dates the frame component...Last posting was
Posted: June 14, 2006 5:05 pm The frame component wasn't in FF at that time.. So this was a way to get a circle at that time.. Stupid things happen to computers for stupid reasons at stupid times! |
|||
Posted: October 29, 2006 9:06 pm | ||||
CFandM
![]() |
The Frame component was first seen in the previous beta before the newest release.
That was in early Aug. Stupid things happen to computers for stupid reasons at stupid times! |
|||
Posted: October 29, 2006 9:10 pm | ||||
jffe |
Well, that's what I get for bumping ancient threads on a boring day ha-ha.
![]() jffe Filter Forger |
|||
Posted: October 30, 2006 7:34 pm |
Filter Forge has a thriving, vibrant, knowledgeable user community. Feel free to join us and have fun!
33,711 Registered Users
+18 new in 30 days!
153,531 Posts
+36 new in 30 days!
15,347 Topics
+72 new in year!
25 unregistered users.