<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" > 
<xsl:template name="perp">
  <xsl:param name="xp" />
  <xsl:param name="yp" />
  <xsl:param name="zp" />
  <xsl:param name="overp" />
  <xsl:param name="upp" />
  <xsl:param name="radp" />
  <xsl:param name="ppp" />
  <xsl:variable name="cb">
  <xsl:call-template name="cosine">
  <xsl:with-param name="deg" select="$overp" />
  </xsl:call-template>
  </xsl:variable>
  <xsl:variable name="sb">
  <xsl:call-template name="sine">
  <xsl:with-param name="deg" select="$overp" />
  </xsl:call-template>
  </xsl:variable>
  <xsl:variable name="ca">
  <xsl:call-template name="cosine">
  <xsl:with-param name="deg" select="$upp" />
  </xsl:call-template>
  </xsl:variable>
  <xsl:variable name="sa">
  <xsl:call-template name="sine">
  <xsl:with-param name="deg" select="$upp" />
  </xsl:call-template>
  </xsl:variable>
  <xsl:variable name="zcbxsb" select="number($zp * $cb + $xp * $sb)" />
  <xsl:variable name="den" select="number($radp - $yp * $sa - $zcbxsb * $ca)" />
  <xsl:variable name="xcbmzs" select="number($xp * $cb - $zp * $sb)" />
  <xsl:variable name="xperp" select="format-number($ppp * $xcbmzs div $den,'##0.0##')" />
  <xsl:variable name="yperp" select="format-number( ($yp * $ca - $zcbxsb * $sa )
    * $ppp div $den, '##0.0##' )" />
<xsl:value-of select="$xperp" />,<xsl:value-of select="$yperp" />
</xsl:template>
</xsl:stylesheet>

