曲線の公式をプログラム内で活用したいのですが手も足も出なくて困ってます・・・
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です。
曲線の公式を利用したい
Re: 曲線の公式を利用したい
極方程式とは、極座標における方程式です。
極座標(r,θ)から直交座標(x,y)への変換は、x=r*cos(θ),y=r*sin(θ)です。
r=αsin3θの場合、
rが原点からの距離、αが適当な定数、
θが原点から伸びている基準となる半直線(上の変換式を用いる場合、x軸の正の方向)から反時計回りに進んだ角度です。
この場合、直交座標の例えばy=x^2+2*x+1のグラフを書くときと同様に、各θに対するrの値を求めればグラフが描けます。
このコードは、0~2πの範囲をN分割して、r=alpha*sin(3*theta)のグラフ上の点の座標を出力するプログラムです。
例えばN=512,alpha=3の時の出力をgnuplotに入力すると、以下のようなグラフが描けます。 ボンビーさんは、曲線の公式をどのように活用したいのでしょうか?
極座標(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;
}
例えばN=512,alpha=3の時の出力をgnuplotに入力すると、以下のようなグラフが描けます。 ボンビーさんは、曲線の公式をどのように活用したいのでしょうか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
-
ボンビー
Re: 曲線の公式を利用したい
返信が遅れ申し訳ありません。
みけCATさんご回答ありがとうございます!詳しい説明で理解できました
>ボンビーさんは、曲線の公式をどのように活用したいのでしょうか?
特にコレと言った活用方法は考えていませんでしたが、シューティングによる敵の動きや
SetDrawBright()などのパラメータを滑らかに加減算するときなど
あらゆるところで数学の知識を活用できないかと考えていました。
とりあえず今回の解説を元に、自分なりに他の公式をも読み解いていろいろ試してみようとおもいます。
ありがとうございました!
みけCATさんご回答ありがとうございます!詳しい説明で理解できました
>ボンビーさんは、曲線の公式をどのように活用したいのでしょうか?
特にコレと言った活用方法は考えていませんでしたが、シューティングによる敵の動きや
SetDrawBright()などのパラメータを滑らかに加減算するときなど
あらゆるところで数学の知識を活用できないかと考えていました。
とりあえず今回の解説を元に、自分なりに他の公式をも読み解いていろいろ試してみようとおもいます。
ありがとうございました!