- ベストアンサー
VB4でリサージュ図形の面積測定
オシロのCH1,CH2それぞれの波形データを取り込む。位相差があるためにCH1の値がaのときCH2の値はb、cとなった場合(リサージュ図形は楕円になるとき)ですが、 (bとcの差)*CH1の1周期分=楕円のリサージュ図形の面積 となりますよね? この場合の (bとcの差)*CH1の1周期分=楕円のリサージュ図形の面積 の部分をVB4で組みたいのですがどのような感じにすればよいでしょうか?ちなみにX-Yモードにすると波形データが読み取れないため、別々に読み取ったあとで計算する形なのでこのようになっています。 分かりにくいかもしれませんがよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
座標原点を内部に含むような多角形を考えます。原点の点番号を0とし、多角形の頂点に順番に、番号1,2,・・・をふるとします。番号のふり方は、始点はどこでもいいですが、必ず左回りです。 原点と多角形の頂点を結んでできる三角形、012,023,・・・の面積の総和が、多角形の面積になる事は明らかと思います。 それぞれの分割三角形の面積は、例えば、012に対して、 A(1)=1/2×( x(0)・y(1)-x(1)・y(0) +x(1)・y(2)-x(2)・y(1) +x(2)・y(0)-x(0)・y(2) ) で計算できる事がわかっています。ところが、いま点(x(0),y(0))は原点なので、(x(0),y(0))=(0,0)です。従って、A(1)は、 A(1)=1/2×( x(1)・y(2)-x(2)・y(1) ) と簡単になります。同じ事を、A(1),A(2),・・・に対して行い、足し合わせれば、 A=ΣA(i) =1/2×Σ(x(i)・y(i+1)-x(i+1)・y(i)) ただしΣはiについての和で、i=1~n. です。ただしこの計算は、頂点を左周りに順序付ける事を前提にしています。リサージュは、右周りに回転するかもしれません。その時は、面積が負の値で計算されるので、絶対値をつけます。 A=|1/2×Σ(x(i)・y(i+1)-x(i+1)・y(i))| さらに原点が多角形内部にない場合も、同じ式が使えるとだけ、ここでは述べます。この場合は、分割三角形の頂点順序が、原点に対してどういう向きに並ぶかを、図を描いて考えれば、すぐわかります。
その他の回答 (1)
プログラムというより、数学の問題っぽいですが・・・。以下の事を前提とします。 (1)リサージュの1周期分の点列(CH1,CH2)は順番に記録できる。 (2)上記を(x(i),y(i)),i=1~n+1としたとき、(x(1),y(1))=(x(n+1),y(n+1))であるように記録する(リサージュは閉じている)。 面積は、以下の式で計算できます。 A=|1/2×Σ(x(i)・y(i+1)-x(i+1)・y(i))| ただしΣはiについての和で、i=1~n. サンプリング点でリサージュを折れ線近似した面積です。
お礼
回答ありがとうございます!確かに数学ですね( ^ ^ ;) 自分なりに式の意味を理解しとうとしたのですが分からなくて・・・。 x(i)・y(i+1)-x(i+1)・y(i)は何を意味しているのか、またなぜ1/2をかけるのか? 面倒かもしれないですが、お願いしますm( u u )m
お礼
詳しい説明本当にありがとうございました! また何かあったときはお願いしますm( u u )m