MattE
May 22, 2016, 12:50pm
1
This seems so simple, but I can’t figure out how to do it
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
MattE
May 22, 2016, 6:57pm
5
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
emilio
May 26, 2016, 11:22am
7
Thanks Keith !
This script can be very useful.