Arc of known length between two points

This seems so simple, but I can’t figure out how to do it :confounded:

I have an arc of known length (but unknown radius) that I want to strike between two points of known separation. The arc length is 920mm. The points are 840 apart. How do I fit the arc to the two points?

Here is an online calculator to determine the radius: enter the arc length and chord length = 628

http://www.cleavebooks.co.uk/scol/calsect.htm

HTH
Keith www.cadwax.com
(UK Rhino Reseller)

1 Like

And here is a slightly more accurate calculator: http://www.handymath.com/cgi-bin/arc18.cgi?submit=Entry

which gives 628.36040 radius

Keith

IMO this could be a good option to add to the Arc command

1 Like

I was surprised that I couldn’t do this within Rhino. I can acheive all of the elements, but not combine them within a single command. It looks like it would be simple to add it to the command line options for Arc, 3 points.

Here is a RhinoScript based on Newton’s Method: http://www.1728.org/newton.htm

NewtonsArc.rvb (883 Bytes)

Please let me know of any changes required or if you need this converted to Python.

Keith www.cadwax.com
(UK Rhino Reseller / Scripting and Support)

Option Explicit
'Script written by <Keith Reffell>
'Script copyrighted by <www.cadwax.com>
'Script version 23 May 2016 07:55:53

Call Main()
Sub Main()    	
	
	Dim arc
	arc = rhino.GetReal("Enter Arc length") / 2
	
	If isNull(arc) Then
		Exit Sub
	End If
	
	Dim chord
	chord = rhino.GetReal("Enter Chord length") / 2

	If isNull(chord) Then
		Exit Sub
	End If
	
	
	Dim n
	n = chord / arc
	
	Dim x1	
	x1 = 1 - ((Sin(1) - (n * 1)) / (Cos(1) - n))
	
	Dim x2
	x2 = x1 - ((Sin(x1) - (n * x1)) / (Cos(x1) - n)) 	
	
	
	Do While round(x1, 6) <> round(x2, 6)
		
		x1 = x2    		
		x1 = x1 - ((Sin(x1) - (n * x1)) / (Cos(x1) - n))    		
		x2 = x1 - ((Sin(x1) - (n * x1)) / (Cos(x1) - n))
		
	Loop
	    	
	Dim radius
	radius = chord / Sin(x2)   	
	
	rhino.Command "_Arc _StartPoint _Pause " & Chord * 2 & " _Pause _Radius " & Radius
		
	

End Sub
1 Like

Thanks Keith !

This script can be very useful. :smiley: