1
$\begingroup$

This is what an Enneper looks like in Blender, according to Math Functions - XYZ:

Blender Enneper - Math Function - XYZ

This is an Enneper, Order 3

Enneper Order 3

The XYZ Functions (Enneper Blender) are as follows:

Blender XYZ Function Formulas for Enneper Surface

Is there a way to modify the default XYZ formula for Enneper, XYZ to create an Enneper Order 3? Is it better suited to Blender Python? Or perhaps Sverchok, especially now with Sverchok Extras - with an eye to minimal surfaces (of which Enneper is one)?

Can it be done, and if so how? If not, what would be a better avenue to pursue?

Addendum:

I did come up with this modified for Blender from MathMod. It's different. It's no Order 3. Missing a side.

enter image description here

$\endgroup$
0

1 Answer 1

2
$\begingroup$

From the formula here:

enter image description here

If a stands for n (so 3 in our case) and b for 2n-1 (so 5), then:

x = u*cos(v)-(u**b * cos(b*v) / b)

y = u*sin(v)+(u**b * sin(b*v) / b)

z = 2 * (u**a) * cos(a*v)/a

with:

0 < u < 1.2
-pi < v < pi

And:

a = 3
b = 2 * a - 1

Which is:

enter image description here

Then:

enter image description here

If you want to push u to its limits, set it between:

0 < u < sqrt(2)

enter image description here

And you can change the order setting a and b differently (b = 2 * a - 1), for instance:

enter image description here

If useful, here is the preset file "enneper_n.py" that can be stored into the preset directory (on Windows):

C:\Users\userName\AppData\Roaming\Blender Foundation\Blender\2.90\scripts\presets\operator\mesh.primitive_xyz_function_surface

Its content is:

import bpy
op = bpy.context.active_operator

op.x_eq = 'u*cos(v)-(u**b * cos(b*v) / b)'
op.y_eq = 'u*sin(v)+(u**b * sin(b*v) / b)'
op.z_eq = '2 * (u**a) * cos(a*v)/a'
op.range_u_min = 0.0
op.range_u_max = 1.2000000476837158
op.range_u_step = 32
op.wrap_u = False
op.range_v_min = -3.1415927410125732
op.range_v_max = 3.1415927410125732
op.range_v_step = 128
op.wrap_v = False
op.close_v = False
op.n_eq = 1
op.a_eq = '3'
op.b_eq = '2*a-1'
op.c_eq = '0'
op.f_eq = '0'
op.g_eq = '0'
op.h_eq = '0'
op.show_wire = True
op.edit_mode = False
$\endgroup$
19
  • $\begingroup$ That's a confusing one.... where you transliterated cos(2n-1)t as cos(b*v), I would have gone for cos(b)*v ... everything looks ok, you must be right .... $\endgroup$
    – Robin Betts
    Commented Sep 12, 2020 at 18:23
  • $\begingroup$ @RobinBetts, don't think so... here no parenthesis for cos mathcurve.com/surfaces.gb/enneper/enneper.shtml ... but I could be wrong... but if you try it, you'll see $\endgroup$
    – lemon
    Commented Sep 12, 2020 at 18:44
  • $\begingroup$ @RobinBetts if cos or sin independent of v, so finally a constant value.... can it work? don't think so $\endgroup$
    – lemon
    Commented Sep 12, 2020 at 18:50
  • $\begingroup$ Exactly.. you must be right. Confusing notation, though (theirs, not yours) $\endgroup$
    – Robin Betts
    Commented Sep 12, 2020 at 18:52
  • $\begingroup$ @RobinBetts, have edited the answer with a blend in which i have saved "enneper N" preset. Not sure this preset is included in the file, but you can test it. $\endgroup$
    – lemon
    Commented Sep 12, 2020 at 18:58

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .