[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Loxodromy
Hi,
I believe sample.tex is wrong,  as spherical spirals obtained by central
projection  of  helixes don't  cross  meridians  with  a constant  angle
(samples/sphere.xp).
I suggest something like this:
/* loxodrom.xp, April 11, 2003  */
#include "epix.h"
using namespace ePiX;
double zero (double t) {return 0;}
const double slope = 1/sqrt(3);
inline double exp_cos(double t)
{
  return exp(slope * t) * ePiX::cos(t);
}
inline double exp_sin(double t)
{
  return exp(slope * t) * ePiX::sin(t);
}
inline double minus_exp_cos(double t)
{
  return -exp_cos(t);
}
inline double minus_exp_sin(double t)
{
  return -exp_sin(t);
}
main()
{
  bounding_box(P(-1,-1), P(1,1));
  picture(P(360,360));
  unitlength("1pt");
  viewpoint(1,1,1);
  begin();
  ellipse(P(0,0), P(1,1));
  dotted();
  backplot_R(ePiX::cos, ePiX::sin, zero, 0, 2*M_PI, 60);
  backplot_R(zero, ePiX::cos, ePiX::sin, 0, 2*M_PI, 60);
  backplot_R(ePiX::sin, zero, ePiX::cos, 0, 2*M_PI, 60);
  solid();
  frontplot_R(ePiX::cos, ePiX::sin, zero, 0, 2*M_PI, 60);
  frontplot_R(zero, ePiX::cos, ePiX::sin, 0, 2*M_PI, 60);
  frontplot_R(ePiX::sin, zero, ePiX::cos, 0, 2*M_PI, 60);
  dashed();
  blue();
  backplot_N(exp_cos, exp_sin, -3*M_PI, 3*M_PI, 90);
  backplot_N(minus_exp_cos, minus_exp_sin, -3*M_PI, 3*M_PI, 90);
  red();
  backplot_N(exp_sin, minus_exp_cos, -3*M_PI, 3*M_PI, 90);
  backplot_N(minus_exp_sin, exp_cos, -3*M_PI, 3*M_PI, 90);
  solid();
  bold();
  blue();
  frontplot_N(exp_cos, exp_sin, -3*M_PI, 3*M_PI, 360);
  frontplot_N(minus_exp_cos, minus_exp_sin, -3*M_PI, 3*M_PI, 360);
  red();
  frontplot_N(exp_sin, minus_exp_cos, -3*M_PI, 3*M_PI, 360);
  frontplot_N(minus_exp_sin, exp_cos, -3*M_PI, 3*M_PI, 360);
  end();
}
I hope you like it ...
-- 
Jacques L'helgoualc'h
- Follow-Ups:
- Re: Loxodromy
- From: "Andrew D. Hwang" <ahwang@mathcs.holycross.edu>