<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>floating mouse coordinates</title>
		<link>http://www.allegro.cc/forums/view/617887</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Wed, 24 Jul 2019 10:26:00 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hello, sorry for my bad englishI am an Italian boy and I apologize for my bad English<br />My problem is this:<br />how to get the coordinates of the float mouse instead of int?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Loki66)</author>
		<pubDate>Mon, 22 Jul 2019 10:07:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Assuming you&#39;re using Allegro 5, you could do this:</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/ALLEGRO_MOUSE_STATE"><span class="a">ALLEGRO_MOUSE_STATE</span></a> state<span class="k2">;</span>
<span class="k1">float</span> mx, my<span class="k2">;</span>

<a href="http://www.allegro.cc/manual/al_get_mouse_state"><span class="a">al_get_mouse_state</span></a><span class="k2">(</span><span class="k3">&amp;</span>state<span class="k2">)</span><span class="k2">;</span>
mx <span class="k3">=</span> <span class="k2">(</span><span class="k1">float</span><span class="k2">)</span>state.x<span class="k2">;</span>
my <span class="k3">=</span> <span class="k2">(</span><span class="k1">float</span><span class="k2">)</span>state.y<span class="k2">;</span>
</pre></div></div><p>

Why do you want the co-ordinates as floats?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (LennyLen)</author>
		<pubDate>Mon, 22 Jul 2019 10:52:41 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>LennyLen, I think we&#39;re missing the real purpose here.</p><p>To get floating point precision mouse coordinates, you&#39;ll need to either A) use OS specific system calls to do it or B) Interface with a mouse driver that provides support for high dpi aware pointing devices.</p><p>Allegro does not provide anything other than on screen integral mouse coordinates.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Mon, 22 Jul 2019 19:11:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi, and thanks for the quick reply.<br />I apologize for my English (translated by google)<br />I need to move a circle with the coordinates of the mouse and I create a vector for the direction of the circle.<br />I Using the mouse functions: event.mouse.x<br />event.mouse.dx.<br />When I move the mouse slowly the values of event.mouse.dx and event.mouse.dy are:<br />1,0 (0°)<br />1,1 (45°)<br />0,1 (90°)<br />The reason is this.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Loki66)</author>
		<pubDate>Mon, 22 Jul 2019 21:05:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Loki66, that is as expected. dx and dy will probably never be more than two or three.</p><p>First, you need to know about the different types of variables there are. You can declare a float and assign it the value of an int. You can also cast an int to float or double with (float) or (double).</p><p>Second, to track the direction, you need to track the starting point.</p><p>If the distance between your starting point and your end point are small, then you will get large intervals between angles because of low precision. Are you tracking mouse movement? You can always do it like this ;</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="k1">int</span> mx <span class="k3">=</span> <span class="n">0</span>,mxstart <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  2</span><span class="k1">int</span> my <span class="k3">=</span> <span class="n">0</span>,mystart <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  3</span>
<span class="number">  4</span><span class="k1">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_MOUSE_BUTTON_DOWN<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  5</span>   mxstart <span class="k3">=</span> ev.mouse.x<span class="k2">;</span>
<span class="number">  6</span>   mystart <span class="k3">=</span> ev.mouse.y<span class="k2">;</span>
<span class="number">  7</span>   drag <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  8</span><span class="k2">}</span>
<span class="number">  9</span>
<span class="number"> 10</span><span class="k1">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_MOUSE_BUTTON_UP<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 11</span>   drag <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 12</span><span class="k2">}</span>
<span class="number"> 13</span>
<span class="number"> 14</span><span class="k1">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_MOUSE_AXES <span class="k3">&amp;</span><span class="k3">&amp;</span> drag<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 15</span>   mx <span class="k3">+</span><span class="k3">=</span> ev.mouse.dx<span class="k2">;</span>
<span class="number"> 16</span>   my <span class="k3">+</span><span class="k3">=</span> ev.mouse.dy<span class="k2">;</span>
<span class="number"> 17</span>   <span class="k1">double</span> angle <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_50.html" target="_blank">atan2</a><span class="k2">(</span>my <span class="k3">-</span> mystart , mx <span class="k3">-</span> mxstart<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>   <span class="k1">double</span> degrees <span class="k3">=</span> angle<span class="k3">*</span><span class="n">180</span>.<span class="n">0</span><span class="k3">/</span>M_PI<span class="k2">;</span>
<span class="number"> 19</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Mon, 22 Jul 2019 22:32:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>If there are platforms which return sub-pixel mouse positions, we can easily add support for them like we did with the &quot;sub-pixel&quot; mouse-wheel positions (via <span class="source-code">al_set_mouse_wheel_precision</span>)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SiegeLord)</author>
		<pubDate>Wed, 24 Jul 2019 05:49:34 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hello everyone, I solved with atan2 as suggested by Edgar Reynaldo<br />Using event.mouse.dy and event.mouse.dx<br />it returns the exact angle of each quadrant in double format</p><p>// calculate destination points x, y for the vector<br />void fv_vector_c1(double d_c1x, double d_c1y, double d_c1dx, double d_c1dy) {</p><p>    // values used are: d_c1dy = event.mouse.dy // d_c1dx = event.mouse.dx<br />    double d_angle = atan2(d_c1dy, d_c1dx);<br />    cout&lt;&lt;&quot;angolo &quot;&lt;&lt;d_angle&lt;&lt;endl;<br />    double d_degrees = d_angle *180.0 /3.14;<br />    cout&lt;&lt;&quot;angolo &quot;&lt;&lt;d_degrees&lt;&lt;endl;<br />}</p><p>Thank you all<br />Loki666 from Torino, Italy
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Loki66)</author>
		<pubDate>Wed, 24 Jul 2019 10:26:00 +0000</pubDate>
	</item>
</rss>
