wcslib (8.2.2)

(root)/
share/
doc/
wcslib-8.2.2/
html/
structlinprm.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>WCSLIB: linprm Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectalign">
   <div id="projectname">WCSLIB<span id="projectnumber">&#160;8.2.2</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>

</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-attribs">Data Fields</a>  </div>
  <div class="headertitle"><div class="title">linprm Struct Reference</div></div>
</div><!--header-->
<div class="contents">

<p>Linear transformation parameters.  
 <a href="structlinprm.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="lin_8h_source.html">lin.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr class="memitem:a5bb0b2b2ce1f160a8a70f6437a893eea" id="r_a5bb0b2b2ce1f160a8a70f6437a893eea"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlinprm.html#a5bb0b2b2ce1f160a8a70f6437a893eea">flag</a></td></tr>
<tr class="separator:a5bb0b2b2ce1f160a8a70f6437a893eea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae281f0f7ebeaf5038cc13c13946641b1" id="r_ae281f0f7ebeaf5038cc13c13946641b1"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlinprm.html#ae281f0f7ebeaf5038cc13c13946641b1">naxis</a></td></tr>
<tr class="separator:ae281f0f7ebeaf5038cc13c13946641b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3691ff3f40a0ba087637d30ffc87e6d0" id="r_a3691ff3f40a0ba087637d30ffc87e6d0"><td class="memItemLeft" align="right" valign="top">double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlinprm.html#a3691ff3f40a0ba087637d30ffc87e6d0">crpix</a></td></tr>
<tr class="separator:a3691ff3f40a0ba087637d30ffc87e6d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c40bec32ec40035b8c1ef13db652270" id="r_a4c40bec32ec40035b8c1ef13db652270"><td class="memItemLeft" align="right" valign="top">double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlinprm.html#a4c40bec32ec40035b8c1ef13db652270">pc</a></td></tr>
<tr class="separator:a4c40bec32ec40035b8c1ef13db652270"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a162762d02eaade6a53d63d70b8827caa" id="r_a162762d02eaade6a53d63d70b8827caa"><td class="memItemLeft" align="right" valign="top">double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlinprm.html#a162762d02eaade6a53d63d70b8827caa">cdelt</a></td></tr>
<tr class="separator:a162762d02eaade6a53d63d70b8827caa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d951475b1c16f94703fba9e04ec24d2" id="r_a7d951475b1c16f94703fba9e04ec24d2"><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structdisprm.html">disprm</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlinprm.html#a7d951475b1c16f94703fba9e04ec24d2">dispre</a></td></tr>
<tr class="separator:a7d951475b1c16f94703fba9e04ec24d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c21e35f61f428ed14ca2b60bccc10c8" id="r_a2c21e35f61f428ed14ca2b60bccc10c8"><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structdisprm.html">disprm</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlinprm.html#a2c21e35f61f428ed14ca2b60bccc10c8">disseq</a></td></tr>
<tr class="separator:a2c21e35f61f428ed14ca2b60bccc10c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeaaf26fd243da58fee173b075bed1de7" id="r_aeaaf26fd243da58fee173b075bed1de7"><td class="memItemLeft" align="right" valign="top">double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlinprm.html#aeaaf26fd243da58fee173b075bed1de7">piximg</a></td></tr>
<tr class="separator:aeaaf26fd243da58fee173b075bed1de7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a28a705f744a32cd05dd3aa86ca58998b" id="r_a28a705f744a32cd05dd3aa86ca58998b"><td class="memItemLeft" align="right" valign="top">double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlinprm.html#a28a705f744a32cd05dd3aa86ca58998b">imgpix</a></td></tr>
<tr class="separator:a28a705f744a32cd05dd3aa86ca58998b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a596f68ff17fce142f36530d72dd838c4" id="r_a596f68ff17fce142f36530d72dd838c4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlinprm.html#a596f68ff17fce142f36530d72dd838c4">i_naxis</a></td></tr>
<tr class="separator:a596f68ff17fce142f36530d72dd838c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0a5cac7b1d2d3a0feb6905c05b122c2" id="r_af0a5cac7b1d2d3a0feb6905c05b122c2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlinprm.html#af0a5cac7b1d2d3a0feb6905c05b122c2">unity</a></td></tr>
<tr class="separator:af0a5cac7b1d2d3a0feb6905c05b122c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a499a66528c3dcb9d1a9bea67b5afaa0d" id="r_a499a66528c3dcb9d1a9bea67b5afaa0d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlinprm.html#a499a66528c3dcb9d1a9bea67b5afaa0d">affine</a></td></tr>
<tr class="separator:a499a66528c3dcb9d1a9bea67b5afaa0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af3a8524b6c3c11315e4048d4bd6864c8" id="r_af3a8524b6c3c11315e4048d4bd6864c8"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlinprm.html#af3a8524b6c3c11315e4048d4bd6864c8">simple</a></td></tr>
<tr class="separator:af3a8524b6c3c11315e4048d4bd6864c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2975830d4214bb6b35cb1ca922875057" id="r_a2975830d4214bb6b35cb1ca922875057"><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structwcserr.html">wcserr</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlinprm.html#a2975830d4214bb6b35cb1ca922875057">err</a></td></tr>
<tr class="separator:a2975830d4214bb6b35cb1ca922875057"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adf299a3f7750599a48373ce370fde9da" id="r_adf299a3f7750599a48373ce370fde9da"><td class="memItemLeft" align="right" valign="top">double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlinprm.html#adf299a3f7750599a48373ce370fde9da">tmpcrd</a></td></tr>
<tr class="separator:adf299a3f7750599a48373ce370fde9da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ef7cce6307f640aca1080d0d5ad9ba1" id="r_a5ef7cce6307f640aca1080d0d5ad9ba1"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlinprm.html#a5ef7cce6307f640aca1080d0d5ad9ba1">m_flag</a></td></tr>
<tr class="separator:a5ef7cce6307f640aca1080d0d5ad9ba1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeefcacedf2989970f0df2c246d84bfb7" id="r_aeefcacedf2989970f0df2c246d84bfb7"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlinprm.html#aeefcacedf2989970f0df2c246d84bfb7">m_naxis</a></td></tr>
<tr class="separator:aeefcacedf2989970f0df2c246d84bfb7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a091103ceb860eeed1a280effa0df28df" id="r_a091103ceb860eeed1a280effa0df28df"><td class="memItemLeft" align="right" valign="top">double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlinprm.html#a091103ceb860eeed1a280effa0df28df">m_crpix</a></td></tr>
<tr class="separator:a091103ceb860eeed1a280effa0df28df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7036b8527bc8b220ad8a863442631f48" id="r_a7036b8527bc8b220ad8a863442631f48"><td class="memItemLeft" align="right" valign="top">double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlinprm.html#a7036b8527bc8b220ad8a863442631f48">m_pc</a></td></tr>
<tr class="separator:a7036b8527bc8b220ad8a863442631f48"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ac85757a7a46247e353a089374eb128" id="r_a5ac85757a7a46247e353a089374eb128"><td class="memItemLeft" align="right" valign="top">double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlinprm.html#a5ac85757a7a46247e353a089374eb128">m_cdelt</a></td></tr>
<tr class="separator:a5ac85757a7a46247e353a089374eb128"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9c5dae1285df5adbc684bb650a84b74a" id="r_a9c5dae1285df5adbc684bb650a84b74a"><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structdisprm.html">disprm</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlinprm.html#a9c5dae1285df5adbc684bb650a84b74a">m_dispre</a></td></tr>
<tr class="separator:a9c5dae1285df5adbc684bb650a84b74a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7ecd987ea3b41b7d0a1c4489e882c1f4" id="r_a7ecd987ea3b41b7d0a1c4489e882c1f4"><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structdisprm.html">disprm</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlinprm.html#a7ecd987ea3b41b7d0a1c4489e882c1f4">m_disseq</a></td></tr>
<tr class="separator:a7ecd987ea3b41b7d0a1c4489e882c1f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Linear transformation parameters. </p>
<p>The <b>linprm</b> struct contains all of the information required to perform a linear transformation. It consists of certain members that must be set by the user (<em>given</em>) and others that are set by the WCSLIB routines (<em>returned</em>). </p>
</div><h2 class="groupheader">Field Documentation</h2>
<a id="a5bb0b2b2ce1f160a8a70f6437a893eea" name="a5bb0b2b2ce1f160a8a70f6437a893eea"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5bb0b2b2ce1f160a8a70f6437a893eea">&#9670;&#160;</a></span>flag</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int linprm::flag</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>(Given and returned) This flag must be set to zero whenever any of the following members of the <b>linprm</b> struct are set or modified:</p>
<ul>
<li>
<a class="el" href="structlinprm.html#ae281f0f7ebeaf5038cc13c13946641b1">linprm::naxis</a> (q.v., not normally set by the user), </li>
<li>
<a class="el" href="structlinprm.html#a4c40bec32ec40035b8c1ef13db652270">linprm::pc</a>, </li>
<li>
<a class="el" href="structlinprm.html#a162762d02eaade6a53d63d70b8827caa">linprm::cdelt</a>, </li>
<li>
<a class="el" href="structlinprm.html#a7d951475b1c16f94703fba9e04ec24d2">linprm::dispre</a>. </li>
<li>
<a class="el" href="structlinprm.html#a2c21e35f61f428ed14ca2b60bccc10c8">linprm::disseq</a>. </li>
</ul>
<p>This signals the initialization routine, <a class="el" href="lin_8h.html#a5c01c0991c8d0c4437581a7c1453b09a" title="Setup routine for the linprm struct.">linset()</a>, to recompute the returned members of the <b>linprm</b> struct. <a class="el" href="lin_8h.html#a5c01c0991c8d0c4437581a7c1453b09a" title="Setup routine for the linprm struct.">linset()</a> will reset flag to indicate that this has been done.</p>
<p><b>PLEASE NOTE:</b> flag should be set to -1 when <a class="el" href="lin_8h.html#afa85e4b255b144d2b806f51be0d36be2" title="Default constructor for the linprm struct.">lininit()</a> is called for the first time for a particular <b>linprm</b> struct in order to initialize memory management. It must ONLY be used on the first initialization otherwise memory leaks may result. </p>

