Table of Contents

Graph

Theory

The code performs the follows the reasoning: for a chosen $a$ and $b$, select a random $x$ with $x \in [0, a)$ and $y$ with $y \in [0, b)$. If and only if the equation of the ellipse in standard form:

\begin{eqnarray*}
(\frac{x}{a})^{2}+(\frac{y}{b})^{2} &\le& 1
\end{eqnarray*}

is satisfied, then the generated $x$ and $y$ values describe a point $(x, y)$ which lies within the ellipse's perimeter. Otherwise, select new values for $x$ and $y$ and loop until the equation is satisfied.

Code

wasEllipsePoint.lsl
///////////////////////////////////////////////////////////////////////////
//    Copyright (C) 2015 Wizardry and Steamworks - License: GNU GPLv3    //
///////////////////////////////////////////////////////////////////////////
vector wasEllipsePoint(float a, float b) {
    float x = llPow(-1, 1 + (integer) llFrand(2)) * llFrand(a);
    float y = llPow(-1, 1 + (integer) llFrand(2)) * llFrand(b);
    if(llPow(x/a,2) + llPow(y/b,2) <= 1)
        return <x, y, 0>;
    return wasEllipsePoint(a, b);
}

fuss/algorithms/geometry/point_generation/ellipse/standard.txt ยท Last modified: 2022/04/19 08:28 by 127.0.0.1

Access website using Tor Access website using i2p Wizardry and Steamworks PGP Key


For the contact, copyright, license, warranty and privacy terms for the usage of this website please see the contact, license, privacy, copyright.