Monday, September 19, 2011

Thursday, August 25, 2011

Fractal Time!^3

Awesome! I'm sorry for posting the lower res version of this before, but here it is in all its beauty! This orbit seems like it would make a great wallpaper so its in 3x the size of 1080p. I fixed the comments so anyone can post so please, feel free to leave some feedback. As always, enjoy!

--Edit--
Seems blogger has scaled the image to 1600x900. It should still scale but if you'd rather have it in higher resolution let me know.

Saturday, August 20, 2011

Fractal Rant

Ok, so this won't really be a rant. Just a little update on my research, which I've come to realize, I haven't really explained very well here. So let me get that out of the way so  I can move on to the new stuff!

The images displayed on my blog (except for one) aren't really fractals in the sense that they're not a display of a set on the complex plane that represents the solutions to an equation. The Mandelbrot Set is, along with Julia sets, and plenty more. Most of the images on my blog however, are plotted on a Cartesian plane. This lends from the fact that instead of a set of solutions to a complex equation, they are the orbit of an Iterative Function System (IFS).

More particularly, most of my research has involved - or more appropriately: revolved around - this function. The image the link points to is an orbit of a function I've dubbed the Clover Function; primarily because it resembles a four leaf clover. The function has several properties that have made it so interesting to me, and is the reason I've put so much time and effort into understanding it better. Here they are in no particular order:

  •  The function seems to be containable for any number of iterations in a finite area. To clarify, if the pixels of an image at 1080p resolution (1920x1080 pixels) represent a portion of the Cartesian plane where the top left of the image is the origin, the axes are oriented in such a way that down is y+ and right is x+, and the bottom right of the image corresponds to (1920,1080), any number of iterations of this function can be plotted within that portion of the plane.
  • The function seems to be very self-similar. Determining whether or not the self-similarity is infinite is one of my main research objectives. A pattern is at least visually evident in each leaf of the clover, and seems to repeat itself getting smaller and smaller each time. 
  •  Scale dependency. The portion of the function that enables it to be contained in a finite space is also the portion that makes it very difficult to scale (zoom in/out). There are two constants in the function - cX and cY - and the IFS algorithm randomly (and with equal probability) chooses which combination of addition or subtraction to use [ +cX +cY, -cX +cY, etc.] for each iteration. Different values of cX and cY determine:
    • Size of the "clovers".
    • Where on the plane the points are plotted to.
    • Shape of the "clovers".
  • Because the output relies so heavily on these two numbers, it is difficult to isolate one effect of changing them. For instance changing shape without changing size, or changing  size without changing location on the plane, etc. 
  • Interdependent variables. The x and y values of each iteration depend on each other. That is to say, instead of y=mx+b or y = ax² + bx +c, the function follows a different form. More akin to:
    x = y²/(x+2) ± cX
    y = x²/(y+2) ± cY
    Please note that isn't the actual function; also that the x and y output both come from initial input. Here x is computed before y, but the new value for x is not used in the computation of y.
  • In the previous bullet the two constants are shown in similar fashion to how they are used in the IFS. Note that there are 4 combinations of addition or subtraction of cX and cY. As it turns out the function seems to be bound by the four points (cX,cY), (-cX,cY), (-cX,-cY), and (cX, -cY). After countless times of drawing this function, points have only missed the image if cX and cY were larger than the corresponding resolution (by some multiplicative value). Of course, observation is one thing; proof is another. In the IFS, each combination of sign (+ or -) of each constant is done in a separate method, so there are 4 methods that correspond to the clover function. Each method is selected at random and the output is plotted on the image. 
