[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>