/* ------------------------------------ */
/* Save as : x_ahfile.h */
/* ------------------------------------ */
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <time.h>
#include <math.h>
#include <string.h>
/* ------------------------------------ */
#include "xdef.h"
#include "xplt.h"
#include "xfx_x.h"
/* ------------------------------------ */
#include "kradius.h"
#include "kg_c.h"
#include "kcircle.h"
/* ------------------------------------ */
/* Save as : kradius.h */
/* ------------------------------------ */
double Kt_2d(
double (*P_f)(double t),
double (*P_g)(double t),
double t,
double e
)
{
double K;
double a;
double b;
a = fx_x((*P_f),t,e);
b = fx_x((*P_g),t,e);
K = fabs(a*fx_xx((*P_g),t,e)-b*fx_xx((*P_f),t,e))
/
pow(a*a+b*b,3./2.);
return(K);
}
/* ------------------------------------ */
double cx_2d(
double (*P_f)(double t),
double (*P_g)(double t),
double t,
double e
)
{
double Num,Den;
Num =( pow(fx_x((*P_f),t,e),2)
+pow(fx_x((*P_g),t,e),2)
)
*fx_x((*P_g),t,e);
Den = fx_x((*P_f),t,e)*fx_xx((*P_g),t,e)-
fx_x((*P_g),t,e)*fx_xx((*P_f),t,e);
return((*P_f)(t)-Num/Den);
}
/* ------------------------------------ */
double cy_2d(
double (*P_f)(double t),
double (*P_g)(double t),
double t,
double e
)
{
double Num,Den;
Num =( pow(fx_x((*P_f),t,e),2)
+pow(fx_x((*P_g),t,e),2)
)
*fx_x((*P_f),t,e);
Den = fx_x((*P_f),t,e)*fx_xx((*P_g),t,e)-
fx_x((*P_g),t,e)*fx_xx((*P_f),t,e);
return((*P_g)(t)+Num/Den);
}
/* ------------------------------------ */
/* Save as : fb.h */
/* ------------------------------------ */
double f(
double t)
{
return( 4+sin(2*t) );
}
char feq[] = "4+sin(2*t)";
/* ------------------------------------ */
double g(
double t)
{
return( 1-2*cos(3*t) );
}
char geq[] = "1-2*cos(3*t)";
/* ------------------------------------ */
/* Save as : kg_c.h */
/* ------------------------------------ */
void G_C_2d(
W_Ctrl W,
t_Ctrl T,
double (*P_f)(double x),
double (*P_g)(double x),
double x,
double e
)
{
FILE *fp;
double i;
fp = fopen("a_main.plt","w");
fprintf(fp," reset\n"
" set zeroaxis lt 8\n"
" set size ratio -1\n"
" set grid\n\n"
" plot [%0.3f:%0.3f] [%0.3f:%0.3f]\\\n"
" \"a_radius.plt\" with linespoints,\\\n"
" \"a_curve.plt\" with line,\\\n"
" \"a_circle.plt\" with line\n",
W.xmini,W.xmaxi,W.ymini,W.ymaxi);
fclose(fp);
fp = fopen("a_curve.plt","w");
for(i=T.mini; i<=T.maxi; i+=T.step)
fprintf(fp," %6.3f %6.3f\n",(*P_f)(i),(*P_g)(i));
fclose(fp);
fp = fopen("a_radius.plt","w");
fprintf(fp," %6.5f %6.5f\n",cx_2d((*P_f),(*P_g),x,e),
cy_2d((*P_f),(*P_g),x,e));
fprintf(fp," %6.5f %6.5f\n",(*P_f)(x),(*P_g)(x));
fclose(fp);
Pause();
}
/* ------------------------------------ */
/* Save as : kcircle.h */
/* ------------------------------------ */
void circle(
char Name[FILENAME_MAX],
double r,
double x,
double y
)
{
FILE *fp = fopen(Name,"w");
double t = 0.;
for(;t<2.01*PI;t+=.1)
fprintf(fp," %6.5f %6.5f\n",r*cos(t)+x,r*sin(t)+y);
fclose(fp);
}