Indexへ
(18822)//【18814】→(18817)
------------------------
【タイトル】減衰曲線
【記事番号】 18814 (*)
【 日時 】07/02/05 13:19
【 発言者 】toshi yama-3@lapis.plala.or.jp

拝啓、作者様、
いつも利用させてもらっております、
読者の皆様、いつも参考にさせてもらっております、

今回の質問です、
サイン曲線で減衰できないでしょうか?
過去ログ、書籍(最新版省く)等調べましたが有りません、
外部変形もまだ探していません、
カーテンを引き出したところを表現したいのですが、
現在はサイクルを変えた物を3ヶ結合して使っています、
利用されてる方がいらっしゃいましたら、
ご教授の程宜しくお願い致します。

toshi
       


Indexへ
(18814)←【18817】→(18843)
------------------------
【タイトル】Re(1):減衰曲線
【記事番号】 18817 (18814)
【 日時 】07/02/05 14:31
【 発言者 】スター

▼toshiさん:
>拝啓、作者様、
>いつも利用させてもらっております、
>読者の皆様、いつも参考にさせてもらっております、
>
>今回の質問です、
>サイン曲線で減衰できないでしょうか?
>過去ログ、書籍(最新版省く)等調べましたが有りません、
>外部変形もまだ探していません、
>カーテンを引き出したところを表現したいのですが、
>現在はサイクルを変えた物を3ヶ結合して使っています、
>利用されてる方がいらっしゃいましたら、
>ご教授の程宜しくお願い致します。
>
>toshi
>       

計算式があるのであれば、エクセル等で計算しそれを座標データとして取り込むことが早いと思います。

サイン曲線の振幅幅が小さくなるような形だけがほしいなら、下記卯之介さんの外変「4点補正」ではいかがでしょうか?
http://www.kct.ne.jp/~unosuke/4hosei.html

最初に元のサイン曲線を描きます。(上下振動y=sin(x))
それを囲む四角形を描きます。
その四角形を複写し、右の縦線を短くし台形にします。
4点補正でサイン曲線を選択し、元の4点を囲んだ四角形、複写先の4点を台形にすると、目的の曲線が作成できます。


Indexへ
(18817)←【18843】→(18862)
------------------------
【タイトル】Re(2):減衰曲線
【記事番号】 18843 (18817)
【 日時 】07/02/05 22:31
【 発言者 】toshi

スターさん

早速ありがとうございます、
午後から外廻りをして帰社しなかったもので、、
失礼しました、
自宅からレスしています、
明日、早速試してみます、
お忙しいところ有難う御座いました。

toshi


Indexへ
(18843)←【18862】→(18867)
------------------------
【タイトル】Re(1):減衰曲線
【記事番号】 18862 (18814)
【 日時 】07/02/06 14:15
【 発言者 】chi chi@mocha.ocn.ne.jp
【 リンク 】http://www6.ocn.ne.jp/~chika/



▼toshiさん:
 私は趣味のCGソフトの関係で最近
「python」プログラムを始めました。
その手始めのつもりでプログラムを書いてみました。
 サインカーブはプログラムで簡単に、描けます。
pyhonで書くと下記のようになります。


#
# sin_curve.py
# chi
#
import math

if __name__ == "__main__":
str=""
r=100 # 振幅
ofx=r
k=[] # 角度の配列
for i in range(72): # ループ文
 k.append(i*10.0) # k=0°から720°2サイクル
kk=0;# ofx=
sx=r*math.cos(kk) 
sy=r*math.sin(kk)
ex=1.0; ey=1.0
for i in k:
 ex=ofx + kk*10
 kk=i*math.pi/180 # ラジアンへ
 ey=r*math.sin(kk)
 str=str + " %f %f %f %f\n" % (sx, sy, ex, ey)
 sx=ex; sy=ey
#
fout=open("ztemp.txt", "w")
fout.write(str)
#...................end..................

振幅を減衰させるには、x座標の進み具合に対して
半径を小さくすればよいでしょう。
希望の形状が解かりませんので。このへんで


Indexへ
(18862)←【18867】→(18977)
------------------------
【タイトル】Re(1):減衰曲線
【記事番号】 18867 (18814)
【 日時 】07/02/06 14:50
【 発言者 】白髪のおっちゃん

