Indexへ
(10128)//【10125】→(10127)
------------------------
【タイトル】楕円孤の円環ソリッド゙の面積
【記事番号】 10125 (*)
【 日時 】07/08/08 19:20
【 発言者 】田吾作

ソリッド図形を利用して色別に面積を集計する外変を作成中です。
多角形、円、楕円、タイプ1の円環(同一扁平率)までは特に問題かったのでが、
タイプ2の円環(同一幅)で躓きました。内外の楕円の円弧角が同じであること、内側の楕円の扁平率の算出は解かるのですが・・・・。
どなたかご教示いただければ助かります。


Indexへ
(10125)←【10127】→(10129)
------------------------
【タイトル】Re(1):楕円孤の円環ソリッド゙の面積
【記事番号】 10127 (10125)
【 日時 】07/08/09 00:21
【 発言者 】コジマ

▼田吾作さん:
>ソリッド図形を利用して色別に面積を集計する外変を作成中です。
>多角形、円、楕円、タイプ1の円環(同一扁平率)までは特に問題かったのでが、
>タイプ2の円環(同一幅)で躓きました。内外の楕円の円弧角が同じであること、内側の楕円の扁平率の算出は解かるのですが・・・・。
>どなたかご教示いただければ助かります。

タールさんがソリッド図形面積集計を公開されています。
http://blog.livedoor.jp/tarl/archives/8658064.html

私の場合ならば、
楕円弧の面積の出し方を知らないので、
楕円弧を多角形(微小角度の三角形の集合)と見做して
近似計算ですね。


Indexへ
(10127)←【10129】→(10130)
------------------------
【タイトル】Re(2):おかげで解決しました。
【記事番号】 10129 (10127)
【 日時 】07/08/09 09:49
【 発言者 】田吾作

タールさんの外変はいくつか有難く使用させていただいています。
図形面積集計については、私の求めるものと少し違ったので自作を選びました。
同一幅の円環の楕円孤の求積は、外側楕円弓+各交点での四角形−内側楕円弓で求められることはすぐ解かりましたが、角度が大きくなるに従い例外パターンが増え
ざっと書き出してみると20例以上になり、途方にくれて「お知恵拝借」の書込みをした次第です。
さっそくコジマさんからコメントをいただき、「分割し集計」に気づきました。円弧角が90度以内であれば例外パターンはありえないので、int(円弧角/90)+1で分割し集計をするようにスクリプトを書き換えてみたところ、バッチリでした。
おかげで、JWWで使用する全色、全部のソリッド対応の面積集計外変が出来ました。ありがとうございます。
JWWは本当に良く出来ており、楕円についても円弧角は写像元の円の角度で保存されているため、簡単に楕円、楕円弓、楕円扇の面積計算が出来ます。元の円で計算して、最後に扁平率を掛ければOKです。
弓:1/2*長径*長径*abs(円弧角-sin(円弧角))*扁平率
作者の方には尊敬と感謝の念で一杯です。


Indexへ
(10129)←【10130】→(10131)
------------------------
【タイトル】Re(1):楕円孤の円環ソリッド゙の面積
【記事番号】 10130 (10125)
【 日時 】07/08/09 13:44
【 発言者 】ko

▼田吾作さん:
>ソリッド図形を利用して色別に面積を集計する外変を作成中です。
>多角形、円、楕円、タイプ1の円環(同一扁平率)までは特に問題かったのでが、
>タイプ2の円環(同一幅)で躓きました。内外の楕円の円弧角が同じであること、内側の楕円の扁平率の算出は解かるのですが・・・・。
>どなたかご教示いただければ助かります。

楕円の面積は長径を半径とする円の面積×扁平率です
言い換えればは外接する円の面積×扁平率
なので、外円の面積から内円の面積を引けばOK

>タイプ2の円環(同一幅)で躓きました。

楕円円環ソリッドを描いた事が無いのでハッキリ言えませんが、同一幅だとすると
内円は楕円では有りません
ホンとに同一幅ですか?


