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

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

 

pythonレムニスケートを描く

:pythonレムニスケートを描く
@echo off
if not exist %~dpn0.py (
  for /f "delims=:" %%n in ('findstr /n "^#!" %0') do (
    more +%%n %0 > %~dpn0.py
  )
)
copy jwc_temp.txt myfiles > nul
python %~dpn0.py > jwc_temp.txt
goto:eof

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

#!この次の行からプログラムを書いてください
def fx(a, p):
  return a * cos(p) * sqrt(1.0 - 0.5 * sin(p) ** 2)

def gx(a, p):
  return a / sqrt(2.0) * sin(p) * cos(p)

def hx(n, p1, p2):
  x1, y1, x2, y2 = map(float, p1 + p2)
  d = atan2(y2 - y1, x2 - x1) + pi / 2
  si = sin(d)
  co = cos(d)
  a = hypot(x2 - x1, y2 - y1)
  p = 2 * pi / n
  x = fx(a, 0)
  y = gx(a, 0)
  xa =  x * si + y * co + x1
  ya = -x * co + y * si + y1
  i = 1
  while i != n + 1 :
    x = fx(a, i * p)
    y = gx(a, i * p)
    xb =  x * si + y * co + x1
    yb = -x * co + y * si + y1
    print("%s %s %s %s" % (xa, ya, xb, yb))
    xa = xb
    ya = yb
    i += 1

import sys,re
from math import *

try :
  f = open("myfiles", "r")
  for a in f:
    F = a.split()
    if re.compile("^hp1").search(a): p1 = F[1:3]
    if re.compile("^hp2").search(a): p2 = F[1:3]
  f.close()
except :
  sys.exit()

hx(100, p1, p2)