# Rheotomic Surface, how?

**URL:** <https://forum.dynamobim.com/t/rheotomic-surface-how/85245>\
**Category:** Geometry\
**Created:** [January 23, 2023, 6:19pm UTC](https://forum.dynamobim.com/t/rheotomic-surface-how/85245 "2023-01-23T18:19:38Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Draxl\_Andreas](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/draxl_andreas/32/145744_2.png) [@Draxl\_Andreas](https://forum.dynamobim.com/u/Draxl_Andreas)\
**Post date:** [January 23, 2023, 6:19pm UTC](https://forum.dynamobim.com/t/rheotomic-surface-how/85245/1 "2023-01-23T18:19:38Z")

</div>

Hello,

i got hypnotized by these forms? is there anything to built up this in dynamo ? or placing families based on that 🙂

> **[Rheotomic Surfaces](https://spacesymmetrystructure.wordpress.com/rheotomic-surfaces/)**
>
> These are Rheotomic Surfaces – from the Greek Rheo – flow and Tomos – cut or section (as in tomography) The horizontal sections of these surfaces correspond to the moving equipotential lines of a 2…

KR

Andreas

---

<div class="post-metadata">

**Author:** ![christian.stan](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/christian.stan/32/166296_2.png) [@christian.stan](https://forum.dynamobim.com/u/christian.stan)\
**Post date:** [January 23, 2023, 6:28pm UTC](https://forum.dynamobim.com/t/rheotomic-surface-how/85245/2 "2023-01-23T18:28:42Z")

</div>

Hi, you looked on the site (there is his address on his file) of Mr. Vikram  
Mr. Marcel must have leads too I think, he seems a fan of geometric objects

cordially  
christian.stan

---

<div class="post-metadata">

**Author:** ![Draxl\_Andreas](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/draxl_andreas/32/145744_2.png) [@Draxl\_Andreas](https://forum.dynamobim.com/u/Draxl_Andreas)\
**Post date:** [January 23, 2023, 6:30pm UTC](https://forum.dynamobim.com/t/rheotomic-surface-how/85245/3 "2023-01-23T18:30:44Z")

</div>

@christian.stan ,

so i “awake” them to this topic 😉 @Vikram_Subbaiah @Marcel_Rijsmus

---

<div class="post-metadata">

**Author:** ![Marcel\_Rijsmus](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/marcel_rijsmus/32/8539_2.png) [@Marcel\_Rijsmus](https://forum.dynamobim.com/u/Marcel_Rijsmus)\
**Post date:** [January 23, 2023, 7:33pm UTC](https://forum.dynamobim.com/t/rheotomic-surface-how/85245/4 "2023-01-23T19:33:03Z")

</div>

Let me sleep on it 😄  
No ,seriously i’ve moved onwards since.  
Maybe @Vikram_Subbaiah can be of assistance

---

<div class="post-metadata">

**Author:** ![christian.stan](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/christian.stan/32/166296_2.png) [@christian.stan](https://forum.dynamobim.com/u/christian.stan)\
**Post date:** [January 23, 2023, 8:29pm UTC](https://forum.dynamobim.com/t/rheotomic-surface-how/85245/5 "2023-01-23T20:29:04Z")

</div>

Here is a surface I don’t know if it comes within the prerogatives, you can add a little movement to the cylinder

 ![Capture d’écran 2023-01-23 212632](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/a/6/a628a1c6b9046b77b873a9c70986880dc73ffe21.jpeg)  
[23 janvier funny Draxl.dyn](https://forum.dynamobim.com/uploads/short-url/n5CObiuYl42YY7o9vNSLDvFmpfX.dyn) (29.1 KB)

cordially  
christian.stan

---

<div class="post-metadata">

**Author:** ![solamour](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/solamour/32/153516_2.png) [@solamour](https://forum.dynamobim.com/u/solamour)\
**Post date:** [January 23, 2023, 9:24pm UTC](https://forum.dynamobim.com/t/rheotomic-surface-how/85245/6 "2023-01-23T21:24:52Z")

</div>

Not Rheotomic, but this thread has similar things 😃

> [@Organic Geometry Creation](https://forum.dynamobim.com/t/organic-geometry-creation/23154/5):
>
> its all about math, that is every shape and curve has a specific equation or combinations of multi equations. if you want to draw this on dynamo , you have to draw the basic zigzagged line which have basically sinusoidal shape then turn them to solid with specific height and copy it to layers, every layer has it’s own values and constants …etc. it’s need some efforts indeed. good luck

---

<div class="post-metadata">

**Author:** ![leonard.moelders](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/leonard.moelders/32/108216_2.png) [@leonard.moelders](https://forum.dynamobim.com/u/leonard.moelders)\
**Post date:** [January 24, 2023, 8:23am UTC](https://forum.dynamobim.com/t/rheotomic-surface-how/85245/7 "2023-01-24T08:23:01Z")

</div>

Hi @Draxl_Andreas you could have a look at this grasshopper script if you have access to rhino:

> **[Rheotomic surfaces and flowline generation tool](https://www.grasshopper3d.com/profiles/blogs/rheotomic-surfaces-and-flowline-generation-tool)**
>
> Around 3 years ago I wrote an essay on my blog about what I called rheotomic surfaces - a type of surface I had developed related to fluid flow and electrosta…

If you have, but haven’t worked with grasshoppoer yet: It’s quite similar to dynamo and you should have no problem in analysing how the script works.

Here is a demo video of the author using his script:

https://player.vimeo.com/video/37060860?h=05ab80bcbd&app_id=122963

---

<div class="post-metadata">

**Author:** ![Draxl\_Andreas](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/draxl_andreas/32/145744_2.png) [@Draxl\_Andreas](https://forum.dynamobim.com/u/Draxl_Andreas)\
**Post date:** [January 25, 2023, 8:30pm UTC](https://forum.dynamobim.com/t/rheotomic-surface-how/85245/8 "2023-01-25T20:30:15Z")

</div>

@christian.stan @solamour @Marcel_Rijsmus @leonard.moelders ,

it is fake but funny … i found something to the Dyole function

 ![image](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/b/2/b2541d05e86b01a3a3ff3554219fb8fac5606248.jpeg)

thats exposed to the grasshopper graph as pythoncode…

```auto
#Seghier Mohamed Abdelaziz - 2021

import Rhino.Geometry as rg
import ghpythonlib.components as ghc
import math

pow = math.pow
sin = math.sin
cos = math.cos
pi = math.pi
sqrt = math.sqrt
q = p*n

def prop(z,t,p,q):
    w = pow(z,p/q)
    s = (p*t+2*pi)/q
    v = [w,s]
    return v
    
def _d(z,t,p,q):
    w = pow(z,p/q)
    s = (p*t+2*pi)/q
    v = pow(z*cos(t)-w*cos(s),2)+pow(z*sin(t)-w*sin(s),2)
    return v
    
def ddz_d(z,t,p,q):
    w = pow(z,p/q)
    s = (p*t+2*pi)/q
    ddz_w = (p/q)*pow(z,(p-q)/q)
    v = 2*(w*cos(s) - z*cos(t))*(ddz_w*cos(s) - cos(t))+ 2*(w*sin(s) - z*sin(t))*(ddz_w*sin(s) - sin(t))
    return v

def ddt_d(z,t, p,q):
    w = pow(z, p/q)
    s = (p*t + 2*pi)/q
    dds_t = (p/q)
    v = 2*( z*cos(t) - w*cos(s) )*( -z*sin(t) + w*sin(s)*dds_t )+ 2*( z*sin(t) - w*sin(s) )*( z*cos(t) - w*cos(s)*dds_t )
    return v

def _s(z,t, p,q):
    v = pow(z + pow(z, p/q), 2)
    return v

def ddz_s(z,t, p,q):
    w = pow(z, p/q)
    ddz_w = (p/q)*pow(z, (p-q)/q)
    v = 2*(w+z)*(ddz_w+1)
    return v
    
def _r(z,t, p,q):
    v = _d(z,t,p,q) / _s(z,t,p,q)
    return v

def ddz_r(z,t, p,q):
    v = (ddz_d(z,t,p,q) * _s(z,t,p,q) - _d(z,t,p,q) * ddz_s(z,t,p,q)) / pow( _s(z,t,p,q), 2 )
    return v

def ddt_r(z,t, p,q):
    v = (ddt_d(z,t,p,q) * _s(z,t,p,q)) / pow( _s(z,t,p,q), 2 )
    return v

#-------------------------------------------------------
def _f(z, t):
            return _r(z,t,0,1) - _r(z,t,p,q)

def ddz_f(z, t):
            return ddz_r(z,t,0,1) - ddz_r(z,t,p,q)

def ddt_f(z, t):
            return ddt_r(z,t,0,1) - ddt_r(z,t,p,q)

def _g(z, t):
            return _r(z,t,0,1) - _r(pow(z, p/q), (p*t + 2*pi)/q, 0 ,1)
            
def ddz_g(z, t):
            return ddz_r(z,t,0,1) - ddz_r(pow(z, p/q), (p*t + 2*pi)/q, 0,1) * (p/q)*pow(z, (p-q)/q)

def ddt_g(z, t):
            return ddt_r(z,t,0,1) - ddt_r(pow(z, p/q), (p*t + 2*pi)/q, 0,1) * (p/q)
#-------------------------------------------------------
class doyle:
    def find_root(z, t):
       for i in range(100):
            v_f = _f(z, t)
            v_g = _g(z, t)
            z= z; t= t; r= sqrt(_r(z,t,0,1))
            a = ddz_f(z,t)
            b = ddt_f(z,t)
            c = ddz_g(z,t)
            d = ddt_g(z,t)
            det = a*d-b*c
            z -= (d*v_f - b*v_g)/det
            t -= (a*v_g - c*v_f)/det
       return z,t,r
       
    root = find_root(2,0)
    z = root[0]
    t = root[1]
    r = root[2]
    a = [z * cos(t), z * sin(t)]
    _z = pow(z, p/q)
    _t = (p*t+2*pi)/q
    _r = 0.0
    b = [_z * cos(_t), _z * sin(_t)]

a= doyle.a; b= doyle.b; r=doyle.r; mod_a = z = doyle.z; t= doyle.t

def cmul(w,z):
    v = [w[0]*z[0] - w[1]*z[1],w[0]*z[1] + w[1]*z[0]]
    return v
def modulus(p):
    v = sqrt(p[0]*p[0] + p[1]*p[1])
    return v

def crecip(z):
    d = pow(z[0],2)+pow(z[1],2)
    v = [-z[1]/d, z[0]/d]
    return v

circles = []
def Spiral(r, start_point, delta, min_d, max_d):
    recip_delta = crecip(delta)
    q = cmul(start_point, recip_delta)
    mod_q = modulus(q)
    circle = rg.Circle(rg.Plane.WorldXY, rg.Point3d(q[0], q[1], 0), mod_q*r)
    circles.Add(circle)
    q = cmul(q, recip_delta)
    return circles
        
scale = pow(mod_a, -1)
min_d = scale
n = n-1
max_d = q*n
start = a
for i in range(max_d):
    start = cmul(start, b)
    Circles = Spiral(r, start, a, min_d, max_d)

def mobius(g,c,a,q,bool):
    G = ghc.trees.Kangaroo2Component.MbiusTransformation(g,c,a,q,bool)
    return G
    
G = ghc.trees.PolarArray(Circles,rg.Plane.WorldXY,p,2*pi)[0]
if T == True:
    G = ghc.trees.FlipMatrix(G)
    C = ghc.Circle(rg.Plane.WorldXY,pi*C)
    G = mobius(G,C,pi/2,Q,False)
    G = ghc.trees.Rotate(G,pi/2,rg.Plane.WorldZX)[0]
    G = mobius(G,C,-pi/2,0,False)
    R = ghc.trees.DeconstructArc(G)[1]
    P = ghc.trees.Evaluate('if(x>10,0,1)',R)
    G = ghc.trees.CullPattern(G,P)
else:
    G = ghc.trees.FlipMatrix(G)

```

> **[Doyle spiral](https://en.wikipedia.org/wiki/Doyle_spiral)**
>
> Pages for logged out editors learn more
> 
> 			 
> In the mathematics of circle packing, a Doyle spiral is a pattern of non-crossing circles in the plane in which each circle is surrounded by a ring of six tangent circles. These patterns contain spiral arms formed by circles linked through opposite points of tangency, with their centers on logarithmic spirals of three different shapes.
> Doyle spirals are named after mathematician Peter G. Doyle, who made an important contribution to their mathem...

 ![Doyle_Spiral_V01_2023-01-25_10-13-32](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/5/9/59385ea60c9ed21c0b63876f606675ac85c5a5b6.png)  
 ![Doyle_Spiral_V01_2023-01-25_10-13-44](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/4/3/43829ac55c60e52aa0b590c54fba6d6590627f2c.png)  
[Doyle\_Spiral\_V01.dyn](https://forum.dynamobim.com/uploads/short-url/32fNxOyf4ht7zorB4887NZT2sxy.dyn) (96.2 KB)
