uli 发表于 2022-7-6 06:56:46

奇怪的结果-无法解释

大家好,
这是一个关于参数方程的游戏。。。试图获得托尔。。。结果对我来说很奇怪,我无法得到托尔的真实尺寸。。我不明白为什么。。。有什么帮助吗?对不起,我Lisp程序,看起来糟透了。。
 



(defun c:tor ( / R r x y z plist );torr

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun randnum (/)
(if (not seed)
   (setq seed (getvar "DATE")))
(setq modulus    65536
    multiplier    25173
   increment    13849
       seed       (rem (+ (* multiplier seed) increment) modulus)
       random   (/ seed modulus)))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun point (xplist)
(setq i 0)
(repeat (length xplist)
(entmakex
   (list(cons 0 "POINT")
      (cons 100"AcDbEntity")
      (cons 670)
      (cons 8"0")
      (cons 100"AcDbPoint")
      (cons 10 (nth i xplist))
      (cons 62 256)
      (cons 500)
   )
)
(setq i (1+ i))
))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(setq x 10000)
(if
   (and
   (setq R (getreal "\nR="))
   (setq r (getreal "\n r="))
   )
(progn
   (setq plist nil)
   (repeat x
         (setq ux(* pi 2(randnum)))
         (setq vx(* pi 2(randnum)))
   (setq x (*(+ (* 5 R) (* r(cos vx)))(cos ux)    ))
         (setq y (*(+ (* 5 R) (* r(cos vx)))(sin ux )   ))
         (setq z (* r (sin vx)))
         (setq px (list x y z))                     
   (setq plist (cons px plist))
   )
   ))
(point plist)
(princ))





请与这个比较
 



(defun c:tor ( / R r x y z plist );torr

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun randnum (/)
(if (not seed)
   (setq seed (getvar "DATE")))
(setq modulus    65536
    multiplier    25173
   increment    13849
       seed       (rem (+ (* multiplier seed) increment) modulus)
       random   (/ seed modulus)))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun point (xplist)
(setq i 0)
(repeat (length xplist)
(entmakex
   (list(cons 0 "POINT")
      (cons 100"AcDbEntity")
      (cons 670)
      (cons 8"0")
      (cons 100"AcDbPoint")
      (cons 10 (nth i xplist))
      (cons 62 256)
      (cons 500)
   )
)
(setq i (1+ i))
))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(setq x 10000)
(if
   (and
   (setq R (getreal "\nR="))
   (setq r (getreal "\n r="))
   )
(progn
   (setq plist nil)
   (repeat x
         (setq ux(* pi 2(randnum)))
         (setq vx(* pi 2(randnum)))
   (setq x (*(+ (* 1 R) (* r(cos vx)))(cos ux)    ))
         (setq y (*(+ (* 1 R) (* r(cos vx)))(sin ux )   ))
         (setq z (* r (sin vx)))
         (setq px (list x y z))                     
   (setq plist (cons px plist))
   )
   ))
(point plist)
(princ))


Stefan BMR 发表于 2022-7-6 07:28:04

尝试不同的变量名。
AutoLisp不区分大小写。

uli 发表于 2022-7-6 08:00:50

如何通过这些点绘制网格(曲面)?三角化?或绘制实体。。。
页: [1]
查看完整版本: 奇怪的结果-无法解释