媒介変数表示とグラフ

雛形を利用して、色々なグラフを描きます。

色々な媒介変数表示のグラフを描く

媒介変数表示のグラフを描きます。 雛形(MyApp.h")は、既に媒介変数表示ですから、そのまま使います。 ここでは、変更した所だけ載せます。

放物線 x = y2 のグラフ(win222-1)

x = y2 の場合、x = t * t, y = t です。

// 曲線
class MyCurve2 : public MyCurve{
public:
	double fx(double t){
		return t * t;
	}
	
	double fy(double t){
		return t;
	}
};

実行画面です。

円のグラフ(win222-2)

中心 (cx, cy)、半径 r の円です。

// 曲線
class MyCurve2 : public MyCurve{
public:
	double cx, cy, r;
	
	double fx(double t){
		return r * cos(t) + cx;
	}
	
	double fy(double t){
		return r * sin(t) + cy;
	}
	
	// コンストラクタ
	MyCurve2(){
		cx = 0;
		cy = 0;
		r = 1;
	}
	
	void set(double a, double b, double r1){
		cx = a;
		cy = b;
		r = r1;
	}
};

実行画面です。

サイクロイドを描く(win222-3)

// 曲線
class MyCurve2 : public MyCurve{
public:
	double r;
	
	double fx(double t){
		return r * (t - sin(t));
	}
	
	double fy(double t){
		return r * (1 - cos(t));
	}
	
	// コンストラクタ
	MyCurve2(){
		r = 1;
	}
	
	void set(double r1){
		r = r1;
	}
};

実行画面です。

エピサイクロイドを描く(win222-4)

// 曲線
class MyCurve2 : public MyCurve{
public:
	double rc;
	double rm;
	
	double fx(double t){
		return (rc + rm) * cos(t) - rm * cos((rc / rm + 1) * t);
	}
	
	double fy(double t){
		return (rc + rm) * sin(t) - rm * sin((rc / rm + 1) * t);
	}
	
	// コンストラクタ
	MyCurve2(){
		rc = 2;
		rm = 1;
	}
	
	void set(double rc1, double rm1){
		rc = rc1;
		rm = rm1;
	}                                 
};

ハイポサイクロイドを描く(win222-5)

rc = 4, rm = 1

// 曲線
class MyCurve2 : public MyCurve{
public:
	double rc;
	double rm;
	
	double fx(double t){
		return (rc - rm) * cos(t) + rm * cos((rc / rm - 1) * t);
	}
	
	double fy(double t){
		return (rc - rm) * sin(t) - rm * sin((rc / rm - 1) * t);
	}
	
	// コンストラクタ
	MyCurve2(){
		rc = 4;
		rm = 1;
	}
	
	void set(double rc1, double rm1){
		rc = rc1;
		rm = rm1;
	}
};

リサージュ曲線(win222-6)

// 曲線
class MyCurve2 : public MyCurve{
public:
	double a;
	double b;
	
	double fx(double t){
		return sin(a * t);
	}
	
	double fy(double t){
		return sin(b * t);
	}
	
	// コンストラクタ
	MyCurve2(){
		a = 2;
		b = 3;
	}
	
	void set(double a1, double b1){
		a = a1;
		b = b1;
	}
};

デカルトの正葉曲線(win222-7)

// 曲線
class MyCurve2 : public MyCurve{
public:
	
	double fx(double t){
		return 3 * t / (1 + pow(t, 3));
	}
	
	double fy(double t){
		return 3 * pow(t, 2) / (1 + pow(t, 3));
	}
};

アステロイド(win222-8)

// 曲線
class MyCurve2 : public MyCurve{
public:
	
	double fx(double t){
		return pow(cos(t), 3);
	}
	
	double fy(double t){
		return pow(sin(t), 3);
	}
};

[前] [目次] [次]