</div>
</div>
<a id="ae281f0f7ebeaf5038cc13c13946641b1" name="ae281f0f7ebeaf5038cc13c13946641b1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae281f0f7ebeaf5038cc13c13946641b1">&#9670;&#160;</a></span>naxis</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int linprm::naxis</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>(Given or returned) Number of pixel and world coordinate elements.</p>
<p>If <a class="el" href="lin_8h.html#afa85e4b255b144d2b806f51be0d36be2" title="Default constructor for the linprm struct.">lininit()</a> is used to initialize the <b>linprm</b> struct (as would normally be the case) then it will set naxis from the value passed to it as a function argument. The user should not subsequently modify it. </p>

</div>
</div>
<a id="a3691ff3f40a0ba087637d30ffc87e6d0" name="a3691ff3f40a0ba087637d30ffc87e6d0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3691ff3f40a0ba087637d30ffc87e6d0">&#9670;&#160;</a></span>crpix</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double * linprm::crpix</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>(<em>Given</em>) Pointer to the first element of an array of double containing the coordinate reference pixel, <code><b>CRPIX</b>ja</code>.</p>
<p>It is not necessary to reset the <b>linprm</b> struct (via <a class="el" href="lin_8h.html#a5c01c0991c8d0c4437581a7c1453b09a" title="Setup routine for the linprm struct.">linset()</a>) when <a class="el" href="structlinprm.html#a3691ff3f40a0ba087637d30ffc87e6d0">linprm::crpix</a> is changed. </p>

