照度分布計算その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なんかで読みやすい形にフォーマットしておくと、この程度の計算なら実装で頭をひねる必要はなくなって、楽になるしデバグも簡単になる。
使い回せる中間結果が多いので、設定と読み出しを分けたんだけど、あまりいい実装ではない。もうちょっと工夫した方が良かったかも。
2008-06-22 09:09
nice!(0)
コメント(1)
トラックバック(0)
沒有醫生的處方
cialis usa cost http://cialisyoues.com/ 200 cialis coupon
by Generic for cialis (2018-04-14 17:42)