<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>getting the angle  if i have the cos value</title>
		<link>http://www.allegro.cc/forums/view/562420</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sun, 29 Jan 2006 00:39:19 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>hi,<br />so i got something like this</p><p>cos alfa = x</p><p>x is some value that is known. what do i need to do to get that alfa angle? do i have to create some lookup table in the program and compare the value or maybe there&#39;s some easier method using some formula or sth? damn my maths ;e</p><p>greets
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Global Warming)</author>
		<pubDate>Sat, 28 Jan 2006 04:37:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>libc has some  cos() acos()  be careful,  you may need to convert from radians to degrees.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (A J)</author>
		<pubDate>Sat, 28 Jan 2006 04:38:02 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>arccos.<br />Beware though: the cosine is a periodic function and each value appears twice in one period. That means that if you invert it, you may not end up with the same angle you started with. In particular, the result is always between 0 and pi (if memory serves).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Evert)</author>
		<pubDate>Sat, 28 Jan 2006 04:47:34 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>ok so i wrote a function to return the sum of vectors. will it work? ;]</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">typedef</span> <span class="k1">struct</span></td></tr><tr><td class="number">2</td><td><span class="k2">{</span></td></tr><tr><td class="number">3</td><td>    <span class="k1">float</span> angle<span class="k2">;</span></td></tr><tr><td class="number">4</td><td>    <span class="k1">float</span> value<span class="k2">;</span></td></tr><tr><td class="number">5</td><td><span class="k2">}</span> ob_vect<span class="k2">;</span></td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td>ob_vect ob_vector_sum<span class="k2">(</span> ob_vect vect1, ob_vect vect2 <span class="k2">)</span></td></tr><tr><td class="number">8</td><td><span class="k2">{</span></td></tr><tr><td class="number">9</td><td>    ob_vect result<span class="k2">;</span></td></tr><tr><td class="number">10</td><td>    </td></tr><tr><td class="number">11</td><td>    <span class="k1">float</span> x1,x2,y1,y2,i,a,b,c<span class="k2">;</span></td></tr><tr><td class="number">12</td><td>    </td></tr><tr><td class="number">13</td><td>    x1 <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_728.html" target="_blank">sin</a><span class="k2">(</span> vect1.angle <span class="k2">)</span> <span class="k3">*</span> vect1.value<span class="k2">;</span></td></tr><tr><td class="number">14</td><td>    y1 <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_113.html" target="_blank">cos</a><span class="k2">(</span> vect1.angle <span class="k2">)</span> <span class="k3">*</span> vect1.value<span class="k2">;</span></td></tr><tr><td class="number">15</td><td>    </td></tr><tr><td class="number">16</td><td>    x2 <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_728.html" target="_blank">sin</a><span class="k2">(</span> vect2.angle <span class="k2">)</span> <span class="k3">*</span> vect2.value<span class="k2">;</span></td></tr><tr><td class="number">17</td><td>    y2 <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_113.html" target="_blank">cos</a><span class="k2">(</span> vect2.angle <span class="k2">)</span> <span class="k3">*</span> vect2.value<span class="k2">;</span></td></tr><tr><td class="number">18</td><td>    </td></tr><tr><td class="number">19</td><td>    result.value <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_738.html" target="_blank">sqrt</a><span class="k2">(</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_618.html" target="_blank">pow</a><span class="k2">(</span>x1<span class="k3">+</span>x2,<span class="n">2</span><span class="k2">)</span> <span class="k3">+</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_618.html" target="_blank">pow</a><span class="k2">(</span>y1<span class="k3">+</span>y2,<span class="n">2</span><span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>    </td></tr><tr><td class="number">21</td><td>    a <span class="k3">=</span> y1<span class="k3">+</span>y2<span class="k2">;</span></td></tr><tr><td class="number">22</td><td>    b <span class="k3">=</span> x1<span class="k3">+</span>x2<span class="k2">;</span></td></tr><tr><td class="number">23</td><td>    c <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_738.html" target="_blank">sqrt</a><span class="k2">(</span> b<span class="k3">*</span>b <span class="k3">+</span> a<span class="k3">*</span>a <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>    </td></tr><tr><td class="number">25</td><td>    i <span class="k3">=</span> b <span class="k3">/</span> c<span class="k2">;</span></td></tr><tr><td class="number">26</td><td>    </td></tr><tr><td class="number">27</td><td>    result.angle <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_40.html" target="_blank">acos</a><span class="k2">(</span> i <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>    </td></tr><tr><td class="number">29</td><td>    <span class="k1">return</span> result<span class="k2">;</span></td></tr><tr><td class="number">30</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

thanks ;]
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Global Warming)</author>
		<pubDate>Sat, 28 Jan 2006 05:08:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>No, because you should be using atan2() te get the full 2pi angle in that case.<br />Actually, if you&#39;re using vectors, you should probably store their carthesian components (x and y) rather than their curvilinear components (r and phi).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Evert)</author>
		<pubDate>Sat, 28 Jan 2006 05:13:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Actually, if you&#39;re using vectors, you should probably store their carthesian components
</p></div></div><p>

why should i? ;] i think it actually doesn&#39;t matter if i store x,y or angle &amp; length. i used the second method because it seems to me that it fits better to my project ;]</p><p>i modified the function so it doesn&#39;t use acos but atan. looks like it&#39;s ok now. what do you think?</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td>ob_vect ob_vector_sum<span class="k2">(</span> ob_vect vect1, ob_vect vect2 <span class="k2">)</span></td></tr><tr><td class="number">2</td><td><span class="k2">{</span></td></tr><tr><td class="number">3</td><td>    ob_vect result<span class="k2">;</span></td></tr><tr><td class="number">4</td><td>    </td></tr><tr><td class="number">5</td><td>    <span class="k1">float</span> x1, x2<span class="k2">;</span></td></tr><tr><td class="number">6</td><td>    <span class="k1">float</span> y1, y2<span class="k2">;</span></td></tr><tr><td class="number">7</td><td>    <span class="k1">float</span> a, b, i<span class="k2">;</span></td></tr><tr><td class="number">8</td><td>    </td></tr><tr><td class="number">9</td><td>    x1 <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_728.html" target="_blank">sin</a><span class="k2">(</span> vect1.angle <span class="k2">)</span> <span class="k3">*</span> vect1.value<span class="k2">;</span></td></tr><tr><td class="number">10</td><td>    y1 <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_113.html" target="_blank">cos</a><span class="k2">(</span> vect1.angle <span class="k2">)</span> <span class="k3">*</span> vect1.value<span class="k2">;</span></td></tr><tr><td class="number">11</td><td>    </td></tr><tr><td class="number">12</td><td>    x2 <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_728.html" target="_blank">sin</a><span class="k2">(</span> vect2.angle <span class="k2">)</span> <span class="k3">*</span> vect2.value<span class="k2">;</span></td></tr><tr><td class="number">13</td><td>    y2 <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_113.html" target="_blank">cos</a><span class="k2">(</span> vect2.angle <span class="k2">)</span> <span class="k3">*</span> vect2.value<span class="k2">;</span></td></tr><tr><td class="number">14</td><td>    </td></tr><tr><td class="number">15</td><td>    result.value <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_738.html" target="_blank">sqrt</a><span class="k2">(</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_618.html" target="_blank">pow</a><span class="k2">(</span> x1 <span class="k3">+</span> x2, <span class="n">2</span> <span class="k2">)</span> <span class="k3">+</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_618.html" target="_blank">pow</a><span class="k2">(</span> y1<span class="k3">+</span>y2, <span class="n">2</span> <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>    </td></tr><tr><td class="number">17</td><td>    a <span class="k3">=</span> y1 <span class="k3">+</span> y2<span class="k2">;</span></td></tr><tr><td class="number">18</td><td>    b <span class="k3">=</span> x1 <span class="k3">+</span> x2<span class="k2">;</span></td></tr><tr><td class="number">19</td><td>    </td></tr><tr><td class="number">20</td><td>    i <span class="k3">=</span> a <span class="k3">/</span> b<span class="k2">;</span></td></tr><tr><td class="number">21</td><td>    </td></tr><tr><td class="number">22</td><td>    result.angle <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_49.html" target="_blank">atan</a><span class="k2">(</span> i <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>    </td></tr><tr><td class="number">24</td><td>    <span class="k1">return</span> result<span class="k2">;</span></td></tr><tr><td class="number">25</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Global Warming)</author>
		<pubDate>Sat, 28 Jan 2006 06:15:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
