@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
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 "#"