Notifications
Clear all

[Closed] Braid algorithm

This is the well-known ‘braid’ algorithm:

x(t) = a * sin(t)
y(t) = b * sin(t) * cos(t)

if you need three strand just add phase offset 120 (360/3)

Does anyone known another ‘braid’ algorithms? thanks…

11 Replies

This doesn’t help you but as can be seen here…I couldn’t read maxscript…so my algo was zig and zag

http://www.scriptspot.com/3ds-max/mcg/mcg-braidgen

no limit to number of strands…

Thank you. I’ve seen it already. It’s not really a braid and a things I’m looking for…
Some years ago I saw a ‘braid’ – like spline algorithm based on Lissajous curves, but unfortunately can’t find it anymore

1 Reply
(@denist)
Joined: 11 months ago

Posts: 0

first is i’m not interested in a encrypted script. second is it’s not a ‘braid’ at all. it’s a simple helix algorithm

Not sure if this is useful to your needs, but long ago I made this function to generate sort of a braid like pattern. It was for a very specific case so I hardcoded the numbers that worked for me.

(
	delete objects
	
	theSpline = splineShape ()
	addnewSpline theSpline
	theSpline.steps = 6
	theSpline.wireColor = yellow
	
	width = 100
	
	for i=1 to width-2 do
	(
		u = i*10
		
		x = (6 * sin (u*6) + i) * .5
		y = 2 * cos (u*3)
		z = 10 * sin (u*3)
		
		addKnot theSpline 1 #smooth #curve [x,y,z]
	)
	
	updateShape theSpline
)

Here’s is a really good web for curves (in French):
https://www.mathcurve.com/courbes3d/lissajous3d/lissajous3d.shtml

Click on the bottom box “courbe suivante” for access to new curves.

For example, for this knot:


(
	delete objects
	
	theSpline = splineShape ()
	addnewSpline theSpline
	theSpline.steps = 6
	theSpline.wireColor = yellow
	
	ee = 0.1
	
	for t = pi-ee to 115.55*pi+ee by ee do
	(
		x = 3*sin(t)+2*sin(3*t)
		y = cos(t)-2*cos(3*t)
		z = 0.2*(cos(t)+2*sin(4*t))
		
		--addKnot theSpline 1 #smooth #curve [-x,y,z]
		addKnot theSpline 1 #smooth #curve [x,y,z]
	)
	
	updateShape theSpline
)

And this other one, more near a braid:

(
	delete objects
	
	theSpline = splineShape ()
	addnewSpline theSpline
	theSpline.steps = 6
	theSpline.wireColor = yellow
	
	ee = 0.1
	
	for t = pi-ee to 115.55*pi+ee by ee do
	(
		x = 10. * cos(3.*t)
		y = 10. * sin(5.*t)
		z = 1. * sin(22.*t)
		
		addKnot theSpline 1 #smooth #curve [x,y,z]
	)
	
	updateShape theSpline
)


Looks very promising!

here is what i have so far with:

—–x = size.x * (cos(t + offset) + 3 * cos(t + offset))
—–y = (sin(t + offset) – 2 * sin(t + offset)) * x

x = size.x * cos(t + offset)
y = sin(t + offset) * x

where

offset = 360.0 * (n_strand – 1) / strands

ps. i’ve edited that… my bad … there is nothing new

1 Reply
(@denist)
Joined: 11 months ago

Posts: 0

the resource is great. thank you!

here is a snippet for 3,5,7 strands braids:

delete objects
(
	pp = #()
	sp = splineshape()
	radius = 3
	size = [16,4,0.4,0.4]
	strands = 5
	accuracy = 90
	for k=1 to strands do
	(
		offset = 360.0 * (k-1)/strands
		pp = #()
		for t = 0 to 720 by (180 / accuracy) do
		(
			x = size.x * cos(t + offset)
			y = sin(t + offset) * x
			z = size.z * t
				
			append pp [x,y,z]
		)
		addnewspline sp
		for p in pp do addknot sp k #smooth #curve p
	)
	updateshape sp
	
	sp.render_displayRenderMesh = on
	sp.sides = 6
	sp.thickness = radius*2
	sp
)