</div>
</div>
<a id="a4c40bec32ec40035b8c1ef13db652270" name="a4c40bec32ec40035b8c1ef13db652270"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4c40bec32ec40035b8c1ef13db652270">&#9670;&#160;</a></span>pc</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double * linprm::pc</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>(<em>Given</em>) Pointer to the first element of the <code><b>PC</b>i<b>_</b>ja</code> (pixel coordinate) transformation matrix. The expected order is </p><div class="fragment"><div class="line"><span class="keyword">struct </span><a class="code hl_struct" href="structlinprm.html">linprm</a> lin;</div>
<div class="line">lin.<a class="code hl_variable" href="structlinprm.html#a4c40bec32ec40035b8c1ef13db652270">pc</a> = {PC1_1, PC1_2, PC2_1, PC2_2};</div>
<div class="ttc" id="astructlinprm_html"><div class="ttname"><a href="structlinprm.html">linprm</a></div><div class="ttdoc">Linear transformation parameters.</div><div class="ttdef"><b>Definition</b> lin.h:680</div></div>
<div class="ttc" id="astructlinprm_html_a4c40bec32ec40035b8c1ef13db652270"><div class="ttname"><a href="structlinprm.html#a4c40bec32ec40035b8c1ef13db652270">linprm::pc</a></div><div class="ttdeci">double * pc</div><div class="ttdef"><b>Definition</b> lin.h:689</div></div>
</div><!-- fragment --><p>This may be constructed conveniently from a 2-D array via </p><div class="fragment"><div class="line"><span class="keywordtype">double</span> m[2][2] = {{PC1_1, PC1_2},</div>
<div class="line">                  {PC2_1, PC2_2}};</div>
</div><!-- fragment --><p>which is equivalent to </p><div class="fragment"><div class="line"><span class="keywordtype">double</span> m[2][2];</div>
<div class="line">m[0][0] = PC1_1;</div>
<div class="line">m[0][1] = PC1_2;</div>
<div class="line">m[1][0] = PC2_1;</div>
<div class="line">m[1][1] = PC2_2;</div>
</div><!-- fragment --><p>The storage order for this 2-D array is the same as for the 1-D array, whence </p><div class="fragment"><div class="line">lin.pc = *m;</div>
</div><!-- fragment --><p>would be legitimate. </p>