i think it actually doesn&#39;t matter if i store x,y or angle &amp; length
</p></div></div><p>

<a href="http://en.wikipedia.org/wiki/Capitalisation">Click me</a>. Now that we&#39;re through with that...</p><p>Storing Cartesian components lets you add and subtract vectors in a way that doesn&#39;t involve several slow trigonometric functions that are inaccurate to boot. That&#39;s probably the main reason why it&#39;s a horribly bad idea to represent vectors using polar coordinates.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (X-G)</author>
		<pubDate>Sat, 28 Jan 2006 06:22:28 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
what do you think?
</p></div></div><p>
I still think you should use atan2, because you&#39;ll need the full 2pi range.<br />I also think your coordinate axes are either swapped, or rotated over pi/2. It&#39;s conventional to measure angles relative to the horizontal axis (so phi=0 will give you a vector along the x axis).</p><p>And I still think you&#39;re probably better off storing cartesian components.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Evert)</author>
		<pubDate>Sat, 28 Jan 2006 07:25:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Maybe you&#39;re right... But in my project I often need to update just the angle or the lenght of the vector. So I will need to use those &#39;slow trig functions&#39;, maybe not in ob_sum_of_vectors() but in: ob_vector_get_angle(), ob_vector_set_angle(), ob_vector_add_angle(), ob_vector_get_value(), ob_vector_set_value(), ob_vector_add_value() etc. <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /></p><p>EDIT: Maybe I&#39;ll just use those fixed point funtions from allegro and there will be no problem with speed? ;p</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td>ob_vect ob_vector_sum<span class="k2">(</span> ob_vect vect1, ob_vect vect2 <span class="k2">)</span></td></tr><tr><td class="number">2</td><td><span class="k2">{</span></td></tr><tr><td class="number">3</td><td>    ob_vect result<span class="k2">;</span></td></tr><tr><td class="number">4</td><td>    </td></tr><tr><td class="number">5</td><td>    <a href="http://www.allegro.cc/manual/fixed" target="_blank"><span class="a">fixed</span></a> x1,x2,y1,y2,a,b<span class="k2">;</span></td></tr><tr><td class="number">6</td><td>    <span class="k1">float</span> af,bf<span class="k2">;</span></td></tr><tr><td class="number">7</td><td>    </td></tr><tr><td class="number">8</td><td>    x1 <span class="k3">=</span> <a href="http://www.allegro.cc/manual/fixmul" target="_blank"><span class="a">fixmul</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/fixsin" target="_blank"><span class="a">fixsin</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/ftofix" target="_blank"><span class="a">ftofix</span></a><span class="k2">(</span> vect1.angle <span class="k2">)</span> <span class="k2">)</span>, <a href="http://www.allegro.cc/manual/ftofix" target="_blank"><span class="a">ftofix</span></a><span class="k2">(</span> vect1.value <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td>    y1 <span class="k3">=</span> <a href="http://www.allegro.cc/manual/fixmul" target="_blank"><span class="a">fixmul</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/fixcos" target="_blank"><span class="a">fixcos</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/ftofix" target="_blank"><span class="a">ftofix</span></a><span class="k2">(</span> vect1.angle <span class="k2">)</span> <span class="k2">)</span>, <a href="http://www.allegro.cc/manual/ftofix" target="_blank"><span class="a">ftofix</span></a><span class="k2">(</span> vect1.value <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td>        </td></tr><tr><td class="number">11</td><td>    x2 <span class="k3">=</span> <a href="http://www.allegro.cc/manual/fixmul" target="_blank"><span class="a">fixmul</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/fixsin" target="_blank"><span class="a">fixsin</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/ftofix" target="_blank"><span class="a">ftofix</span></a><span class="k2">(</span> vect2.angle <span class="k2">)</span> <span class="k2">)</span>, <a href="http://www.allegro.cc/manual/ftofix" target="_blank"><span class="a">ftofix</span></a><span class="k2">(</span> vect2.value <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td>    y2 <span class="k3">=</span> <a href="http://www.allegro.cc/manual/fixmul" target="_blank"><span class="a">fixmul</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/fixcos" target="_blank"><span class="a">fixcos</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/ftofix" target="_blank"><span class="a">ftofix</span></a><span class="k2">(</span> vect2.angle <span class="k2">)</span> <span class="k2">)</span>, <a href="http://www.allegro.cc/manual/ftofix" target="_blank"><span class="a">ftofix</span></a><span class="k2">(</span> vect2.value <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>&#160;</td></tr><tr><td class="number">14</td><td>    a <span class="k3">=</span> y1<span class="k3">+</span>y2<span class="k2">;</span> af <span class="k3">=</span> <a href="http://www.allegro.cc/manual/fixtof" target="_blank"><span class="a">fixtof</span></a><span class="k2">(</span>a<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td>    b <span class="k3">=</span> x1<span class="k3">+</span>x2<span class="k2">;</span> bf <span class="k3">=</span> <a href="http://www.allegro.cc/manual/fixtof" target="_blank"><span class="a">fixtof</span></a><span class="k2">(</span>b<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>    </td></tr><tr><td class="number">17</td><td>    result.value <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_738.html" target="_blank">sqrt</a><span class="k2">(</span> bf<span class="k3">*</span>bf <span class="k3">+</span> af<span class="k3">*</span>af <span class="k2">)</span><span class="k2">;</span>    </td></tr><tr><td class="number">18</td><td>    result.angle <span class="k3">=</span> <a href="http://www.allegro.cc/manual/fixtof" target="_blank"><span class="a">fixtof</span></a><span class="k2">(</span> <a href="http://www.allegro.cc/manual/fixatan2" target="_blank"><span class="a">fixatan2</span></a><span class="k2">(</span> a, b <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>    </td></tr><tr><td class="number">20</td><td>    <span class="k1">return</span> result<span class="k2">;</span></td></tr><tr><td class="number">21</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Global Warming)</author>
		<pubDate>Sat, 28 Jan 2006 19:48:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
Floats are just as fast as fixeds on any modern CPU. And using trigonometry once or twice per tick, to get angle or magnitude, is <i>much</i> faster than using them hundreds of times per tick for every time you want to manipulate a vector.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (X-G)</author>
		<pubDate>Sat, 28 Jan 2006 21:37:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hmm. But if I use fixed from Allegro which use lookup tables than it won&#39;t be a problem. After all I just wanted to know if my vector sum function will work. ;]
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Global Warming)</author>
		<pubDate>Sun, 29 Jan 2006 00:00:26 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
Yes it will. Or are you seriously suggesting that doing 1-2 operations is as fast as doing tens or hundreds of the same operation?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (X-G)</author>
		<pubDate>Sun, 29 Jan 2006 00:18:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yeah that&#39;s obvious that it&#39;s slower and if it&#39;ll work <u>too</u> slow I&#39;ll change it. But just help me correct my function because looks like it works bad and everything seems OK to me (maybe it&#39;s some other mistake in my code but please check it).</p><p>EDIT: Never mind, all works fine. <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /> Thx for help.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Global Warming)</author>
		<pubDate>Sun, 29 Jan 2006 00:39:19 +0000</pubDate>
	</item>
</rss>
