jw_cad 外部変形 - (923) jscriptでレムニスケートを描く -

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

 

jscriptレムニスケートを描く

/* jscriptレムニスケートを描く
@cls & echo off
copy jwc_temp.txt myfiles > nul
cscript //nologo //e:jscript %0 < myfiles > jwc_temp.txt
goto:eof

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

function hhh(n, p1, p2){
  with (Math) {
    x1 = p1[0] * 1.0
    y1 = p1[1] * 1.0
    x2 = p2[0] * 1.0 - x1
    y2 = p2[1] * 1.0 - y1
    r = sqrt(pow(x2, 2) + pow(y2, 2))
    d = atan2(y2, x2)
    c = cos(d)
    s = sin(d)
    p = 2.0 * PI / n
    for (i = 0; i <= n; i++) {
      x = r * cos(i * p) * sqrt(1.0 - pow(sin(i * p), 2) / 2.0)
      y = r * cos(i * p) * sin(i * p) / sqrt(2.0)
      WScript.Echo(
        [x * c - y * s + x1, x * s + y * c + y1].join(" "))
    }
  }
}

f = WScript.StdIn
while (! f.AtEndOfStream) {
  F = ($_ = f.ReadLine()).split(/\s+/)
  if (/^hp1-/i .test($_)) { p1 = F.slice(1, 3) }
  if (/^hp2 /i .test($_)) { p2 = F.slice(1, 3) }
}
hhh(100, p1, p2)