<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.secondlife.com/w/index.php?action=history&amp;feed=atom&amp;title=User%3ARolig_Loon%2FElliptical_Orbit</id>
	<title>User:Rolig Loon/Elliptical Orbit - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.secondlife.com/w/index.php?action=history&amp;feed=atom&amp;title=User%3ARolig_Loon%2FElliptical_Orbit"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Rolig_Loon/Elliptical_Orbit&amp;action=history"/>
	<updated>2026-06-23T06:13:12Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Rolig_Loon/Elliptical_Orbit&amp;diff=730353&amp;oldid=prev</id>
		<title>Rolig Loon: Created page with &#039;{{LSL Header}} === Features === Moves an object along a smooth, continuous elliptical path.  === Script === &lt;lsl&gt; float a; //Semi-minor axis float b; // Semi-major axis vector or...&#039;</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Rolig_Loon/Elliptical_Orbit&amp;diff=730353&amp;oldid=prev"/>
		<updated>2010-02-18T02:44:57Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;#039;{{LSL Header}} === Features === Moves an object along a smooth, continuous elliptical path.  === Script === &amp;lt;lsl&amp;gt; float a; //Semi-minor axis float b; // Semi-major axis vector or...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{LSL Header}}&lt;br /&gt;
=== Features ===&lt;br /&gt;
Moves an object along a smooth, continuous elliptical path.&lt;br /&gt;
&lt;br /&gt;
=== Script ===&lt;br /&gt;
&amp;lt;lsl&amp;gt;&lt;br /&gt;
float a; //Semi-minor axis&lt;br /&gt;
float b; // Semi-major axis&lt;br /&gt;
vector orig; //Center of ellipse&lt;br /&gt;
integer count;&lt;br /&gt;
vector NewPos;&lt;br /&gt;
integer targetID;&lt;br /&gt;
&lt;br /&gt;
vector calcPos (integer num){&lt;br /&gt;
    float t = num * 2 * PI/120;&lt;br /&gt;
    vector where = orig + &amp;lt;a * llCos(t), b* llSin(t),0&amp;gt;;&lt;br /&gt;
    return where;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    on_rez(integer start)&lt;br /&gt;
    {&lt;br /&gt;
        llResetScript();&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        a = 2.0; // Set the semi-minor axis length here&lt;br /&gt;
        b = 3.0; // Set the semi-major axis length here&lt;br /&gt;
        orig = llGetPos(); &lt;br /&gt;
        llListen(9998,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    listen(integer channel, string name , key id, string msg)&lt;br /&gt;
    {&lt;br /&gt;
        if (llToLower(msg) == &amp;quot;stop&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            llStopMoveToTarget();&lt;br /&gt;
            llTargetRemove(targetID);&lt;br /&gt;
            llSetStatus(STATUS_PHYSICS | STATUS_PHANTOM, FALSE);&lt;br /&gt;
            llOwnerSay(&amp;quot;I am at &amp;quot; + (string)llGetPos() + &amp;quot; in &amp;quot; + llGetRegionName());&lt;br /&gt;
        }&lt;br /&gt;
        else if (llToLower(msg) == &amp;quot;go&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            if (count == 0)&lt;br /&gt;
            {&lt;br /&gt;
                NewPos = calcPos(count); &lt;br /&gt;
                llSetPos(NewPos); // Object&amp;#039;s first move is from the center of the ellipse to a point on the path&lt;br /&gt;
            }&lt;br /&gt;
            llSetStatus(STATUS_PHYSICS | STATUS_PHANTOM, TRUE);&lt;br /&gt;
            llSetBuoyancy (1.0);&lt;br /&gt;
            ++count;&lt;br /&gt;
            NewPos = calcPos(count);&lt;br /&gt;
            targetID = llTarget(NewPos,0.5);&lt;br /&gt;
            llMoveToTarget(NewPos,0.5);&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            llOwnerSay(&amp;quot;What?&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    at_target(integer tnum, vector targetpos, vector ourpos)&lt;br /&gt;
    {&lt;br /&gt;
            llStopMoveToTarget();&lt;br /&gt;
            llTargetRemove(targetID);&lt;br /&gt;
            ++count;&lt;br /&gt;
            NewPos = calcPos(count);&lt;br /&gt;
            targetID = llTarget(NewPos, 0.5);&lt;br /&gt;
            llMoveToTarget(NewPos,0.5);&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/lsl&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rolig Loon</name></author>
	</entry>
</feed>