</div>
</div>
<a id="a162762d02eaade6a53d63d70b8827caa" name="a162762d02eaade6a53d63d70b8827caa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a162762d02eaade6a53d63d70b8827caa">&#9670;&#160;</a></span>cdelt</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double * linprm::cdelt</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>(<em>Given</em>) Pointer to the first element of an array of double containing the coordinate increments, <code><b>CDELT</b>ia</code>. </p>

</div>
</div>
<a id="a7d951475b1c16f94703fba9e04ec24d2" name="a7d951475b1c16f94703fba9e04ec24d2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7d951475b1c16f94703fba9e04ec24d2">&#9670;&#160;</a></span>dispre</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structdisprm.html">disprm</a> * linprm::dispre</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>(<em>Given</em>) Pointer to a disprm struct holding parameters for prior distortion functions, or a null (0x0) pointer if there are none.</p>
<p>Function <a class="el" href="lin_8h.html#ad5bc6ffb673b1c38105bdf2d8def5194" title="Assign a distortion to a linprm struct.">lindist()</a> may be used to assign a disprm pointer to a <b>linprm</b> struct, allowing it to take control of any memory allocated for it, as in the following example: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> add_distortion(<span class="keyword">struct</span> <a class="code hl_struct" href="structlinprm.html">linprm</a> *lin)</div>
<div class="line">{</div>
<div class="line">  <span class="keyword">struct </span><a class="code hl_struct" href="structdisprm.html">disprm</a> *<a class="code hl_variable" href="structlinprm.html#a7d951475b1c16f94703fba9e04ec24d2">dispre</a>;</div>
<div class="line"> </div>
<div class="line">  <a class="code hl_variable" href="structlinprm.html#a7d951475b1c16f94703fba9e04ec24d2">dispre</a> = malloc(<span class="keyword">sizeof</span>(<span class="keyword">struct</span> <a class="code hl_struct" href="structdisprm.html">disprm</a>));</div>
<div class="line">  <a class="code hl_variable" href="structlinprm.html#a7d951475b1c16f94703fba9e04ec24d2">dispre</a>-&gt;<a class="code hl_variable" href="structdisprm.html#a4d6ba28bee2fc636f4b2b9ca4b50b0a4">flag</a> = -1;</div>
<div class="line">  <a class="code hl_function" href="lin_8h.html#ad5bc6ffb673b1c38105bdf2d8def5194">lindist</a>(1, lin, <a class="code hl_variable" href="structlinprm.html#a7d951475b1c16f94703fba9e04ec24d2">dispre</a>, ndpmax);</div>
<div class="line">    :</div>
<div class="line">   (Set up <a class="code hl_variable" href="structlinprm.html#a7d951475b1c16f94703fba9e04ec24d2">dispre</a>.)</div>
<div class="line">    :</div>
<div class="line"> </div>
<div class="line">  <span class="keywordflow">return</span>;</div>
<div class="line">}</div>
<div class="ttc" id="alin_8h_html_ad5bc6ffb673b1c38105bdf2d8def5194"><div class="ttname"><a href="lin_8h.html#ad5bc6ffb673b1c38105bdf2d8def5194">lindist</a></div><div class="ttdeci">int lindist(int sequence, struct linprm *lin, struct disprm *dis, int ndpmax)</div><div class="ttdoc">Assign a distortion to a linprm struct.</div></div>
<div class="ttc" id="astructdisprm_html"><div class="ttname"><a href="structdisprm.html">disprm</a></div><div class="ttdoc">Distortion parameters.</div><div class="ttdef"><b>Definition</b> dis.h:1093</div></div>
<div class="ttc" id="astructdisprm_html_a4d6ba28bee2fc636f4b2b9ca4b50b0a4"><div class="ttname"><a href="structdisprm.html#a4d6ba28bee2fc636f4b2b9ca4b50b0a4">disprm::flag</a></div><div class="ttdeci">int flag</div><div class="ttdef"><b>Definition</b> dis.h:1096</div></div>
<div class="ttc" id="astructlinprm_html_a7d951475b1c16f94703fba9e04ec24d2"><div class="ttname"><a href="structlinprm.html#a7d951475b1c16f94703fba9e04ec24d2">linprm::dispre</a></div><div class="ttdeci">struct disprm * dispre</div><div class="ttdef"><b>Definition</b> lin.h:691</div></div>
</div><!-- fragment --><p>Here, after the distortion function parameters etc. are copied into dispre, dispre is assigned using <a class="el" href="lin_8h.html#ad5bc6ffb673b1c38105bdf2d8def5194" title="Assign a distortion to a linprm struct.">lindist()</a> which takes control of the allocated memory. It will be freed later when <a class="el" href="lin_8h.html#aef9ead7c6ea6ab08f3ba3fc6a1c30303" title="Destructor for the linprm struct.">linfree()</a> is invoked on the <b>linprm</b> struct.</p>
<p>Consider also the following erroneous code: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> bad_code(<span class="keyword">struct</span> <a class="code hl_struct" href="structlinprm.html">linprm</a> *lin)</div>
<div class="line">{</div>
<div class="line">  <span class="keyword">struct </span><a class="code hl_struct" href="structdisprm.html">disprm</a> <a class="code hl_variable" href="structlinprm.html#a7d951475b1c16f94703fba9e04ec24d2">dispre</a>;</div>
<div class="line"> </div>
<div class="line">  <a class="code hl_variable" href="structlinprm.html#a7d951475b1c16f94703fba9e04ec24d2">dispre</a>.<a class="code hl_variable" href="structdisprm.html#a4d6ba28bee2fc636f4b2b9ca4b50b0a4">flag</a> = -1;</div>
<div class="line">  <a class="code hl_function" href="lin_8h.html#ad5bc6ffb673b1c38105bdf2d8def5194">lindist</a>(1, lin, &amp;<a class="code hl_variable" href="structlinprm.html#a7d951475b1c16f94703fba9e04ec24d2">dispre</a>, ndpmax);   <span class="comment">// WRONG.</span></div>
<div class="line">    :</div>
<div class="line"> </div>
<div class="line">  <span class="keywordflow">return</span>;</div>
<div class="line">}</div>
</div><!-- fragment --><p>Here, dispre is declared as a struct, rather than a pointer. When the function returns, dispre will go out of scope and its memory will most likely be reused, thereby trashing its contents. Later, a segfault will occur when <a class="el" href="lin_8h.html#aef9ead7c6ea6ab08f3ba3fc6a1c30303" title="Destructor for the linprm struct.">linfree()</a> tries to free dispre's stale address. </p>

