外部変形は データのやり取りをテキストファイルで行うので プログラム言語は 自由に選ぶことができます。図形は機能的かつシンプルなため、数多くのユーザーに受け入れられています。
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 #1ln 線を指示してください
REM #bz
REM #e
#!この次の行からプログラムを書いてください
# coding: shift_jis
def lnlength(ln): #線長を返す
x1, y1, x2, y2 = ln
return hypot(x2 - x1, y2 - y1)
def lnslope(ln): #線の角度を返す
x1, y1, x2, y2 = ln
return atan2(y2 - y1, x2 - x1)
import sys,re
from math import *
try :
f = open("myfiles", "r")
for a in f:
F = a.split()
if re.compile("^hp1ln").search(a): pt = F[1:3]
if re.compile("^[ ]").search(a): ln1 = F
f.close()
except :
sys.exit()
ln1 = tuple(map(float, ln1))
pt = tuple(map(float, pt))
x1, y1, x2, y2 = ln1
#p1 = tuple([x1, y1])
#p2 = tuple([x2, y2])
#pc = tuple([(x1 + x2) / 2, (y1 + y2) / 2])
p1 = (x1, y1)
p2 = (x2, y2)
pc = ( (x1 + x2) / 2, (y1 + y2) / 2)
l1 = lnlength(pt + p1)
l2 = lnlength(pt + p2)
l3 = lnlength(pt + pc)
if l2 > l1 and l3 > l1 : pc = p1
if l1 > l2 and l3 > l2 : pc = p2
l = lnlength(ln1) / 2
d = lnslope(ln1)
co = cos(d) * l
si = sin(d) * l
xc, yc = pc
print("bz")
print("%s %s %s %s" % (xc + si, yc - co, xc - si, yc + co))