jw_cad 外部変形 - (623) コマンドプロンプトでレムニスケートを描く -

外部変形は データのやり取りをテキストファイルで行うので プログラム言語は 自由に選ぶことができます。図形は機能的かつシンプルなため、数多くのユーザーに受け入れられています。

 

コマンドプロンプトレムニスケートを描く

/* コマンドプロンプトレムニスケートを描く
@cls & echo off
for /f "tokens=1*" %%i in (jwc_temp.txt) do (
  if %%i == hp1- set p1=%%j
  if %%i == hp2  set p2=%%j
)
cscript //e:jscript %0 "%p1%" "%p2%" > jwc_temp.txt
goto:eof

REM #jww
REM #1-%d 中心点を指示してください
REM #2%d X軸上の点を指示してください
REM #e
*/

function f(p) {
  with (Math) { return a * cos(p) * sqrt(1 - 0.5 * pow(sin(p), 2)) }
}
function g(p) {
  with (Math) { return a / sqrt(2) * sin(p) * cos(p) }
}
n = 100
with (WScript) {
  p1 = arguments(0).split(/\s/)
  p2 = arguments(1).split(/\s/)
  x1 = p1[0] * 1.0; y1 = p1[1] * 1.0
  x2 = p2[0] * 1.0; y2 = p2[1] * 1.0
  d = Math.atan2(y2 - y1, x2 - x1) + Math.PI / 2
  si = Math.sin(d)
  co = Math.cos(d)
  a = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2))
  p = 2 * Math.PI / n
  x = f(0)
  y = g(0)
  xa =  x * si + y * co + x1
  ya = -x * co + y * si + y1
  i = 1
  echo( "pl" ) //cscript
//  StdOut.WriteLine( "pl" ) //wscript
  while (i != n + 1) {
    x = f(i * p)
    y = g(i * p)
    xb =  x * si + y * co + x1
    yb = -x * co + y * si + y1
    echo( [xa, ya, xb, yb].join(" ") ) //cscript
//    StdOut.WriteLine( [xa, ya, xb, yb].join(" ") ) //wscript
    xa = xb
    ya = yb
    i++
  }
  echo( "#" ) //cscript
//  StdOut.WriteLine( "#" ) //wscript
}

 

 

 

外部変形のバッチファイルの構成は以下のとおりです。
/* タイトル
@cls & echo off
コマンドによるスクリプト
goto:eof
*/
jscriptによるスクリプト
=>コマンドによるスクリプトjscript のコメント文に記述しています。