外部変形は データのやり取りをテキストファイルで行うので プログラム言語は 自由に選ぶことができます。図形は機能的かつシンプルなため、数多くのユーザーに受け入れられています。
パワーシェルで階段を割り付ける
:パワーシェルで階段を割り付ける
@echo off
set n=%1
if defined n (
echo ^%1> %~dpn0.txt
) else (
if exist %~dpn0.txt (
for /f "tokens=*" %%a in (%~dpn0.txt) do set n=%%a
)
)
if not defined n set n=12
for /f "delims=:" %%n in ('findstr /n "^#!" %0') do (
more +%%n %0 | powershell -command -
)
goto:eof
REM #jww
REM #1-%d 始点を指示してください
REM #2%d 終点を指示してください
REM #c 段数 =
REM #e
#!ここから more +n %0 の n 行目:最初の行は 0 行
function step ($pt1,$pt2,$n,$hk)
{
$co=[math]::cos($hk*[math]::PI/180)
$si=[math]::sin($hk*[math]::PI/180)
$x1,$y1,$x2,$y2=$pt1+$pt2
$dx=$x2-$x1
$dy=$y2-$y1
$ww= $dx*$co+$dy*$si
$hh=-$dx*$si+$dy*$co
$aa=$hh/$n
if ($n -gt 1) { $bb=$ww/($n-1) } else { $n=1; $bb=$ww }
$xx= $bb*$co-$aa*$si
$yy= $bb*$si+$aa*$co
$x2,$y2 = ($x1-$aa*$si), ($y1+$aa*$co)
$x3,$y3 = $x1,$y1
for ( $i = 1; $i -le $n; $i++ )
{
$x3+=$xx
$y3+=$yy
"$x1 $y1 $x2 $y2"
"$x2 $y2 $x3 $y3"
$x1,$y1=$x3,$y3
$x2+=$xx
$y2+=$yy
}
}
#$hp = 0,1,2
$hp = @(); foreach ($i in 0..2) { $hp += 0 }
$n = [int] $env:n
if ( ($n -eq 0) -or ($n -eq $null)) { $n = 12 }
gc jwc_temp.txt | %{
switch -regex -case ($_)
{
"^hk" { $hk = [double] ([regex]::split($_,' +')[1]) }
"^hp[1-9][0-9]?" {
$0 = [regex]::split($_,' +')
$hp[ [regex]::match($0[0],"[1-9][0-9]?").value ] =
@($0[1,2] | %{ [double] $_ })
}
}
}
step $hp[1] $hp[2] $n $hk | sc jwc_temp.txt
#ここまで powershell は 文末に必ず空白行を置いてください