That's a brief overview of what has been done, but more importantly, properties that need more understanding. Working in two dimensions is excellent, because the points do not form a solid object making them terrible for translation into a three dimensional polygon. Also note that there is no Z value. Well, there wasn't. Recently, some of the limitations of the IFS algorithm in Java became somewhat overwhelming, and have begun to hinder further understanding of several properties. Translation of the core parts of the algorithm to Processing have changed that. Giving up high resolution output with some degree of color manipulation, to gain rapid translation, scaling, and even rotation! While the Java implementation is still very useful for visually studying the orbits, the ability to manipulate cX and cY along with which area is in view in real time is extremely beneficial. Also, while the output of the function remains in two dimensions, it is being plotted in 3 dimensions. This allows for moving the plane function is on forward and backward, without changing how the points are calculated; i.e.: zoom in/zoom out.
As a matter of fact, the benefits of the translations go beyond zooming and rotation, they also allow for translation! 

Tuesday, August 9, 2011

Fractal Time!


I recently re-worked my rendering algorithm allowing me to draw the images at much larger sizes. It is now possible to draw the image 16x larger than 1080p, which is perfect for downsampling with a bicubic interpolation algorithm. While I am currently working on the bicubic interpolation algorithm, it is used by most photo editing software, and the results so far have been great. Please note that the images I upload to blogger do suffer some quality loss, so unfortunately the images in my posts do not meet the standards I have for acceptable output. If anyone knows how to optimize images for uploading on to blogger, please leave a comment below.

Enjoy!

Tuesday, June 21, 2011

No Rant, Just Fractal - Plus a new feature


    A new fractal and a new blog feature, check out the new forum here!

Saturday, June 11, 2011

Wednesday, June 8, 2011

No Rant, Just Fractal Orbit

An orbit composed of several different functions, including my clover orbit. Enjoy!

Wednesday, May 18, 2011

The Clover Orbit


No Rant, Just Fractal

A fractal I generated yesterday with sterilingwar 2. Enjoy! Please click for fullsize, its a 1080p image :)

Tuesday, May 17, 2011

Rant Two - Hard Drive Sizes

Through my academic career I've fancied myself a computer scientist who just hasn't gotten his degree yet because of all the red tape. However, after 5 years of being a professional student, the number of people in my classes that say a 500GB hard drive comes home with around 465GB because of "formatting" makes my brain hemorrhage. Sure, formatting can take up 35GB... if you're using FAT32. And unless you're using your phone's SD card as your primary hard drive, you're probably not using FAT32. "Ok asshole, where is the rest of my space then?". Quite frankly, it doesn't exist. When you buy a 500 gigabyte hard drive, you're getting just that, five hundred gigabytes. But computers don't use gigabytes. They use gibibytes. So, whats the difference?

SI decided that they were going to keep kilo, mega, giga, terra, etc., on powers of ten, but computers use powers of two. Powers of 2 increase three orders of magnitude every 10th integer; powers of 10 increase three orders of magnitude every 3rd integer. The following is a table of the powers of 2 alongside the powers of 10 that correspond to the SI prefixes. After that I will discuss the differences, the different prefixes for powers of two, and what that means when you pop that brand new hard drive into your computer.

Power of Two Value Binary Prefix Power of Ten Value Decimal Prefix
2 ^ 10 1,024 Kibi (KiB) 10 ^ 3 1,000 Kilo (KB)
2 ^ 20 1,048,576 Mebi (MiB) 10 ^ 6 1,000,000 Mega (MB)
2 ^ 30 1,073,741,824 Gibi (GiB) 10 ^ 9 1,000,000,000 Giga (GB)
2 ^ 40 1,099,511,627,776 Tebi (TiB) 10 ^ 12 1,000,000,000,000 Tera (TB)

Now we can see the difference between the number of bytes in a gibibyte (GiB) and in a gigabyte (GB). There are 73,741,824 more bytes in a gibibyte than a gigabyte, and since your computer works with gibibytes not gigabytes, thats a big difference. So, when you buy a 500GB how many GiBs are you getting? Well, 500GB is 500,000,000,000 bytes, so divide that by 1,073,741,824 and you get 465.661287GiB. I am using a 500GB hard drive, and 465 GiB is what my computer tells me I have; and I'm using most of it. Not a whole lot of space used up for formatting huh?

