<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>How can I scale an object from the array of coordinates?</title>
		<link>http://www.allegro.cc/forums/view/618266</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Wed, 21 Oct 2020 16:13:24 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I would like to scale up a polygon defined on cords below. How can I do that?</p><p>float cords[8] = {<br />  x1,y1,<br />  x2, y2,<br />  x3, y3,<br />  x4, y4<br />};
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (NathanJ)</author>
		<pubDate>Tue, 20 Oct 2020 00:25:38 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I suggest you read-up on linear transformations, but basically you just multiply each element of your array by a scaling matrix.</p><p>But I suppose if all you&#39;re trying to do is scale the points (or vertices) of a polygon, you could simply iterate through the array and multiply it by a scaling factor...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Eric Johnson)</author>
		<pubDate>Tue, 20 Oct 2020 00:36:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>If you scale the data by itself, it will induce a translation. You need to center it on the origin first, then scale it, and THEN you can translate it to its correct position.</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">float</span> cords<span class="k2">[</span><span class="n">8</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span>
<span class="number">  2</span>x1,y1,
<span class="number">  3</span>x2, y2,
<span class="number">  4</span>x3, y3,
<span class="number">  5</span>x4, y4
<span class="number">  6</span><span class="k2">}</span><span class="k2">;</span> 
<span class="number">  7</span><span class="k1">const</span> <span class="k1">float</span> cx <span class="k3">=</span> <span class="k2">(</span>x1 <span class="k3">+</span> x2 <span class="k3">+</span> x3 <span class="k3">+</span> x4<span class="k2">)</span><span class="k3">/</span><span class="n">4</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  8</span><span class="k1">const</span> <span class="k1">float</span> cy <span class="k3">=</span> <span class="k2">(</span>y1 <span class="k3">+</span> y2 <span class="k3">+</span> y3 <span class="k3">+</span> y4<span class="k2">)</span><span class="k3">/</span><span class="n">4</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  9</span>
<span class="number"> 10</span><a href="http://www.allegro.cc/manual/ALLEGRO_TRANSFORM"><span class="a">ALLEGRO_TRANSFORM</span></a> t<span class="k2">;</span>
<span class="number"> 11</span><a href="http://www.allegro.cc/manual/al_identity_transform"><span class="a">al_identity_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>t<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span><a href="http://www.allegro.cc/manual/al_translate_transform"><span class="a">al_translate_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>t , <span class="k3">-</span>cx , <span class="k3">-</span>cy<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span><a href="http://www.allegro.cc/manual/al_scale_transform"><span class="a">al_scale_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>t , scalex , scaley<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span><a href="http://www.allegro.cc/manual/al_translate_transform"><span class="a">al_translate_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>t , posx , posy<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span>
<span class="number"> 16</span><a href="http://www.allegro.cc/manual/al_transform_coordinates"><span class="a">al_transform_coordinates</span></a><span class="k2">(</span><span class="k3">&amp;</span>t , <span class="k3">&amp;</span>cords<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> , <span class="k3">&amp;</span>cords<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span><a href="http://www.allegro.cc/manual/al_transform_coordinates"><span class="a">al_transform_coordinates</span></a><span class="k2">(</span><span class="k3">&amp;</span>t , <span class="k3">&amp;</span>cords<span class="k2">[</span><span class="n">2</span><span class="k2">]</span> , <span class="k3">&amp;</span>cords<span class="k2">[</span><span class="n">3</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span><a href="http://www.allegro.cc/manual/al_transform_coordinates"><span class="a">al_transform_coordinates</span></a><span class="k2">(</span><span class="k3">&amp;</span>t , <span class="k3">&amp;</span>cords<span class="k2">[</span><span class="n">4</span><span class="k2">]</span> , <span class="k3">&amp;</span>cords<span class="k2">[</span><span class="n">5</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span><a href="http://www.allegro.cc/manual/al_transform_coordinates"><span class="a">al_transform_coordinates</span></a><span class="k2">(</span><span class="k3">&amp;</span>t , <span class="k3">&amp;</span>cords<span class="k2">[</span><span class="n">6</span><span class="k2">]</span> , <span class="k3">&amp;</span>cords<span class="k2">[</span><span class="n">7</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 20</span>
<span class="number"> 21</span><span class="c">/// Our polygon is now centered on posx , posy at a scale of scalex,scaley.</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Wed, 21 Oct 2020 16:13:24 +0000</pubDate>
	</item>
</rss>
