作者flyalice (飛愛麗斯)
看板Cad_Cae
標題Re: [問題] 請問autocad怎麼畫拋物線?
時間Fri Apr 22 13:43:05 2005
※ 引述《Phileo ()》之銘言:
: 請問一下
: 如果說有一個拋物線方程式要用autocad畫出來
: 例如 y=2x^2
: 要怎麼畫呢?
: 謝謝
剛剛找到一個拋物線的Lisp程式,給你參考
來源處
http://cadcam.mold.net.tw/online/3Wbbs/acad/280.htm
以下列出說明及程式,可將下列存成 ???.lsp,
使用前執行(load"路徑/???.lsp"),路徑須使用順斜線/別忘記。
;已知頂點、焦距、軸長、旋轉角,畫拋物線
;採用7點近似畫法,以雲形線畫出拋物線
;端點及頂點由已知資料直接求得,
;再求4個中間點中間點,及端點的斜率
;以上面九個條件圖畫出零度之拋物線才以rotate指令旋轉
;物件鎖點設定為無
(setq osn (getvar "osmode"))
(setq osn (setvar "osmode" 0))
;資料輸入
(setq p4(getpoint "\n輸入拋物線頂點: "))
(setq focus(getreal "\n輸入拋物線焦距: "))
(setq length(getreal "\n輸入拋物線軸長: "))
(setq angle(getreal "\n輸入拋物線角度: "))
;已知拋物線 x座標值,求 y座標值公式:
; y=k+2*focus^0.5*(x-h)^0.5
;or y=k-2*focus^0.5*(x-h)^0.5
; p1x=h+length p1y=k+2*focuse^0.5*length^0.5
; p2x=h+2*length/3 p2y=k+2*focuse^0.5*length^0.5*(2/3)^0.5
; p3x=h+length/3 p3y=k+2*focuse^0.5*length^0.5*(1/3)^0.5
; p4x=h p4y=k
; p5x=h+length/3 p5y=k-2*focuse^0.5*length^0.5*(1/3)^0.5
; p6x=h+2*length/3 p6y=k-2*focuse^0.5*length^0.5*(2/3)^0.5
; p7x=h+length p7y=k-2*focuse^0.5*length^0.5
(setq h(car p4) k(cadr p4))
(setq foc(sqrt focus) len(sqrt length))
(setq n13(sqrt (/ 1.0 3.0)) n23(sqrt (/ 2.0 3.0)))
(setq p1x(+ h length)
p2x(+ h (* 2 (/ length 3)))
p3x(+ h (/ length 3))
p5x p3x
p6x p2x
p7x p1x
p1y(+ k (* 2 foc len))
p2y(+ k (* 2 foc len n23))
p3y(+ k (* 2 foc len n13))
p5y(- k (* 2 foc len n13))
p6y(- k (* 2 foc len n23))
p7y(- k (* 2 foc len))
)
;已知拋物線 x座標值,求拋物線斜率公式:
; y'=2*focus^0.5/(x-h)^0.5
;or y'=-2*focus^0.5/(x-h)^0.5
; y'(p1x)=focus^0.5/length^0.5
; y'(p7x)=-focus^0.5/length^0.5
(setq slope1(* foc (/ 1.0 len))
slope2(- 0.0 (* foc (/ 1.0 len)))
)
(setq p1(list p1x p1y)
p2(list p2x p2y)
p3(list p3x p3y)
p5(list p5x p5y)
p6(list p6x p6y)
p7(list p7x p7y)
p8(list (+ p1x 1.0) (+ p1y slope1))
p9(list (+ p7x 1.0) (+ p7y slope2))
)
;畫出拋物線
(command "spline" p1 p2 p3 p4 p5 p6 p7 "" p8 p9)
(command"rotate" "l" "" p4 angle)
;復原物件鎖點
(setvar "osmode" osn)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.70.36.169
1F:推 Phileo:感謝~~試試去~~:D 61.229.127.157 04/23
2F:推 seagate01:感謝 05/26 11:23