</div>
</div>
<a id="a2c21e35f61f428ed14ca2b60bccc10c8" name="a2c21e35f61f428ed14ca2b60bccc10c8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2c21e35f61f428ed14ca2b60bccc10c8">&#9670;&#160;</a></span>disseq</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structdisprm.html">disprm</a> * linprm::disseq</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>(<em>Given</em>) Pointer to a disprm struct holding parameters for sequent distortion functions, or a null (0x0) pointer if there are none.</p>
<p>Refer to the comments and examples given for disprm::dispre. </p>

</div>
</div>
<a id="aeaaf26fd243da58fee173b075bed1de7" name="aeaaf26fd243da58fee173b075bed1de7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeaaf26fd243da58fee173b075bed1de7">&#9670;&#160;</a></span>piximg</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double * linprm::piximg</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>(<em>Returned</em>) Pointer to the first element of the matrix containing the product of the <code><b>CDELT</b>ia</code> diagonal matrix and the <code><b>PC</b>i<b>_</b>ja</code> matrix. </p>

</div>
</div>
<a id="a28a705f744a32cd05dd3aa86ca58998b" name="a28a705f744a32cd05dd3aa86ca58998b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a28a705f744a32cd05dd3aa86ca58998b">&#9670;&#160;</a></span>imgpix</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double * linprm::imgpix</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>(<em>Returned</em>) Pointer to the first element of the inverse of the <a class="el" href="structlinprm.html#aeaaf26fd243da58fee173b075bed1de7">linprm::piximg</a> matrix. </p>