Indexへ
(10130)←【10131】→(10138)
------------------------
【タイトル】Re(2):楕円孤の円環ソリッド゙の面積
【記事番号】 10131 (10130)
【 日時 】07/08/09 15:40
【 発言者 】コジマ

▼koさん:
>▼田吾作さん:
>>ソリッド図形を利用して色別に面積を集計する外変を作成中です。
>>多角形、円、楕円、タイプ1の円環(同一扁平率)までは特に問題かったのでが、
>>タイプ2の円環(同一幅)で躓きました。内外の楕円の円弧角が同じであること、内側の楕円の扁平率の算出は解かるのですが・・・・。
>>どなたかご教示いただければ助かります。
>
>楕円の面積は長径を半径とする円の面積×扁平率です
>言い換えればは外接する円の面積×扁平率
>なので、外円の面積から内円の面積を引けばOK
>

楕円の場合は、そのとうりですが、
楕円弧の場合も当てはまるのでしょうか?


>>タイプ2の円環(同一幅)で躓きました。
>
>楕円円環ソリッドを描いた事が無いのでハッキリ言えませんが、同一幅だとすると
>内円は楕円では有りません
>ホンとに同一幅ですか?

JWWの同一幅の円環とは、楕円の複線のようです。
半径と扁平率のことなる楕円ですね。


Indexへ
(10131)←【10138】→(10141)
------------------------
【タイトル】Re(3):楕円孤の円環ソリッド゙の面積
【記事番号】 10138 (10131)
【 日時 】07/08/10 11:53
【 発言者 】田吾作

▼コジマさん:

>楕円の場合は、そのとうりですが、
>楕円弧の場合も当てはまるのでしょうか?

傾き、径、扁平率の異なる楕円の組み合わせをいくつか作成し各領域の求積をしてみました。自作求積=jww標準コマンドによる求積≒多角形近似求積となりますので間違いないと思います。
自作スクリプトを以下に書きますので検証していただければ有難いです。
不要部分は省略しています。自作の書式、作表関係の関数は読み飛ばしてください。

/^lc10/ {sld_n=$2}
/^sl/  {
 if (NF==7) {                # 三角形
  area[sld_n] += tria($2,$3,$4,$5,$6,$7)
 }
 if (NF==9) {                # 四角形
  area[sld_n] += squr($2,$3,$4,$5,$6,$7,$8,$9)
 }
}
/^sc/ {area[sld_n] += maru($4,$5,$8,$9)}    # 円・楕円(弓扇)
/^so/ {area[sld_n] += rino($4,$5,$8,$9)}    # 円環(同一扁平率)
/^sg/ {area[sld_n] += ring($4,$5,$7,$8,$9)}    # 円環(同一幅)

END {
 for (i in area) {
  ar = round(area[i] * mult / 10 ^ 6 , kfig, rdru)
  sum += ar
  wstr(tx(1.9), ty(0.5 + nl), ins_km(sprintf(sk, ar)), 5)
  nl ++
 }
}

####  定義関数  ####

# 三角形の面積
func tria(x1,y1,x2,y2,x3,y3) {
 return abs((x2-x1)*(y3-y1)-(x3-x1)*(y2-y1))/2
}

# 四角形の面積
func squr(x1,y1,x2,y2,x3,y3,x4,y4) {
 return tria(x1,y1,x2,y2,x3,y3)+tria(x1,y1,x3,y3,x4,y4)
}

# 円・楕円(弓扇)の面積
func maru(r,f,k,type) {
 rd=atan2(0,-1)/180
 if (type==100) return   r*r*180*rd*f       # 円・楕円
 if (type== 5) return 0.5*r*r*abs(k-sin(k))*f    # 弓
 if (type== 0) return 0.5*r*r*k*f            # 扇
 if (type== -1) {                    # 円の外側
  if (k>270*rd) return 0.5*r*r*(2*sin(k/8)/cos(k/8)-k/4)*4*f
  if (k>180*rd) return 0.5*r*r*(2*sin(k/6)/cos(k/6)-k/3)*3*f
  if (k> 90*rd) return 0.5*r*r*(2*sin(k/4)/cos(k/4)-k/2)*2*f
  if (k> 0  ) return 0.5*r*r*(2*sin(k/2)/cos(k/2)-k)*f
 }
}
# 円環の面積(同一扁平率)
func rino(r1,f,k,r2) {
 return maru(r1,f,k,0) - maru(r2,f,k,0)
}

