SSブログ

照度分布計算その10 - 幾何照度計算 [回折による照度分布計算]

回折によるレーザの照度の計算。今回は回折計算以外の、残りの計算の部分。SGeometricIssuesクラス。

「その2」の式-21を計算する。

@interface SGeometricIssues : NSObject {
	double	dist;
.....
}
- (id)initForGeometry;

- (id)initWithDistance:(double)distance
        substrateAngle:(double)substrateAngle
  andSubstrateDecenter:(double)decenter;
計算の中間結果を残しておくインスタンス変数をたくさん持っている。ここでは省略。ほかのクラスと一緒で自分で勝手にパラメータ値を読みにいく初期化-initForGeometryを作っておく。式の通りに計算するだけなのでここに書くまでもない。

このクラスは

- (void)setCurrentPositionOnSubstrateX:(double)x andY:(double)y;

- (double)illuminationCoefficient;
- (double)lengthFromPinhole;
- (double)horizontalDirection;
- (double)verticalDirection;
のように、まず、-setCurrentPositionOnSubstrateX:andY:メソッドで、計算したい基板上の位置を設定して、その後別のメソッドでそこでの照度係数なんかを読み出すことにした。

例えば最初のふたつのメソッドは

- (void)setCurrentPositionOnSubstrateX:(double)x andY:(double)y
{
    double	ztemp = (x + sDec) *sina;
    ys = y;
    xs = (x + sDec) * cosa;
    zs = dist - ztemp;
    lengsq = xs * xs + ys * ys + zs * zs;
}

- (double)illuminationCoefficient
{
    return (cosa * zs - sina * xs) / sqrt(lengsq) / lengsq;
}
みたいにちまちまと計算するだけ。式の通りなので詳細は省略。先に数学を整理してTeXなんかで読みやすい形にフォーマットしておくと、この程度の計算なら実装で頭をひねる必要はなくなって、楽になるしデバグも簡単になる。

使い回せる中間結果が多いので、設定と読み出しを分けたんだけど、あまりいい実装ではない。もうちょっと工夫した方が良かったかも。


nice!(0)  コメント(1)  トラックバック(0) 

nice! 0

コメント 1

Generic for cialis

沒有醫生的處方
cialis usa cost http://cialisyoues.com/ 200 cialis coupon
by Generic for cialis (2018-04-14 17:42) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。