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.

Math bits

From LibreCAD wiki
Revision as of 12:10, 25 April 2012 by Dli (Talk | contribs)

Jump to: navigation, search

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,

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),

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

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 by 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}