▼toshiさん:
>サイン曲線で減衰できないでしょうか?
>過去ログ、書籍(最新版省く)等調べましたが有りません、
>外部変形もまだ探していません、
>カーテンを引き出したところを表現したいのですが、

こんにちは
カーテンを引き出したところを表現とあります
振幅が小さくなり また1サイクルの間隔も長くなりますね
表現上のことですから
貴方の方法で 
2〜3サイクルごと振幅・周期間隔の違うもので作図し
それを 図形登録し
必要なとき 呼び出し 倍率調整で 利用する
私は 一番現実的な 方法と 思います

今の私には 減衰する 難しい 関数の式を 思い出せませんので

以上


Indexへ
(18867)←【18977】//(18819)
------------------------
【タイトル】Re(1):擬似減衰曲線
【記事番号】 18977 (18814)
【 日時 】07/02/08 18:17
【 発言者 】コジマ

▼toshiさん:
>拝啓、作者様、
>いつも利用させてもらっております、
>読者の皆様、いつも参考にさせてもらっております、
>
>今回の質問です、
>サイン曲線で減衰できないでしょうか?
>過去ログ、書籍(最新版省く)等調べましたが有りません、
>外部変形もまだ探していません、
>カーテンを引き出したところを表現したいのですが、
>現在はサイクルを変えた物を3ヶ結合して使っています、
>利用されてる方がいらっしゃいましたら、
>ご教授の程宜しくお願い致します。
>
>toshi
> 

以下、擬似sin減衰曲線の外部変形です。
(厳密な意味では、減衰曲線ではありません。)
振幅を比率で小さくして、周期を逆比で大きくします。
(カーテンを引き出ところの表現だと、1サイクル当りの線長は同じなのでしょうが、この外変では、同じに出来ません。(^_^;)

この外変を実行するには、rubyのインストールが必要です。
以下で、DLできます。
http://gravelroad.yh.land.to/category/2/subcatid/6


◎バッチファイル(ファイル名 サイン曲線3.bat)
以下の文をコピペ後、全角スペースを半角スペースに一括置換してください。

@REM 擬似sin減衰曲線
@echo off
REM #jww
REM #cd
REM #h0
REM #c初期の1サイクル長(実寸) 無指定:100/_/a
REM #c初期の1サイクルの振幅(実寸) 無指定:300/_/b
REM #c1/2サイクルの分割数 無指定:20/_/c
REM #c振幅の減衰率 無指定:0.9/_/d
REM #1/始点を指示してください free(L) Read(R)
REM #2終点を指示(AM1:00ドラッグで15度毎解除) free(L) Read(R)
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -Ks サイン曲線3.rb temp.txt %1 %2 %3 %4 > jwc_temp.txt

◎スクリプトファイル(ファイル名 サイン曲線3.rb)
以下の文をコピペ後、全角スペースを半角スペースに一括置換してください。

include Math
pitch=100.0;sinpuku=300.0;bunkatu=20;biritu=0.9
while ARGV.size>1
    case argument=ARGV.pop
        when /\/a/
            pitch=argument[2..-1].to_f
        when /\/b/
            sinpuku=argument[2..-1].to_f
        when /\/c/
            bunkatu=argument[2..-1].to_i
        when /\/d/
            biritu=argument[2..-1].to_f
    end
end
while ARGF.gets
    xy=split
    ax,ay=xy[1].to_f,xy[2].to_f if xy[0]=="hp1-"
    bx,by=xy[1].to_f,xy[2].to_f if xy[0]=="hp2"
end
puts "pl"
x,y=bx-ax,by-ay
l,arg=sqrt(x**2+y**2),atan2(y,x)
tl=0
while tl    hh=sinpuku/2;p2=pitch/2;y_by=PI/2*hh/(p2/2)
    d_pi=PI/bunkatu;d_l=p2/bunkatu
    0.step(2*PI,d_pi){|i|
        y=(y_by*sin(i)*p2/PI)
        printf("%.11f %.11f\n",ax+(d_l*i/d_pi)*cos(arg)-y*sin(arg),ay+y*cos(arg)+(d_l*i/d_pi)*sin(arg))
    }
    ax += pitch*cos(arg)
    ay += pitch*sin(arg)
    sinpuku *= biritu
    pitch *= 1/biritu
    tl += pitch
end
puts "#"