2

Given the length of an arc and the length of sagitta, can you calculate the angle (radians)?

I struggle to work out all the parameters I need. For instance, to calculate the radius I need the length of the sagitta and the chord length (but I don't have that - to get that I need the radius...)

Do I have too few parameters to get a single answer for this?

thomthom
  • 123

2 Answers2

2

Let $s$ be the length of the sagittus, $a$ the length of the arc, $r$ the radius, and $\theta$ the central angle. We are given $a$ and $s$. We know $a=r\theta$ and $ s = r-r\cos\left(\frac{\theta}{2}\right)$ so that $$ \frac{a}{s}=\frac{\theta}{1-\cos\left(\frac{\theta}{2}\right)}$$ A quick plot of $f(\theta)= \theta/(1-\cos(\theta/2))$ indicates that $f$ is one-to-one on $(0,\pi)$ so yes, $s$ and $a$ determine the angle. I don't think there is a simple closed-form formula for $\theta,$ however. You probably have to compute it numerically.

EDIT

At the OP's request, I'm adding some comments on how to compute this numerically. First, I think it's a little more convenient to consider the reciprocal of the expression I had before. $$ \frac{s}{a}=\frac{1-\cos\left(\frac{\theta}{2}\right)}{\theta}$$ Let $x=s/a,$ so that we want to solve $$f(\theta)=x\theta + \cos\left(\frac{\theta}{2}\right)-1=0$$ for $\theta,$ with $x$ given. The secant method is probably a good way to do this. You need a couple of starting values for $\theta_0$ and $\theta_1$ and you can use $1$ and $2$, I should think.

Let me know if this doesn't work well for you.

saulspatz
  • 53,131
  • Ok, so I can be done. That's good. However, I'm not that steady on solving equations like this. I'm trying to convert this into code. Any chance you could provide a quick overview of the steps to solve? – thomthom Jun 28 '18 at 17:55
  • @thomthom Yes, I need a few minutes to think about it, but I'll update my answer when I've got it. – saulspatz Jun 28 '18 at 18:22
  • @thomthom I want to give an answer you'll understand. Where are you up to in your math studies? Have you studied calculus yet? – saulspatz Jun 28 '18 at 18:23
  • It's long since I was a student. But I've not practised it since then, so much of it is forgotten (annoyingly). I recall how to solve (x/y) = 4 etc if I want to find x or y. But not this one. Not sure how to best answer your question for you to best help me. – thomthom Jun 28 '18 at 18:58
  • Thank you for following up. However I'm afraid that went far above my head. I've not heard of the secant method and the terminology in that Wiki article is unfamiliar to me (English isn't my native language, so that doesn't help either.) I often look up code example for these kinds of things - as I find I can read and understand that better. Found this; https://rosettacode.org/wiki/Roots_of_a_function, but unfortunately I didn't understand how to apply that to the function you described. (Isn't there two unknowns there? x and θ?) (I appreciate your time and effort. Excuse my denseness.) – thomthom Jun 28 '18 at 20:17
  • @thomthom I'll be happy to give you more detailed instructions, but it will be a few hours before I have a chance to do it. Meanwhile, $\theta$ is the only unknown. I'm using $x$ to mean $s/a$ and since both $s$ and $a$ are given, $x$ is known. You have nothing to apologize for. – saulspatz Jun 28 '18 at 21:15
  • @saulspatz. It is funny what we can do with a bit of numerics ! Cheers. – Claude Leibovici Jun 29 '18 at 07:09
  • Ah! Yes, - you even said so; Let x=s/a. I was staring at the solution and I didn't see it. With your formula and in combination of the code examples of computing roots of a function I was able to implement this. :D Thank you very much for bearing with me. – thomthom Jun 29 '18 at 07:49
  • @thomthom Great. I'm sorry I couldn't get back to this yesterday, but glad that there was no need to. – saulspatz Jun 29 '18 at 15:38
  • I just hit a snag. When s/a tips over ~0.35 (angle at ~220.1 degrees then I no longer find a correct solution. When I plot the function for when s/a is ~0.35 it looks like this: https://www.wolframalpha.com/input/?i=plot+(300%2F1000)x+%2B+cos(x%2F2)+-+1 But for s/a = 0.4 then it looks like this: https://www.wolframalpha.com/input/?i=plot+(400%2F1000)x+%2B+cos(x%2F2)+-+1 It never crosses the axis after origin any more and the function doesn't equate to 0. I thought I kind of understood how the answer was solved from that function, but I'm guessing I'm not? – thomthom Jun 29 '18 at 21:36
  • I can't get the plots. You need to make the entire URL part of the link. In any event, I was thinking the angle would not be more than $180^{\circ}$ and my solution was predicated on this assumption. When you have a reflex angle, is the sagitta equal to the radius? – saulspatz Jun 29 '18 at 21:56
  • Ignore what I said about the sagitta -- that was stupid. But I'm not sure what the definition of the sagitta is when you have a reflex angle. Is it the radius plus the height of the triangle instead of the radius minus the height? – saulspatz Jun 29 '18 at 22:11
  • Back on the grid. I realise now that sagitta over 180 degrees opens up for issues. I have also realised I have asked the wrong question. I jumped straight to what I assumed would provide me with what I want, and I failed to describe the context. What I am doing is bending a segment from user input. And max bend will be 360 degrees. So instead of using user input as sagitta, I take the segment length as circumference of the maximum bend. Then I can use bend length (user input) and divide by the diameter of the max bend (full circle). That ratio * tau gives me an angle I can work with. – thomthom Jul 03 '18 at 13:37
2

Satrting from saulspatz's answer, it is sure that, using a good estimate, Newton method would converge in very few iterations provided of a good guess for the root.

The first thing I thought about was to set $\theta=2t$, $k=\frac{s}{a}$ and use the rather good approximation $$\cos(t) \simeq\frac{\pi ^2-4t^2}{\pi ^2+t^2}\qquad (-\frac \pi 2 \leq t\leq\frac \pi 2)$$ This leads to $$t(2 k t^2+2 \pi ^2 k-5 t)=0 \implies \theta_{est}=\frac{5-\sqrt{25-16 \pi ^2 k^2}}{2 k}$$ In order to check it, give $\theta$ a value, compute $k$ and compute $ \theta_{est}$. The table below shows some results $$\left( \begin{array}{ccc} \theta & k & \theta_{est} \\ 0.1 & 0.0124973961 & 0.0987 \\ 0.2 & 0.0249791736 & 0.1974 \\ 0.3 & 0.0374297402 & 0.2962\\ 0.4 & 0.0498335554 & 0.3950 \\ 0.5 & 0.0621751566 & 0.4939 \\ 0.6 & 0.0744391848 & 0.5930 \\ 0.7 & 0.0866104102 & 0.6921 \\ 0.8 & 0.0986737575 & 0.7915 \\ 0.9 & 0.1106143307 & 0.8909 \\ 1.0 & 0.1224174381 & 0.9906 \\ 1.1 & 0.1340686163 & 1.0904 \\ 1.2 & 0.1455536542 & 1.1905 \\ 1.3 & 0.1568586165 & 1.2908 \\ 1.4 & 0.1679698662 & 1.3913 \\ 1.5 & 0.1788740874 & 1.4920 \end{array} \right)$$ and, starting from the estimate $\theta_{0}=\theta_{est}$, Newton iterates $$\theta_{n+1}=\frac{\theta_n \sin \left(\frac{\theta_n }{2}\right)+2 \cos \left(\frac{\theta_n }{2}\right)-2}{\sin \left(\frac{\theta_n }{2}\right)-2 k}$$ would converge in very few iterations.

My next idea was to develop $\frac{1-\cos\left(\frac{\theta}{2}\right)}{\theta}$ as Taylor series built at $\theta=0$ giving $$\frac{1-\cos\left(\frac{\theta}{2}\right)}{\theta}=\frac{\theta }{8}-\frac{\theta ^3}{384}+\frac{\theta ^5}{46080}-\frac{\theta ^7}{10321920}+\frac{\theta ^9}{3715891200}-\frac{\theta ^{11}}{1961990553600}+O\left(\theta ^{13}\right)$$ and to use series reversion to get $$\theta=8 k+\frac{32 k^3}{3}+\frac{1664 k^5}{45}+\frac{159232 k^7}{945}+\frac{4139008 k^9}{4725}+\frac{21929984 k^{11}}{4455}+O\left(k^{13}\right)$$ which could be transformed as a Padé approximant such as $$\theta_{est}=k\,\frac{8 -\frac{13184 }{279}k^2+\frac{200192 }{5859}k^4 } {1-\frac{2020 }{279}k^2+\frac{272512 }{29295}k^4 }$$ Doing the same as before, we should get $$\left( \begin{array}{ccc} \theta & k & \theta_{est} \\ 0.1 & 0.0124973961 & 0.100000000000 \\ 0.2 & 0.0249791736 & 0.200000000000 \\ 0.3 & 0.0374297402 & 0.300000000000 \\ 0.4 & 0.0498335554 & 0.399999999999 \\ 0.5 & 0.0621751566 & 0.499999999991 \\ 0.6 & 0.0744391848 & 0.599999999936 \\ 0.7 & 0.0866104102 & 0.699999999650 \\ 0.8 & 0.0986737575 & 0.799999998468 \\ 0.9 & 0.1106143307 & 0.899999994352 \\ 1.0 & 0.1224174381 & 0.999999981810 \\ 1.1 & 0.1340686163 & 1.099999947499 \\ 1.2 & 0.1455536542 & 1.199999861547 \\ 1.3 & 0.1568586165 & 1.299999661478 \\ 1.4 & 0.1679698662 & 1.399999223847 \\ 1.5 & 0.1788740874 & 1.499998316221 \end{array} \right)$$ which seems to be quite good.

Using the same form, I tried to optimize the coefficients for a better fit over the wole range. What I obtained is $$\theta_{est}=k\,\frac{8-\frac{100815 }{2003}k^2+\frac{26153}{635} k^4}{ 1-\frac{5467 }{717}k^2+\frac{5955}{557}k^4}$$ Reproducing the same table $$\left( \begin{array}{ccc} \theta & k & \theta_{est} \\ 0.1 & 0.0124973961 & 0.0999999999 \\ 0.2 & 0.0249791736 & 0.1999999991 \\ 0.3 & 0.0374297402 & 0.2999999973 \\ 0.4 & 0.0498335554 & 0.3999999947 \\ 0.5 & 0.0621751566 & 0.4999999918 \\ 0.6 & 0.0744391848 & 0.5999999895 \\ 0.7 & 0.0866104102 & 0.6999999885 \\ 0.8 & 0.0986737575 & 0.7999999886 \\ 0.9 & 0.1106143307 & 0.8999999893 \\ 1.0 & 0.1224174381 & 0.9999999891 \\ 1.1 & 0.1340686163 & 1.0999999871 \\ 1.2 & 0.1455536542 & 1.1999999836 \\ 1.3 & 0.1568586165 & 1.2999999814 \\ 1.4 & 0.1679698662 & 1.3999999835 \\ 1.5 & 0.1788740874 & 1.4999999861 \end{array} \right)$$

Update

In order to cover the full range $(0\leq \theta \leq \pi)$ and to get solutions at the price of only a quadratic equation, we can guess the approximation $$\frac{1-\cos\left(\frac{\theta}{2}\right)}{\theta}=\frac{a\theta+b \theta^2 } {1+c\theta+d \theta^2 }$$ and compute the coefficients $a,b,c,d$ in order to have a perfect match at points $\frac \pi 4,\frac \pi 2,\frac {3\pi} 4,\pi$. This gives the nasty values $$a=\frac{52-71 \sqrt{2}+6 \sqrt{10642-7001 \sqrt{2}}}{93 \pi ^2}$$ $$b=\frac{4 \left(26+11 \sqrt{2}-6 \sqrt{754-487 \sqrt{2}}\right)}{93 \pi ^3}$$ $$c=\frac{-325+33 \sqrt{2}+6 \sqrt{2074-167 \sqrt{2}}}{93 \pi }$$ $$d=-\frac{2 \left(-194+30 \sqrt{2}+3 \sqrt{2756-322 \sqrt{2}}\right)}{93 \pi ^2}$$ and the retained solution of the quadratic in $\theta$ is given by $$ \theta_{est}=\frac{\sqrt{(a-c k)^2+4 k (b-d k)}-a+c k}{2 (b-d k)}$$ $$\left( \begin{array}{ccc} \theta & k & \theta_{est} \\ 0.0 & 0.000000 & 0.00000 \\ 0.1 & 0.012497 & 0.09987 \\ 0.2 & 0.024979 & 0.19981 \\ 0.3 & 0.037430 & 0.29980 \\ 0.4 & 0.049834 & 0.39982 \\ 0.5 & 0.062175 & 0.49986 \\ 0.6 & 0.074439 & 0.59991 \\ 0.7 & 0.086610 & 0.69996 \\ 0.8 & 0.098674 & 0.80001 \\ 0.9 & 0.110614 & 0.90005 \\ 1.0 & 0.122417 & 1.00007 \\ 1.1 & 0.134069 & 1.10009 \\ 1.2 & 0.145554 & 1.20009 \\ 1.3 & 0.156859 & 1.30007 \\ 1.4 & 0.167970 & 1.40005 \\ 1.5 & 0.178874 & 1.50002 \\ 1.6 & 0.189558 & 1.59999 \\ 1.7 & 0.200010 & 1.69996 \\ 1.8 & 0.210217 & 1.79993 \\ 1.9 & 0.220167 & 1.89991 \\ 2.0 & 0.229849 & 1.99990 \\ 2.1 & 0.239252 & 2.09990 \\ 2.2 & 0.248365 & 2.19993 \\ 2.3 & 0.257179 & 2.29997 \\ 2.4 & 0.265684 & 2.40003 \\ 2.5 & 0.273871 & 2.50010 \\ 2.6 & 0.281731 & 2.60018 \\ 2.7 & 0.289257 & 2.70026 \\ 2.8 & 0.296440 & 2.80032 \\ 2.9 & 0.303275 & 2.90034 \\ 3.0 & 0.309754 & 3.00028 \\ 3.1 & 0.315873 & 3.10012 \end{array} \right)$$

  • Impressive results. – saulspatz Jun 29 '18 at 22:07
  • I realize (too late) that, because of my initial change of variable $t=2\theta$, I limited my analysis to the range $0 \leq \theta \leq \frac \pi 2$. – Claude Leibovici Jul 01 '18 at 03:05
  • How did you do the series reversion? – saulspatz Jul 01 '18 at 06:21
  • @saulspatz. Same as at http://mathworld.wolfram.com/SeriesReversion.html. It is quitre simple. Cheers. – Claude Leibovici Jul 01 '18 at 06:24
  • Thanks, but I was trying to ask if you programmed it yourself or used some standard software package. I should have been more explicit. – saulspatz Jul 01 '18 at 06:53
  • @saulspatz. No problem ! I suppose that today most CAS would do it. I have a bunch of my own coded in a very old version of Maxima we adapted for our specific needs in my research group. Be sure it is very simple : you just need to identify the coefficients. If you want, we can go and discuss in a chat room (in that case, open one and let me know). Cheers. – Claude Leibovici Jul 01 '18 at 07:01
  • That's everything I wanted to know, thanks. – saulspatz Jul 01 '18 at 14:40