曲線の公式を利用したい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ボンビー

曲線の公式を利用したい

#1

投稿記事 by ボンビー » 12年前

曲線の公式をプログラム内で活用したいのですが手も足も出なくて困ってます・・・
http://www004.upp.so-net.ne.jp/s_honma/curve/sanyo.htm
たとえば上記サイトにある曲線の公式(x^2+y^2)=αy(3x^2-y^2)、極方程式:r=αsin3Θとありますが
極方程式とはなんなのか、rとαは何を指しているのか、xとyは結局どう求めるのか、全然わかりません
数学力もないバカですが、曲線の公式をプログラムに書きなおす際のコツを教えてもらいたいです。
例えばx,yの出し方や記号、変数の説明等…
でなければ役に立つサイトでもなんでもいいのでよろしくお願いします。

ちなみに今はDxLibとC言語でシューティングゲームを作っています。
環境はWin7です。

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: 曲線の公式を利用したい

#2

投稿記事 by みけCAT » 12年前

極方程式とは、極座標における方程式です。
極座標(r,θ)から直交座標(x,y)への変換は、x=r*cos(θ),y=r*sin(θ)です。

r=αsin3θの場合、
rが原点からの距離、αが適当な定数、
θが原点から伸びている基準となる半直線(上の変換式を用いる場合、x軸の正の方向)から反時計回りに進んだ角度です。

この場合、直交座標の例えばy=x^2+2*x+1のグラフを書くときと同様に、各θに対するrの値を求めればグラフが描けます。

コード:

#include <stdio.h>
#include <math.h>

#define ENSYURITU 3.14159265358979323846264338327950288419716939937510582097494459

int main(void) {
	int N=128;
	int i;
	double alpha=1;
	scanf("%d%lf",&N,&alpha);
	for(i=0;i<N;i++) {
		double r,theta,x,y;
		theta=2*ENSYURITU*i/N;
		r=alpha*sin(3*theta);
		x=r*cos(theta);
		y=r*sin(theta);
		printf("%f %f\n",x,y);
	}
	return 0;
}
このコードは、0~2πの範囲をN分割して、r=alpha*sin(3*theta)のグラフ上の点の座標を出力するプログラムです。
例えばN=512,alpha=3の時の出力をgnuplotに入力すると、以下のようなグラフが描けます。
3_512.png
グラフ例
3_512.png (20.46 KiB) 閲覧数: 2310 回
ボンビーさんは、曲線の公式をどのように活用したいのでしょうか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

ボンビー

Re: 曲線の公式を利用したい

#3

投稿記事 by ボンビー » 12年前

返信が遅れ申し訳ありません。

みけCATさんご回答ありがとうございます!詳しい説明で理解できました

>ボンビーさんは、曲線の公式をどのように活用したいのでしょうか?
特にコレと言った活用方法は考えていませんでしたが、シューティングによる敵の動きや
SetDrawBright()などのパラメータを滑らかに加減算するときなど
あらゆるところで数学の知識を活用できないかと考えていました。

とりあえず今回の解説を元に、自分なりに他の公式をも読み解いていろいろ試してみようとおもいます。
ありがとうございました!

閉鎖

“C言語何でも質問掲示板” へ戻る