</div>
</div>
<a id="a596f68ff17fce142f36530d72dd838c4" name="a596f68ff17fce142f36530d72dd838c4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a596f68ff17fce142f36530d72dd838c4">&#9670;&#160;</a></span>i_naxis</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int linprm::i_naxis</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>(<em>Returned</em>) The dimension of <a class="el" href="structlinprm.html#aeaaf26fd243da58fee173b075bed1de7">linprm::piximg</a> and <a class="el" href="structlinprm.html#a28a705f744a32cd05dd3aa86ca58998b">linprm::imgpix</a> (normally equal to naxis). </p>

</div>
</div>
<a id="af0a5cac7b1d2d3a0feb6905c05b122c2" name="af0a5cac7b1d2d3a0feb6905c05b122c2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af0a5cac7b1d2d3a0feb6905c05b122c2">&#9670;&#160;</a></span>unity</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int linprm::unity</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>(<em>Returned</em>) True if the linear transformation matrix is unity. </p>

</div>
</div>
<a id="a499a66528c3dcb9d1a9bea67b5afaa0d" name="a499a66528c3dcb9d1a9bea67b5afaa0d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a499a66528c3dcb9d1a9bea67b5afaa0d">&#9670;&#160;</a></span>affine</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int linprm::affine</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>(<em>Returned</em>) True if there are no distortions. </p>

