乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 64|回复: 1

[编程交流] LISP中的复杂公式

[复制链接]

3

主题

9

帖子

6

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 11:27:14 | 显示全部楼层 |阅读模式
你好
 
因为AutoCAD中没有回旋函数,所以我使用一个单独的C++程序已经有一段时间了。然而,这并不完全完美,因为它仍然需要大量的用户操作。所以我决定尝试将这个程序转换成LISP。
 
对于那些不知道回旋线的人:它是公路和铁路设计中使用的从直线到弯曲的过渡曲线。由于曲线的几何形状,它减少了侧向加速度以及其他一些因素,对于高速运输至关重要。
 
目前唯一真正的问题是将回旋线公式转换为AutoLISP中可用的公式。目前,我有以下公式:
X坐标:附件1
Y坐标:附件2
 
其中,“a”是曲线的“陡度”,由早期计算定义,x是沿曲线的级数。
 
这些公式被输入数学软件maple,该软件可以将它们直接转换为string、C、Fortran、Java、MATLAB和Visual Basic格式。
 
有没有什么方法可以不用花几个小时将这些公式转换成奇怪的LISP格式,而且可能仍然无法使用?我几乎不了解VB语言,但有可能在LISP代码中使用这种格式吗?
122720wwvll6609lhl9m3l.jpg
122721vflycakazz5lcpaa.jpg
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:14:00 | 显示全部楼层
嗨,猴子,
 
对于XCoord公式,可以这样做:
 
  1. (defun fact (x)
  2. (if (< 0 x)
  3.    (* x (fact (1- x))) 1))
  4. (defun XCoord (x a / n i q)
  5. (setq n 0. i -1 q (/ x (float a)))
  6. (repeat 8
  7.    (setq n
  8.      (+ n
  9.         (* (/ (expt q (1+ (* 4 (setq i (1+ i)))))
  10.               (* (1+ (* 4 i)) (expt 2 (* 2 i)) (fact (* 2 i))))
  11.            (expt -1 i)))))
  12. (* a n))
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-6 02:12 , Processed in 0.368080 second(s), 59 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表