3回目のなでしこ
幸い最初の目標の週2ペースはまだ維持している。このまま続くといいなぁ(^^;
さて、今日のお題は"area.c"です。多角形の面積を求めるプログラムです。アルゴリズムは至って単純で、隣り合う頂点ベクトルの外積を一週回るように足していって最後に2で割る。直感的にはわかりにくいかもしれないがまあ頑張れば理解できる範囲だと思うので詳細は割愛する(ぉ
まあとにかく実装しました。
●多角形面積(頂点Xと、頂点Yの) 頂点数は、頂点Xの配列要素数 最初は、0 最後は、頂点数−1 結果は、外積(頂点X[最後]、頂点Y[最後]、頂点X[最初]、頂点Y[最初]) インデックスを1から頂点数まで繰り返し 現在は、インデックス−1 次は、インデックス 結果は、結果+外積(頂点X[現在]、頂点Y[現在]、頂点X[次]、頂点Y[次]) 結果/2で戻る ●外積(X1、Y1、X2、Y2) X1*Y2−X2*Y1で戻る 頂点Xは「1 3 2 0」 頂点Yは「1 2 4 2」 頂点Xと頂点Yの多角形面積 それを表示する
うーん、やっぱりなでしこは数値計算向きではないなぁと。あんまり日本語っぽくなくて普通のプログラムっぽいもんなぁ。引数が多い場合は助詞の数が足りないから普通のC言語タイプの関数と同じ形になる。外積部分がそう。ただし、大元の多角形面積の関数はわりとキレイに日本語になった。ちょっと嬉しかった(^^;
できればお題をアルゴリズム以外の方がいいかな・・・と思うけど蜜から無そうなのでしばらく頑張ります(^^