</div>
</div>
<a id="af3a8524b6c3c11315e4048d4bd6864c8" name="af3a8524b6c3c11315e4048d4bd6864c8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af3a8524b6c3c11315e4048d4bd6864c8">&#9670;&#160;</a></span>simple</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int linprm::simple</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>(<em>Returned</em>) True if unity and no distortions. </p>

</div>
</div>
<a id="a2975830d4214bb6b35cb1ca922875057" name="a2975830d4214bb6b35cb1ca922875057"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2975830d4214bb6b35cb1ca922875057">&#9670;&#160;</a></span>err</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structwcserr.html">wcserr</a> * linprm::err</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>(<em>Returned</em>) If enabled, when an error status is returned, this struct contains detailed information about the error, see <a class="el" href="wcserr_8h.html#a1691b8bd184d40ca6fda255be078fa53" title="Enable/disable error messaging.">wcserr_enable()</a>. </p>

</div>
</div>
<a id="adf299a3f7750599a48373ce370fde9da" name="adf299a3f7750599a48373ce370fde9da"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adf299a3f7750599a48373ce370fde9da">&#9670;&#160;</a></span>tmpcrd</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double * linprm::tmpcrd</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>(For internal use only.) </p>

</div>
</div>
<a id="a5ef7cce6307f640aca1080d0d5ad9ba1" name="a5ef7cce6307f640aca1080d0d5ad9ba1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5ef7cce6307f640aca1080d0d5ad9ba1">&#9670;&#160;</a></span>m_flag</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int linprm::m_flag</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>(For internal use only.) </p>

</div>
</div>
<a id="aeefcacedf2989970f0df2c246d84bfb7" name="aeefcacedf2989970f0df2c246d84bfb7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeefcacedf2989970f0df2c246d84bfb7">&#9670;&#160;</a></span>m_naxis</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int linprm::m_naxis</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>(For internal use only.) </p>

</div>
</div>
<a id="a091103ceb860eeed1a280effa0df28df" name="a091103ceb860eeed1a280effa0df28df"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a091103ceb860eeed1a280effa0df28df">&#9670;&#160;</a></span>m_crpix</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double * linprm::m_crpix</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>(For internal use only.) </p>

</div>
</div>
<a id="a7036b8527bc8b220ad8a863442631f48" name="a7036b8527bc8b220ad8a863442631f48"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7036b8527bc8b220ad8a863442631f48">&#9670;&#160;</a></span>m_pc</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double * linprm::m_pc</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>(For internal use only.) </p>

</div>
</div>
<a id="a5ac85757a7a46247e353a089374eb128" name="a5ac85757a7a46247e353a089374eb128"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5ac85757a7a46247e353a089374eb128">&#9670;&#160;</a></span>m_cdelt</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double * linprm::m_cdelt</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>(For internal use only.) </p>

</div>
</div>
<a id="a9c5dae1285df5adbc684bb650a84b74a" name="a9c5dae1285df5adbc684bb650a84b74a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9c5dae1285df5adbc684bb650a84b74a">&#9670;&#160;</a></span>m_dispre</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structdisprm.html">disprm</a> * linprm::m_dispre</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>(For internal use only.) </p>

</div>
</div>
<a id="a7ecd987ea3b41b7d0a1c4489e882c1f4" name="a7ecd987ea3b41b7d0a1c4489e882c1f4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7ecd987ea3b41b7d0a1c4489e882c1f4">&#9670;&#160;</a></span>m_disseq</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structdisprm.html">disprm</a> * linprm::m_disseq</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>(For internal use only.) </p>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Nov 29 2023 19:09:57 for WCSLIB by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
</small></address>
</body>
</html>