Jw_cad 情報交換室−その3New

 JWW についての情報交換の場としてお使いください
初心者の方などのご相談は Jw_cad 相談 室−その2をご利用ください
なお、情報交換室と相談室の両方に同じ内容を投稿するのはご遠慮ください

2009年9月以前の発言過去ログのページからご覧ください。

それ以降の過去ログは消失しています。
申し訳ありませんが、復活の予定はありません。


  新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索 ┃設定 ┃過去ログ ┃ホーム  
23 / 337 ツリー    ←次へ | 前へ→

不要な極小線の削除について sato 20/3/29(日) 20:52

Re:不要な極小線の削除について 96saka 20/3/30(月) 2:19
Re:不要な極小線の削除について sato 20/3/30(月) 19:27

Re:不要な極小線の削除について
 96saka  - 20/3/30(月) 2:19 -
▼satoさん: すみません、検証不足でした。 過去ログでは他に 18行目、105行目、126行目もおかしくなっていたようです。 当時の記事からのオリジナルスクリプトを下記に記述します。 include Math;$max_l=50;$min_l=0 while ARGV.size>1 case argument=ARGV.pop when /\/a/ $max_l=argument[2..-1].to_f when /\/b/ $min_l=argument[2..-1].to_f end end def main hp=[];zukei=[] while ARGF.gets xy=split if xy[0]=~/^hp/ hp<<[xy[1].to_f,xy[2].to_f] end end hp<<hp[0] if hp.size>0 && hp[0] != hp[-1] 0.upto(hp.size-2){|i|zukei<<[hp[i][0],hp[i][1],hp[i+1][0],hp[i+1][1]]} puts "hd" open("temp.txt","r"){|f| while line=f.gets xy=split if xy[0]=~/^hq/ elsif xy[0]=~/^\d/ xy.collect!{|item|item.to_f} x,y=xy[2]-xy[0],xy[3]-xy[1] l=sqrt(x**2+y**2) if zukei.size>0 if area(zukei,[xy[0],xy[1]]) && area(zukei,[xy[2],xy[3]]) if $min_l==0 if l<$max_l else print $_ end else if l<$max_l && l>$min_l else print $_ end end else print $_ end else if $min_l ==0 if l<$max_l else print $_ end else if l<$max_l && l>$min_l else print $_ end end end else print $_ end end } end #線と線の交点を返す(延長線上は含まない) def sen_sen_kouten(sen1,sen2) sen1x=sen1[2]-sen1[0] sen1y=sen1[3]-sen1[1] sen1xy=sqrt(sen1x**2+sen1y**2) sen1_arg=atan2(sen1y,sen1x) x1_1=sen1[0] x1_2=sen1[0]+sen1xy y1_1=sen1[1] y1_2=sen1[1] x=sen2[0]-sen1[0] y=sen2[1]-sen1[1] xy=sqrt(x**2+y**2) arg=atan2(y,x) henkaku=arg-sen1_arg x2_1=sen1[0]+xy*cos(henkaku) y2_1=sen1[1]+xy*sin(henkaku) x=sen2[2]-sen1[0] y=sen2[3]-sen1[1] xy=sqrt(x**2+y**2) arg=atan2(y,x) henkaku=arg-sen1_arg x2_2=sen1[0]+xy*cos(henkaku) y2_2=sen1[1]+xy*sin(henkaku) x=x2_2-x2_1 y=y2_2-y2_1 delta=y/x if ika3(y2_1)>=ika3(y1_1) && ika3(y2_2)<ika3(y1_1) or ika3(y2_1)<ika3(y1_1) && ika3(y2_2)>=ika3(y1_1) y=y1_1-y2_1 dx=y/delta kouten_x=x2_1+dx kouten_y=y1_1 if kouten_x>=x1_1 && kouten_x<x1_2 or kouten_x>x1_1 && kouten_x<=x1_2 x=kouten_x-x1_1 y=kouten_y-y1_1 xy=sqrt(x**2+y**2) kouten_xt=x1_1+xy*cos(sen1_arg) kouten_yt=y1_1+xy*sin(sen1_arg) return [kouten_xt,kouten_yt] else nil end end end def ika3(x) a=(((x.to_f)*1000).to_i/1000.to_f) return a end #tenの位置がzukei(閉鎖図形)の内(true)か、外(false)かを判定 def area(zukei,ten) zahyo=[] zukei.each{|item|zahyo<<sen_sen_kouten(item,[0,0,ten].flatten) if sen_sen_kouten(item,[0,0,ten].flatten)} if zahyo.size==1 or zahyo.size>1 && zahyo.size%2==1 return true else return false end end main
引用なし

パスワード


<Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Safari/537.36 Sleipni...@i114-181-167-227.s41.a002.ap.plala.or.jp>
・ツリー全体表示

Re:不要な極小線の削除について
 sato  - 20/3/30(月) 19:27 -
96sakaさん

ありがとうございました。
深夜なのに返事いただいていて恐縮しました。
昨夜は力尽きて寝てしまい今職場に戻ってきたところです。
結論から申し上げますと完璧に5万本の線が消えてくれました。
96sakaさんにご多幸がありますことを・・・
本当にありがとうございました。

引用なし

パスワード


<Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko@110-130-108-231.rev.home.ne.jp>
・ツリー全体表示

23 / 337 ツリー    ←次へ | 前へ→
  新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索 ┃設定 ┃過去ログ ┃ホーム  
 1077521
ページ:  ┃  記事番号:  

C-BOARD Moyuku v1.03b3
Jw_cad Copyright (C)1997-2016 Jiro Shimizu & Yoshifumi Tanaka