LISP中的复杂公式
你好因为AutoCAD中没有回旋函数,所以我使用一个单独的C++程序已经有一段时间了。然而,这并不完全完美,因为它仍然需要大量的用户操作。所以我决定尝试将这个程序转换成LISP。
对于那些不知道回旋线的人:它是公路和铁路设计中使用的从直线到弯曲的过渡曲线。由于曲线的几何形状,它减少了侧向加速度以及其他一些因素,对于高速运输至关重要。
目前唯一真正的问题是将回旋线公式转换为AutoLISP中可用的公式。目前,我有以下公式:
X坐标:附件1
Y坐标:附件2
其中,“a”是曲线的“陡度”,由早期计算定义,x是沿曲线的级数。
这些公式被输入数学软件maple,该软件可以将它们直接转换为string、C、Fortran、Java、MATLAB和Visual Basic格式。
有没有什么方法可以不用花几个小时将这些公式转换成奇怪的LISP格式,而且可能仍然无法使用?我几乎不了解VB语言,但有可能在LISP代码中使用这种格式吗?
嗨,猴子,
对于XCoord公式,可以这样做:
(defun fact (x)
(if (< 0 x)
(* x (fact (1- x))) 1))
(defun XCoord (x a / n i q)
(setq n 0. i -1 q (/ x (float a)))
(repeat 8
(setq n
(+ n
(* (/ (expt q (1+ (* 4 (setq i (1+ i)))))
(* (1+ (* 4 i)) (expt 2 (* 2 i)) (fact (* 2 i))))
(expt -1 i)))))
(* a n))
页:
[1]