We have moved to https://dokuwiki.librecad.org/

Lots of content was already moved to the new wiki, but there is still work to do. If you want to contribute, please register a new account at https://dokuwiki.librecad.org/

This wiki will be kept for a while to keep search engine results valid. Moved sites may be deleted here in future.

Difference between revisions of "Math bits"

From LibreCAD wiki
Jump to: navigation, search
(modular function in LibreCAD)
(modular function in LibreCAD)
Line 41: Line 41:
 
== modular function in LibreCAD ==
 
== modular function in LibreCAD ==
 
the standard glibc fmod(x, a) is not convenient here, since we need a modular function work the same way for both positive and negative numbers, instead, we use,
 
the standard glibc fmod(x, a) is not convenient here, since we need a modular function work the same way for both positive and negative numbers, instead, we use,
 
remainder(x - 0.5*a,a)+0.5*a
 
  
 
<math>
 
<math>
 
+
remainder(x - \frac{a}{2},a)+\frac{a}{2}
remainder(x - 0.5 \times a,a)+0.5*a
+
 
+
 
</math>
 
</math>

Revision as of 23:03, 22 April 2012

The nearest point on an ellipse to a given point

An ellipse in the coordinates orientated alone its major and minor axes is given as,


\begin{cases}
\begin{array}{c}
x=a\cos t\\
y=b\sin t
\end{array} & 0\le t<2\pi\end{cases}

The squared distance from a point on ellipse to a given point(x,y),


\begin{array}{rcl}
s^{2}&=&(x-a\cos t)^{2}+(y-b\sin t)^{2}\\
&=&x^{2}+y^{2}+a^{2}\cos^{2}t+b^{2}\sin^{2}t-2xa\cos t-2yb\sin t
\end{array}

The stationary points at the zero points of its first order derivative of t,


\frac{d(s^{2})}{dt}=-a^{2}\sin2t+b^{2}\sin2t+2xa\sin t-2yb\cos t=0

This stationary condition is a quartic equation of cos t. With variable change u = cos t,

γ2u4 − 2αγu3 + (α2 + β2 − γ2)u2 + 2αγu − α2 = 0

where α = 2ax, β = 2by, and γ = 2(a2b2).

For all solutions from the quartic equation, the minimum distance point is identified the convex condition,


\frac{d^{2}(s^{2})}{dt^{2}}=\gamma(1-2u^{2})+\alpha u+\frac{\beta^{2}u}{\alpha-\gamma u}>0

modular function in LibreCAD

the standard glibc fmod(x, a) is not convenient here, since we need a modular function work the same way for both positive and negative numbers, instead, we use,


remainder(x - \frac{a}{2},a)+\frac{a}{2}