# 円環の面積(同一幅)
func ring(r1,f1,ks,kr,r2,  f2,ke,dv,krd,ksd,ked,rsum) {
 f2=(r1*f1-(r1-r2))/r2    # 内側楕円扁平率
 ke=kr+ks
 dv=int(kr/rd/90)+1    # 90度を超えると例外パターンが出現するので分割
 krd=kr/dv
 for (i=1; i<=dv; i++) {
  ksd=ks +krd*(i-1)
  ked=ksd+krd
  x1=r1*cos(ksd); y1=r1*sin(ksd)*f1
  x2=r1*cos(ked); y2=r1*sin(ked)*f1
  x3=r2*cos(ksd); y3=r2*sin(ksd)*f2
  x4=r2*cos(ked); y4=r2*sin(ked)*f2
  rsum += squr(x1,y1,x2,y2,x4,y4,x3,y3)
      +maru(r1,f1,krd,5)-maru(r2,f2,krd,5)
 }
return rsum
}


Indexへ
(10138)←【10141】→(10143)
------------------------
【タイトル】Re(4):楕円孤の円環ソリッド゙の面積
【記事番号】 10141 (10138)
【 日時 】07/08/10 17:18
【 発言者 】コジマ

▼田吾作さん:

>
>>楕円の場合は、そのとうりですが、
>>楕円弧の場合も当てはまるのでしょうか?
>
>傾き、径、扁平率の異なる楕円の組み合わせをいくつか作成し各領域の求積をしてみました。自作求積=jww標準コマンドによる求積≒多角形近似求積となりますので間違いないと思います。

そのまま、当てはまりますね。
今まで気が付いていませんでした。((^_^;)


Indexへ
(10141)←【10143】→(10135)
------------------------
【タイトル】Re(3):楕円孤の円環ソリッド゙の面積
【記事番号】 10143 (10131)
【 日時 】07/08/10 18:30
【 発言者 】ko

▼コジマさん:

>楕円の場合は、そのとうりですが、
>楕円弧の場合も当てはまるのでしょうか?

今更ながら、

外部変形で出力されるデータの始角,終角で計算する上ではそのまま当てはまります
円弧角をラジアン角に変換して(ソリッド図形は初めからラジアン角ですね)
円弧角×長径^2÷2×扁平率

実際の図面上で測定コマンドで測る角度ではちょっと違いますが

実測角度をαとすると
外部変形で出力される角度=atan((sin(α)/扁平率)/cos(α))

>JWWの同一幅の円環とは、楕円の複線のようです。
>半径と扁平率のことなる楕円ですね。

長径軸と短径軸での幅が一定になるよう扁平率を調整した楕円なんですね
了解しました


Indexへ
(10143)←【10135】//(10132)
------------------------
【タイトル】Re(2):楕円孤の円環ソリッド゙の面積
【記事番号】 10135 (10130)
【 日時 】07/08/09 20:12
【 発言者 】rj
【 リンク 】http://rj-ryu.cocolog-nifty.com/



▼koさん:

>楕円円環ソリッドを描いた事が無いのでハッキリ言えませんが、同一幅だとすると
>内円は楕円では有りません
>ホンとに同一幅ですか?

円環ソリッドで、基準となる外側の円をクリックすると出てくる、数値入力(計算式可)ダイアログにある □楕円同一幅 というチェックのことならば

「短軸と長軸における楕円間が同一幅になる楕円」ということかと思います。

http://rj-ryu.cocolog-nifty.com/w/2006/08/post_d2fd.html
この記事ご参考になりますでしょうか?