If you have any questions, would like me to perform the calculation for another size of hard drive, or have any recommendations for this article, please leave a comment. :)

Rant One - This Article is Tracking You

Its no surprise that in the Information Age, information is... well... valuable. On this giant 'web' of interconnected servers and clients we call the internet, our personal information is a gold mine -except we call it data mining instead of gold mining and you can't make an engagement ring with it. However dating sites charge a heavy premium on helping you find someone you might want to give an engagement ring to.

It all starts with the sign up process. Whether its a dating website, an online forum about the car you drive, or facebook, if you want to communicate with others on that site you have to sign up. But hey, its free! Companies around the world have figured out how to pay for all these really cool products we want, without even charging us for them! They pay for the servers, the bandwidth, a place to put the servers, people to make sure they're running, and then let us use it for free! Makes sense right? Didn't think so. So how exactly do they make money? Advertising of course! So how does advertising generate enough revenue to keep this monolithic website going? Make sure you're advertising the right stuff to the right people! Wait... how do you do that? Oh yeah, just track the people you're advertising to, figure out what they like, and put some ads up on the site they're viewing. Maybe telling them about your interest in 90's cyberpunk when you signed up wasn't quite as innocuous as you thought.

See how quickly that gets hairy? As a matter of fact, if I wanted to know where people reading this are from I just have to click a few links and I'll have a map in front of me, with orange circles indicating the locations of incoming traffic. Now of course, that map doesn't tell me who those orange circles are representing, just that they were there when they accessed the page. So, I have no idea who you are unless you leave me a nice little comment... but Google does. IP addresses are given out by internet service providers, and they usually make you "Sign Up" just like every other website. They also keep that information, and tie it to the IP address you have at any given time. With the right tools, companies like Google, Facebook, and Blizzard can find out where exactly you are based just on the IP address you have to use to get to their product. Apropos Blizzard claims they can track weather phenomena based on players who are not online.

So, now some log file knows where you are and another knows you like Netrunner. But they are in two completely different places, so the information isn't tied together. Darn, Facebook won't be able to sell you the newest set of cards from the game. Wait! What if we find a way to link those two pieces of information together and sell them to Facebook! We'd probably make a mint right? Sorry, these guys beat you to it. So did many other companies like them.

The point please... As the old saying goes, nothing is free. As deplorable as it seems for companies to track where we go on the internet, and what our interests are, we unknowingly give up that information as a sort of bartering token in exchange to fulfill our need to update our statuses every 15 minutes. Don't worry though, its nothing new. Equifax, Transunion, and Experian have been doing it for years! Ok, maybe they're not checking to see if you like to buy shoes on eBay, but they do have a nice list of all the bills you have. Also, when and if you paid them. It would be terribly tedious to look through all of this when you're trying to get a loan for a TV at BestBuy so they found a way to encapsulate all that information in a number ranging from 0 to 800. Oh, you want to know what your score is? That'll be 20 bucks please. Or you can listen to this funny guy and goto freecreditreport.com where you will once more trade your personal in formation to get... your personal information.

Ok, so what now? Fortunately, its fairly difficult for these companies to actually verify the information you put into all these forms without a subpoena. If you don't like what they're doing, lie to them; and I mean LIE. Everything from your name to your taste in food. Tell them your pet tiger's name is bobby and that your walls are painted orange. Or play Netrunner for real, and try to extract your data from the matri... I mean internet.

Whether or not this is an acceptable practice is a matter of opinion. My opinion is that everyone should know that it is being done. Ultimately the decision is ours to make; use the product and pay for it with information, or quite simply, don't use it. However, most websites and applications don't tell you they are doing it. I didn't know about RapLeaf until I read this article, but I wasn't surprised when I read it. If you are, think about how much you value your information, and whether not you're willing to sell it before you give any website your actual information. Most tracking companies claim the data collection to be benign because its anonymous, but that isn't entirely true, and even if it is: they're still tracking you, they just don't record your name. Just your IP address. Woops.