Deviant Login Shop  Join deviantART for FREE Take the Tour
×



Details

Submitted on
August 28, 2012
Image Size
3.0 MB
Resolution
640×640
Link
Thumb
Embed

Stats

Views
914
Favourites
13 (who?)
Comments
10
Downloads
48
×
Plasmid 3D Wireframe Rotation by pifactorial Plasmid 3D Wireframe Rotation by pifactorial
My first attempt at rendering Plasmid as a true 3D object. Created a PLY file using Python, and then rendered it with Blender.

Unfortunately, it will take some work before I can render it as solid rather than wireframe, because the code I used to generate the model still messes up some of the faces where the surface intersects itself.
Add a Comment:
 
:iconphantomofthesymphony:
phantomofthesymphony Featured By Owner Apr 7, 2014
That's cool. :)
Reply
:iconllewelld:
llewelld Featured By Owner Aug 31, 2012
Thanks for the very detailed explanation. I appreciate you going to such lengths.

I'm afraid the sequence notation is a bit lost on me (deep ignorance here I'm afraid). Is that seven separate sequences and i the number of iterations? Sorry: I should look this up.

> The reason the components don't have an ordering defined for n>=3 is that they are calculated from the roots of a degree-n polynomial.

So for n=3, could you possibly consider each of the three roots separately by representing them in polar form and fixing the angle as a multiple of 2pi/3 to generate the three planes separately (except at the discontinuities)? Sorry, I know I'm spouting about things I know nothing about (it was just a thought in case it helps solve the problem).
Reply
:iconpifactorial:
pifactorial Featured By Owner Aug 31, 2012
> I'm afraid the sequence notation is a bit lost on me
It's a sequence of seven complex numbers. Care of Wikipedia:
"A complex number is a number that can be put in the form a + bi, where a and b are real numbers and i is called the imaginary unit, where i2 = −1."

The function I referenced is: [link]

> So for n=3, could you possibly consider each of the three roots separately by representing them in polar form and fixing the angle as a multiple of 2pi/3 to generate the three planes separately (except at the discontinuities)
I'm not sure if I follow, but there is a way to find the roots of a cubic function that involves rotations of 2pi/3 in the complex plane. I implemented this, I can't remember for certain if any of my renders use it, but I think Omphalos might. Still has discontinuities, though.

As for simply sorting the roots by their angle (i.e. complex argument), that doesn't work because it's arbitrary what angle you define as "zero". If you rotate through the zero angle, suddenly your biggest angle can inadvertently become your smallest angle, or vice versa.

Last but not least, even if you could sort the roots themselves (e.g. "first root", "second root", "third root"), sometimes a single continuous plane of the surface will switch from using one root to using another, so putting all of the "first roots" on one plane will still give discontinuities. What a mess! ;P
Reply
:iconllewelld:
llewelld Featured By Owner Sep 3, 2012
Thanks as always for the very detailed reply. That's very helpful, and I think I'm understanding better now. I was confused because I had assumed it would be an infinite sequence for some reason.

For the part about complex cube roots, you're right about what I was referring to. I can see the problem of arbitrary angles, so I guess that doesn't offer a solution then :(

At least it doesn't seem to have prevented you generate some great renders, and a printable version as well. Thanks again for taking me through all of the details.

I know it sounds silly, but personally I find the images even more beautiful with some better understanding of what they represent :)
Reply
:iconllewelld:
llewelld Featured By Owner Sep 3, 2012
Just to clarify, when I said 'infinite sequence' in my previous comment, I meant 'non-cyclic'.
Reply
:iconllewelld:
llewelld Featured By Owner Aug 31, 2012
Aaargh :angered: Why do I always do this? This was supposed to be a reply to your earlier comment.
Reply
:iconllewelld:
llewelld Featured By Owner Aug 28, 2012
Fantastic. This works really well. Yet another perspective on a fascinating surface that gives away a little more of the secrets of the structure.

I don't see where it messes up though, and it would be wonderful to see it rendered.
Reply
:iconpifactorial:
pifactorial Featured By Owner Aug 28, 2012
I deliberately rendered it as wireframe because it hides the surface irregularities, which are a bit glaring once normals are calculated. The issue is this: there are three points (with different z coordinates) for each x and y coordinate. All I can calculate with certainty is the vertices themselves - I have to write a script to then try to join them together into faces. This works properly 99% of the time, but every time it joins two of the wrong vertices, it creates tearing and impossible geometry. You can see that here: [link]

If I get this problem resolved, I'm going to see if I can just use Blender's "solidify" modifier to turn this into something 3D-printable. The Lemniscate doesn't have any sealed-off cavities, I haven't yet been able to determine whether this does or not, but my guess is that it doesn't.
Reply
:iconllewelld:
llewelld Featured By Owner Aug 30, 2012
I appreciate that you already solved the problem for creating your Blender render, but I'm still curious about this after having read through your carefully detailed and very interesting explanation.

If you were using a standard Fourier Transform, I assume each of your layers would be represented as the coefficient of a different term. In this case, you could separate the layers by distinguishing the term.

I'm not sure how this relates to you Minimal Laplace Decomposition though. Presumably you can't do something similar? I'd be interested to know more. I'd also be curious to know what it is the surfaces represents in relation to the pre-transform complex sequences (assuming this is a coherent question!). How are you generating the sequences? Presumably this is what gives real control over the nature of the surfaces.

This is really great stuff, and I hope you'll forgive the quantity and ignorance of my questions.
Reply
:iconpifactorial:
pifactorial Featured By Owner Aug 30, 2012
> How are you generating the sequences?
In this case, the sequence is:
{1,
sqrt(2)/2 + i,
x + y*i,
-sqrt(2)/2 - i,
-1,
-sqrt(2)/2 + i,
-x - y*i}

This is 3/4 of the complex-plane lemniscate cos(t)+sin(2*t)*i when x = y = 0.

> I'd also be curious to know what it is the surfaces represents in relation to the pre-transform complex sequences
The inputs are x and y (as above), and the z value is Re(sigma), where sigma is the complex frequency term of each component. My earlier 2D renderings have a dark green line in them, which represents a slice of the 3D object through z=0. This is significant because z=0 implies that the complex frequency is purely imaginary, therefore the component is purely oscillatory.

>If you were using a standard Fourier Transform, I assume each of your layers would be represented as the coefficient of a different term. In this case, you could separate the layers by distinguishing the term. I'm not sure how this relates to you Minimal Laplace Decomposition though.
The reason the components don't have an ordering defined for n>=3 is that they are calculated from the roots of a degree-n polynomial. For n=2 we can at least separate out the "positive" and "negative" roots from the quadratic formula, as I did in [link], but even this gives clear discontinuities. The actual Riemann surface is continuous everywhere except the poles. The best I've been able to do is to sort the layers by z-value, and accept that the discontinuities will at least be "sane" and occur only at points of self-intersection.
Reply
Add a Comment: