<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>How to use al_calc_elliptical_arc?</title>
		<link>http://www.allegro.cc/forums/view/615792</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Tue, 06 Oct 2015 02:19:23 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hello, I want to calculate the points of an elliptical arc, but I do not really now, how to use</p><p>void al_calculate_arc(float* dest, int stride, float cx, float cy,<br />float rx, float ry, float start_theta, float delta_theta, float thickness,<br />int num_segments)</p><p>Could you give me an example how to store the values of the arc, if cx, cy, rx, ry, start_theta, delta_theta and thickness are given?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (maxdev)</author>
		<pubDate>Sun, 04 Oct 2015 22:27:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>[edit] removed; posted in the wrong place
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Mark Oates)</author>
		<pubDate>Sun, 04 Oct 2015 23:55:13 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Nice game, but that doesn&#39;t help me <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (maxdev)</author>
		<pubDate>Mon, 05 Oct 2015 22:00:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Woah.  <img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=";D" border="0" />, I was wondering where my post went. I was like &quot;I swear I posted it! <img src="http://www.allegro.cc/forums/smileys/huh.gif" alt="???" />&quot;
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Mark Oates)</author>
		<pubDate>Tue, 06 Oct 2015 01:38:22 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="source-code snippet"><div class="inner"><pre><span class="k1">void</span> <a href="http://www.allegro.cc/manual/al_calculate_arc"><span class="a">al_calculate_arc</span></a><span class="k2">(</span><span class="k1">float</span><span class="k3">*</span> dest, <span class="k1">int</span> stride, <span class="k1">float</span> cx, <span class="k1">float</span> cy,
<span class="k1">float</span> rx, <span class="k1">float</span> ry, <span class="k1">float</span> start_theta, <span class="k1">float</span> delta_theta, <span class="k1">float</span> thickness,
<span class="k1">int</span> num_segments<span class="k2">)</span>
</pre></div></div><p>
The key is &#39;num_segments&#39;. You need to have room in &#39;dest&#39; (in an array or dynamically allocated memory) for at least num_segments*2 x and y values, and if it&#39;s a packed array then stride should be <span class="source-code"><span class="n">2</span><span class="k3">*</span><span class="k1">sizeof</span><span class="k2">(</span><span class="k1">float</span><span class="k2">)</span></span>. It will store the coordinates of the arc in the &#39;dest&#39; array. If thickness is greater than zero you need twice as many elements in the array.</p><p>For a quick code example here :</p><div class="source-code snippet"><div class="inner"><pre><span class="p">#define NUM_PTS 10</span>
<span class="k1">float</span> fltarray<span class="k2">[</span><span class="n">2</span><span class="k3">*</span>NUM_PTS<span class="k2">]</span><span class="k2">;</span>
<span class="k1">float</span><span class="k3">*</span> fltarray2 <span class="k3">=</span> <span class="k1">new</span> <span class="k1">float</span><span class="k2">[</span><span class="n">2</span><span class="k3">*</span>NUM_PTS<span class="k2">]</span><span class="k2">;</span>
<span class="k1">float</span><span class="k3">*</span> fltarray3 <span class="k3">=</span> <span class="k1">new</span> <span class="k1">float</span><span class="k2">[</span><span class="n">2</span><span class="k3">*</span><span class="n">2</span><span class="k3">*</span>NUM_PTS<span class="k2">]</span><span class="k2">;</span>

<a href="http://www.allegro.cc/manual/al_calculate_arc"><span class="a">al_calculate_arc</span></a><span class="k2">(</span>fltarray , <span class="n">2</span><span class="k3">*</span><span class="k1">sizeof</span><span class="k2">(</span><span class="k1">float</span><span class="k2">)</span> , <span class="n">0</span> , <span class="n">0</span> , <span class="n">100</span> , <span class="n">50</span> , M_PI<span class="k3">/</span><span class="n">2</span>.<span class="n">0f</span> , M_PI<span class="k3">/</span><span class="n">2</span>.<span class="n">0f</span> , <span class="n">0</span> , NUM_PTS<span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_calculate_arc"><span class="a">al_calculate_arc</span></a><span class="k2">(</span>fltarray2 , <span class="n">2</span><span class="k3">*</span><span class="k1">sizeof</span><span class="k2">(</span><span class="k1">float</span><span class="k2">)</span> , <span class="n">0</span> , <span class="n">0</span> , <span class="n">100</span> , <span class="n">50</span> , M_PI<span class="k3">/</span><span class="n">2</span>.<span class="n">0f</span> , M_PI<span class="k3">/</span><span class="n">2</span>.<span class="n">0f</span> , <span class="n">0</span> , NUM_PTS<span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_calculate_arc"><span class="a">al_calculate_arc</span></a><span class="k2">(</span>fltarray3 , <span class="n">4</span><span class="k3">*</span><span class="k1">sizeof</span><span class="k2">(</span><span class="k1">float</span><span class="k2">)</span> , <span class="n">0</span> , <span class="n">0</span> , <span class="n">100</span> , <span class="n">50</span> , M_PI<span class="k3">/</span><span class="n">2</span>.<span class="n">0f</span> , M_PI<span class="k3">/</span><span class="n">2</span>.<span class="n">0f</span> , <span class="n">10</span>.<span class="n">0f</span> , NUM_PTS<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Tue, 06 Oct 2015 02:03:48 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Here&#39;s my example:</p><p><span class="remote-thumbnail"><span class="json">{"name":"609792","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/2\/4\/24345a9c83882bd68f82b63576d033b6.png","w":1375,"h":893,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/2\/4\/24345a9c83882bd68f82b63576d033b6"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/2/4/24345a9c83882bd68f82b63576d033b6-240.jpg" alt="609792" width="240" height="155" /></span></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="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">  2</span><span class="p">#include &lt;allegro5/allegro_color.h&gt;</span>
<span class="number">  3</span><span class="p">#include &lt;allegro5/allegro_primitives.h&gt;</span>
<span class="number">  4</span><span class="p">#include &lt;iostream&gt;</span>
<span class="number">  5</span>
<span class="number">  6</span>
<span class="number">  7</span>
<span class="number">  8</span><span class="k1">struct</span> xy_points
<span class="number">  9</span><span class="k2">{</span>
<span class="number"> 10</span>  <span class="k1">float</span> x<span class="k2">;</span>
<span class="number"> 11</span>  <span class="k1">float</span> y<span class="k2">;</span>
<span class="number"> 12</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 13</span>
<span class="number"> 14</span><span class="k1">void</span> my_draw_calc_arc<span class="k2">(</span><span class="k1">float</span> x, <span class="k1">float</span> y<span class="k2">)</span>
<span class="number"> 15</span><span class="k2">{</span>
<span class="number"> 16</span>  xy_points points<span class="k2">[</span><span class="n">16</span><span class="k2">]</span><span class="k2">;</span>
<span class="number"> 17</span>
<span class="number"> 18</span>  <a href="http://www.allegro.cc/manual/al_calculate_arc"><span class="a">al_calculate_arc</span></a><span class="k2">(</span><span class="k3">&amp;</span>points<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.x, <span class="k1">sizeof</span><span class="k2">(</span>xy_points<span class="k2">)</span>,
<span class="number"> 19</span>    x, y, <span class="n">220</span>, <span class="n">140</span>,
<span class="number"> 20</span>    <span class="n">20</span>.<span class="n">0</span> <span class="k3">*</span> <a href="http://www.allegro.cc/manual/ALLEGRO_PI"><span class="a">ALLEGRO_PI</span></a> <span class="k3">/</span> <span class="n">180</span>.<span class="n">0</span>, <span class="n">60</span>.<span class="n">0</span> <span class="k3">*</span> <a href="http://www.allegro.cc/manual/ALLEGRO_PI"><span class="a">ALLEGRO_PI</span></a> <span class="k3">/</span> <span class="n">180</span>.<span class="n">0</span>, <span class="c">// start theta and delta theta (in radians)</span>
<span class="number"> 21</span>    <span class="n">20</span>.<span class="n">0</span>, <span class="n">8</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 22</span>
<span class="number"> 23</span>  <span class="k1">for</span> <span class="k2">(</span><span class="k1">unsigned</span> i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> i<span class="k3">&lt;</span><span class="n">16</span><span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 24</span>  <span class="k2">{</span>
<span class="number"> 25</span>    <a href="http://www.allegro.cc/manual/al_draw_circle"><span class="a">al_draw_circle</span></a><span class="k2">(</span>points<span class="k2">[</span>i<span class="k2">]</span>.x, points<span class="k2">[</span>i<span class="k2">]</span>.y, <span class="n">5</span>, <a href="http://www.allegro.cc/manual/al_color_name"><span class="a">al_color_name</span></a><span class="k2">(</span><span class="s">"dodgerblue"</span><span class="k2">)</span>, <span class="n">2</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 26</span>    std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"("</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> points<span class="k2">[</span>i<span class="k2">]</span>.x <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">", "</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> points<span class="k2">[</span>i<span class="k2">]</span>.y <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">")"</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number"> 27</span>  <span class="k2">}</span>
<span class="number"> 28</span><span class="k2">}</span>
<span class="number"> 29</span>
<span class="number"> 30</span>
<span class="number"> 31</span>
<span class="number"> 32</span><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span><span class="k3">*</span> argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span>
<span class="number"> 33</span><span class="k2">{</span>
<span class="number"> 34</span>  <a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 35</span>  <a href="http://www.allegro.cc/manual/al_init_primitives_addon"><span class="a">al_init_primitives_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 36</span>
<span class="number"> 37</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_display"><span class="a">al_create_display</span></a><span class="k2">(</span><span class="n">960</span>, <span class="n">600</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 38</span>
<span class="number"> 39</span>  my_draw_calc_arc<span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_display_width"><span class="a">al_get_display_width</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k3">/</span><span class="n">2</span>, <a href="http://www.allegro.cc/manual/al_get_display_height"><span class="a">al_get_display_height</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k3">/</span><span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 40</span>
<span class="number"> 41</span>  <a href="http://www.allegro.cc/manual/al_flip_display"><span class="a">al_flip_display</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 42</span>
<span class="number"> 43</span>  <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span><span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 44</span><span class="k2">}</span>
</div></div><p>

This example program shows for 2 seconds then closes.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Mark Oates)</author>
		<pubDate>Tue, 06 Oct 2015 02:19:23 +0000</pubDate>
	</item>
</rss>
