/* -*-ePiX-*- */ #include "epix.h" using namespace ePiX; const double MAX(3); const double ALPHA(M_PI/6); // alpha (demi-angle au sommet du cône) const double SA(Sin(ALPHA)); // sin(alpha) const double CA(Cos(ALPHA)); // cos(alpha) const double XC(10); const double YC(-5); // Cône P Cone(double x, double y) { return fabs(sinh(x))*P(Cos(y), Sin(y), -1/Tan(ALPHA)); } P PolaireSurCone(double t, double r,double a) { return 1.5*P(r*SA*Cos(t/SA),r*SA*Sin(t/SA),-r*CA); } int main() { bounding_box(P(-MAX,-MAX),P(MAX,MAX)); unitlength("1in"); picture(6,6); begin(); camera.at(XC,YC,4); clip_face(P(-XC/60,-YC/60,0),P(XC,YC,0)); domain R(P(-1.5,0), P(0,2*M_PI), mesh(25, 36), mesh(50, 72)); fill(White()); surface(Cone, R); base(Red(0.6), "3pt"); bold(Red()); plot("chainette.dta",PATH,PolaireSurCone,1,2); clip_restore(); pst_format(); end(); }