乐筑天下

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

[编程交流] 高到低波浪路径

[复制链接]

10

主题

26

帖子

16

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-6 14:26:14 | 显示全部楼层 |阅读模式
大家好,
 
请帮助我有一个Lisp路径的波浪,如所附的图片所示,
 
对于要分配的间隔数的长度,每个间隔的距离必须为50mm,然后宽度将通过pt1到pt2获得距离,根据长度的间隔数除以距离,
 
波浪就像声音测量一样,从高到低的频率,图形点线将是波浪距离的想象路径,以显示它将是什么,如果您有创建波浪的路线,请也拥有,谢谢大家
152616viajaaist50tziok.jpg
回复

使用道具 举报

20

主题

344

帖子

325

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 15:56:06 | 显示全部楼层
不确定这是否会有帮助,这是非常不完整的,但我有点玩弄它。它有一个阻尼谐波运动选项,也许您可以更改其中的变量以满足您的需要。
 
也就是说,这很有趣。如果你感兴趣的话,我还有一个球面和双曲抛物面的代码。
 
代码本身并不复杂,实际上是非常基本的(嵌套重复),因此您可以使用LISP的核心知识轻松修改它。
 
已经有一段时间了,所以我不确定你是否可以直接设置频率。。。但也许它至少会让球滚起来。
 
也就是说,这很有趣:3尝试为其他公式创建自己的函数!
 
希望有帮助^^
 
  1. ; Function Plot
  2. ; by Mark Mercier
  3. (defun c:fnplot(/ list1)
  4. ; Plot function
  5. (setq echo (getvar "cmdecho"))
  6. (setvar "cmdecho" 0)
  7. (setq lowerBnd 0.0000000
  8.    upperBnd 10.0000000
  9.    precisionX 2000
  10.    precisionY precisionX
  11.    results "hi"
  12.    )
  13. (setq incrementX (/ (- upperBnd lowerBnd) precisionX))
  14. (setq incrementY (/ (- upperBnd lowerBnd) precisionY))
  15. (setq dum1 lowerBnd)
  16. (repeat precisionX ; Begin repeat loop
  17.    (setq x dum1)
  18.    (setq dum2 lowerBnd)
  19.    (repeat precisionY ; Begin nested repeat loop
  20.      (setq y dum2)
  21.      (sinusoid x)
  22.      ;(logarithm x)
  23.      ;(dampedvibration x)
  24.      ;(polynom x)
  25.      
  26.      (wheel)
  27.      (setq dum2 (+ dum2 incrementY))
  28.      ); /nested repeat
  29.    (setq dum1 (+ dum1 incrementX))
  30.    ); /repeat
  31. (if list1
  32.    (scribblescribble)
  33.    )
  34. (setvar "cmdecho" echo)
  35. (princ)
  36. ); /program
  37. ; -- Cheap error function
  38. (defun goodtimes()
  39. (princ "Strong Bad, help! I swallowed a bug! The good times are over!")(princ)
  40. )
  41. ; -- Wheel function for spinnyness --
  42. (defun wheel ()
  43. (if (not wh)(setq wh "-"))
  44. (cond
  45. ((= wh "|") (setq wh "/"))
  46. ((= wh "/") (setq wh "-"))
  47. ((= wh "-") (setq wh "\"))
  48. ((= wh "\") (setq wh "|"))
  49. )
  50. (prompt (strcat "\10" wh))
  51. (princ)
  52. )
  53. ; Line Sinusoid
  54. (defun sinusoid(x /)
  55. (setq precisionY 1)
  56. (setq y_sinusoid (* 2 (sin x)))
  57. (setq list1 (append list1 (list (list x y_sinusoid 0))))
  58. )
  59. ; Line Polynomial
  60. (defun polynom(x /)
  61. (setq precisionY 1)
  62. (setq consList (list 7 5 4 6 4 2 8 6 5 5 2))
  63. (setq y_polynom 0)
  64. (setq dumVar 0)
  65. (repeat (- (length consList) 1)
  66.    (setq y_polynom (+ y_polynom (* (nth dumVar consList) (expt x (- (- (length consList) 1) dumVar)))))
  67.    (setq dumVar (+ 1 dumVar))
  68.    )
  69. (setq y_polynom (+ y_polynom (nth (- (length consList) 1) consList)))
  70. (setq list1 (append list1 (list (list x y_polynom 0))))
  71. )
  72. ; Line Damped Vibration
  73. (defun dampedvibration(x /)
  74. (setq precisionY 1)
  75. (setq time x)
  76. ; Set up initial conditions for forced, underdamped response (0 < zeta < 1)
  77. (setq mass 1)                                ; m
  78. (setq damping_coeff 0)                        ; c        If 0, undamped
  79. (setq spring_const 2)                            ; k
  80. (setq initDis 1)                            ; x_o
  81. (setq initVel 0)                            ; v_o
  82. (setq initFor 10)                            ; F_o        If 0, free response
  83. (setq dampRat (/ damping_coeff (* 2 (sqrt (* spring_const mass)))))    ; zeta
  84. ; * Zeta must be greater than zero but less than one to proceed * ;
  85. (if (and (>= dampRat 0) (< dampRat 1))
  86.    (progn
  87.      ; Determine minor variables from initial conditions
  88.      (setq modinitFor (/ initFor mass))                    ; f_o
  89.      (setq drivFreq 1.1)                                ; omega
  90.      (setq natFreq (sqrt (/ spring_const mass)))                ; omega_n
  91.      (setq dampednatFreq (sqrt (- 1 (* natFreq dampRat dampRat))))        ; omega_d
  92.      ; Determine major variables from minor variables
  93.      (setq omn2_om (- (expt natFreq 2) (expt drivFreq 2)))
  94.      (setq 2zomnom (* 2 dampRat natFreq drivFreq))
  95.      (setq coefX (/ modinitFor (sqrt (+ (expt omn2_om 2) (expt 2zomnom 2)))))
  96.      (setq theta (atan (/ 2zomnom omn2_om)))
  97.      (setq XcosTheta (* coefX (cos theta)))
  98.      (setq phiNum (* dampednatFreq (- initDis XcosTheta)))
  99.      (setq phiDen (+ initVel (* natFreq dampRat (- initDis XcosTheta)) (* -1 drivFreq coefX (sin theta))))
  100.      (if (and (= damping_coeff 0) (= initVel 0))    ; Test if undamped
  101.        (setq phi 0)                    ; If undamped, set phi to zero
  102.    (setq phi (atan (/ phiNum phiDen)))        ; Otherwise
  103.       )
  104.      (setq coefA (/ (- initDis XcosTheta) (sin phi)))
  105.      (setq expo (expt 2.71828183 (* -1 dampRat dampednatFreq time)))
  106.      ; Use major and minor variables to assemble general response function x(t)
  107.      (setq dampingTerm (* coefA expo (sin (+ (* dampednatFreq time) phi))))
  108.      (setq forcingTerm (* coefX (cos (- (* drivFreq time) theta))))
  109.      ; Final response
  110.      (setq y_dampedvibe (+ dampingTerm forcingTerm))
  111.      (setq list1 (append list1 (list (list x y_dampedvibe 0))))
  112.      )
  113.    (progn
  114.      )
  115.    )
  116. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 00:10 , Processed in 0.319479 second(s), 59 queries .

© 2020-2025 乐筑天下

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