明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1636|回复: 2

[基础] 請教一個數值累加的計算問題

[复制链接]
发表于 2010-11-22 18:47:00 | 显示全部楼层 |阅读模式

 

這一段程式的運作如下。

點選兩點p1 p2,後畫出金字塔圓。

 

這裡頭有一段數值的"累加"計算,讓小弟摸不透

(setq bas (polar bas ang (* rr 2)))

bas是在定點畫圓。所以進入了repeat迴圈中,每轉一圈便累加一個rr值,依此畫出n個相切圓。

但是此處R值定義為(* rr 2 ),即每跑一迴圈便x2,r值不成了等比級數 2 4 8 16 32了嗎?

又如何能畫出相切圓呢?

(此段程式為課本範例,可正確畫出圖形)

 

 

 

 

 

 

 

 (defun c:lsp_16()
   (setvar "cmdecho" 0)
   (setq pt1 (getpoint "\n起點: "))
   (setq pt2 (getpoint pt1 "\n終點: "))
   (setq nn (getint "\n堆疊數<10>: "))
   (if (null nn) (setq nn 10))
   (setq dd (distance pt1 pt2))
   (setq ang (angle pt1 pt2))
   (setq rr (/ (/ dd (1- nn)) 2))
   (setq nn2 nn)
   (repeat nn
      (setq bas pt1)
      (repeat nn2
         (command "circle" bas rr)
         (setq bas (polar bas ang (* rr 2)))
      )
      (setq nn2 (1- nn2))
      (setq pt1 (polar pt1 (+ ang (/ (* 60 pi) 180)) (* rr 2)))
   )
   (prin1)
)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2010-11-22 19:39:00 | 显示全部楼层

這樣改動提供您來比對理解
  1. .....
  2. ;; (setq rr (/ (/ dd (1- nn)) 2))
  3.    (setq Dia (/ dd (1- nn))
  4.           rr (/ Dia 2)
  5.    )
  6.    
  7.    (setq nn2 nn)
  8.    
  9.    (repeat nn
  10.       (setq bas pt1)
  11.       (repeat nn2
  12.          (command "circle" bas rr)
  13.          (setq bas (polar bas ang Dia))
  14.       )
  15.       (setq nn2 (1- nn2))
  16.       (setq pt1 (polar pt1 (+ ang (/ (* 60 pi) 180)) Dia))
  17.    )
  18.   ....


 楼主| 发表于 2010-11-22 20:02:00 | 显示全部楼层

喔喔,這樣我懂了

我把它搞錯了,是每一個迴圈以base為基點,增加一個直徑的長

 

謝謝你的幫助,我現在明白了

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-2-24 00:44 , Processed in 0.232081 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表