Lee Mac Posted May 21, 2009 Posted May 21, 2009 Only a few mathematical functions are covered in the LISP programming language, so I thought I'd treat us to a few more [i][color=#990099];; Inverse Sine (ArcSin)[/color][/i] [i][color=#990099];; Args: -1 <= x <= 1[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] asin [b][color=RED]([/color][/b]x[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cond[/color][/b] [b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=BLUE]<[/color][/b] [b][color=#009999]1.[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]abs[/color][/b] x[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=BLUE]nil[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=BLUE]equal[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]abs[/color][/b] x[b][color=RED])[/color][/b] [b][color=#009999]1.[/color][/b] [color=#009999][b]1e-9[/b][/color][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]*[/color][/b] x [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] [b][color=BLUE]pi[/color][/b] [b][color=#009999]2.[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]t[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]atan[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] x [b][color=RED]([/color][/b][b][color=BLUE]sqrt[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]-[/color][/b] [b][color=#009900]1[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]expt[/color][/b] x [b][color=#009900]2[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [i][color=#990099];; Inverse Cosine (ArcCos)[/color][/i] [i][color=#990099];; Args: -1 <= x <= 1[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] acos [b][color=RED]([/color][/b]x[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cond[/color][/b] [b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=BLUE]<[/color][/b] [b][color=#009999]1.[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]abs[/color][/b] x[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=BLUE]nil[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=BLUE]zerop[/color][/b] x[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] [b][color=BLUE]pi[/color][/b] [b][color=#009999]2.[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]t[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]atan[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]sqrt[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]-[/color][/b] [b][color=#009900]1[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]expt[/color][/b] x [b][color=#009900]2[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] x[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [i][color=#990099];; Hyperbolic Sine (Sinh)[/color][/i] [i][color=#990099];; Args: Real x[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] sinh [b][color=RED]([/color][/b]x[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]-[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]exp[/color][/b] x[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]exp[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]*[/color][/b] [b][color=#009999]-1.[/color][/b] x[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=#009999]2.[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [i][color=#990099];; Hyperbolic Cosine (Cosh)[/color][/i] [i][color=#990099];; Args: Real x[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] cosh [b][color=RED]([/color][/b]x[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]+[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]exp[/color][/b] x[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]exp[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]*[/color][/b] [b][color=#009999]-1.[/color][/b] x[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=#009999]2.[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [i][color=#990099];; Hyperbolic Tangent (Tanh)[/color][/i] [i][color=#990099];; Args: Real x[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] tanh [b][color=RED]([/color][/b]x[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]-[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]exp[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]*[/color][/b] [b][color=#009999]2.[/color][/b] x[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=#009999]1.[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]+[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]exp[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]*[/color][/b] [b][color=#009999]2.[/color][/b] x[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=#009999]1.[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [i][color=#990099];; Inverse Hyperbolic Sine (ArcSinh)[/color][/i] [i][color=#990099];; Args: Real x[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] asinh [b][color=RED]([/color][/b]x[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]log[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]+[/color][/b] x [b][color=RED]([/color][/b][b][color=BLUE]sqrt[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]+[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]expt[/color][/b] x [b][color=#009900]2[/color][/b][b][color=RED])[/color][/b] [b][color=#009900]1[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [i][color=#990099];; Inverse Hyperbolic Cosine (ArcCosh)[/color][/i] [i][color=#990099];; Args: x >= 1[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] acosh [b][color=RED]([/color][/b]x[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cond[/color][/b] [b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=BLUE]<[/color][/b] x [b][color=#009999]1.[/color][/b][b][color=RED])[/color][/b] [b][color=BLUE]nil[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]t[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]log[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]+[/color][/b] x [b][color=RED]([/color][/b][b][color=BLUE]sqrt[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]-[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]expt[/color][/b] x [b][color=#009900]2[/color][/b][b][color=RED])[/color][/b] [b][color=#009900]1[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [i][color=#990099];; Inverse Hyperbolic Tangent (ArcTanh)[/color][/i] [i][color=#990099];; Args: -1 < x < 1[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] atanh [b][color=RED]([/color][/b]x[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cond[/color][/b] [b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=BLUE]<=[/color][/b] [b][color=#009999]1.[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]abs[/color][/b] x[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=BLUE]nil[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]t[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]log[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]+[/color][/b] [b][color=#009999]1.[/color][/b] x[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]-[/color][/b] [b][color=#009999]1.[/color][/b] x[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=#009999]2.[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [i][color=#990099];; Fibonnacci Number Generator[/color][/i] [i][color=#990099];; Args: Natural x[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] fib [b][color=RED]([/color][/b]x[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cond[/color][/b] [b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=BLUE]or[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]minusp[/color][/b] x[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] [b][color=DARKRED]'[/color][/b]INT [b][color=RED]([/color][/b][b][color=BLUE]type[/color][/b] x[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=BLUE]nil[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][color=Blue]t[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]*[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] [b][color=#009999]1.[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]sqrt[/color][/b] [b][color=#009999]5.[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]-[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]expt[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]+[/color][/b] [b][color=#009999]1.[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]sqrt[/color][/b] [b][color=#009999]5.[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=#009999]2.[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]1+[/color][/b] x[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]expt[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]-[/color][/b] [b][color=#009999]1.[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]sqrt[/color][/b] [b][color=#009999]5.[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=#009999]2.[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]1+[/color][/b] x[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] Quote
fuccaro Posted May 22, 2009 Posted May 22, 2009 Thanks for sharing. Is there any practical application for the Fibonacci number? Quote
Rob-GB Posted May 22, 2009 Posted May 22, 2009 Thanks for sharing. Is there any practical application for the Fibonacci number? Hi fuccaro, the setting out or drawing of Curtail steps and handrail volutes are based on the Fibbonacci sequence. As an example: Quote
Freerefill Posted May 22, 2009 Posted May 22, 2009 I haven't touched this in many months, but it was a lot of fun. It'll draw functions to the screen, as points or a polyline, with whatever you choose in terms of limits and precision. It does everything from a sin wave to a hyperbolic paraboloid to damped harmonic motion, and I'm sure you could tweak it to do whatever you'd like. It's more fun than useful, so I hope you enjoy it ^.^ (defun c:fnplot(/ list1) ; Plot function (setq echo (getvar "cmdecho")) (setvar "cmdecho" 0) (setq lowerBnd 0.0000000 upperBnd 10.0000000 precisionX 2000 precisionY precisionX results "hi" ) ; (setq lowerBnd (getreal "\nEnter lower bound: ") ; upperBnd (getreal "\nEnter upper bound: ") ; precision (getreal "\nEnter precision: ") ; ) (setq incrementX (/ (- upperBnd lowerBnd) precisionX)) (setq incrementY (/ (- upperBnd lowerBnd) precisionY)) (setq dum1 lowerBnd) (repeat precisionX ; Begin repeat loop (setq x dum1) (setq dum2 lowerBnd) (repeat precisionY ; Begin nested repeat loop (setq y dum2) ;(sphere x y) (sinusoid x) ;(logarithm x) ;(dampedvibration x) ;(polynom x) (wheel) (setq dum2 (+ dum2 incrementY)) ); /nested repeat (setq dum1 (+ dum1 incrementX)) ); /repeat (if list1 (scribblescribble) ) (setvar "cmdecho" echo) (princ) ); /program ; -- Cheap error function (defun goodtimes() (princ "Strong Bad, help! I swallowed a bug! The good times are over!")(princ) ) ; -- Wheel function for spinnyness -- (defun wheel () (if (not wh)(setq wh "-")) (cond ((= wh "|") (setq wh "/")) ((= wh "/") (setq wh "-")) ((= wh "-") (setq wh "\\")) ((= wh "\\") (setq wh "|")) ) (prompt (strcat "\10" wh)) (princ) ) ; -- Draw polyline using list1 (defun scribblescribble() (setq vl (list (cons 0 "LWPOLYLINE") (cons 8 "0") (cons 100 "AcDbEntity") (cons 100 "AcDbPolyline") (cons 90 (length list1)) (cons 70 0) (cons 43 0.0) ) ) (foreach le list1 (setq vl (append vl (list (cons 10 le)) ) ) (wheel) ) (entmake vl) (princ results)(princ) ) ; -- Begin drawing functions -- ; Point Spheroids (defun sphere(x y / list1) (setq conA 1) (setq conB 1) (setq conC 1) (setq grpA (/ (expt x 2) (expt conA 2))) (setq grpB (/ (expt y 2) (expt conB 2))) (setq grpC (* (expt conC 2) (+ grpA grpB))) ; Sphere ;(setq z (sqrt (* -1 grpC))) ; Hyperboloid of 1 sheet ;(setq z (sqrt (- grpC (expt conC 2)))) ; Hyperboloid of 2 sheets ;(setq z (sqrt (+ grpC (expt conC 2)))) ; Degenerate Hyperboloid ;(setq z (sqrt grpC)) (if (> (+ grpC (expt conC 2)) 0) (progn (setq z (sqrt (+ grpC (expt conC 2)))) (command "point" (list x y z)) (command "point" (list x y (* -1 z))) ) ) );/sphere ; Line Sinusoid (defun sinusoid(x /) (setq precisionY 1) (setq y_sinusoid (* 2 (sin x))) (setq list1 (append list1 (list (list x y_sinusoid 0)))) ) ; Line Polynomial (defun polynom(x /) (setq precisionY 1) (setq consList (list 7 5 4 6 4 2 8 6 5 5 2)) (setq y_polynom 0) (setq dumVar 0) (repeat (- (length consList) 1) (setq y_polynom (+ y_polynom (* (nth dumVar consList) (expt x (- (- (length consList) 1) dumVar))))) (setq dumVar (+ 1 dumVar)) ) (setq y_polynom (+ y_polynom (nth (- (length consList) 1) consList))) (setq list1 (append list1 (list (list x y_polynom 0)))) ) ; Line Logarithm (defun logarithm(x /) (setq precisionY 1) (if (> x 0) (progn (setq y_log (* 1 (log x))) (setq list1 (append list1 (list (list x y_log 0)))) ) ) ) ; Line Damped Vibration (defun dampedvibration(x /) (setq precisionY 1) (setq time x) ; Set up initial conditions for forced, underdamped response (0 < zeta < 1) (setq mass 1) ; m (setq damping_coeff 0) ; c If 0, undamped (setq spring_const 2) ; k (setq initDis 1) ; x_o (setq initVel 0) ; v_o (setq initFor 10) ; F_o If 0, free response (setq dampRat (/ damping_coeff (* 2 (sqrt (* spring_const mass))))) ; zeta ; * Zeta must be greater than zero but less than one to proceed * ; (if (and (>= dampRat 0) (< dampRat 1)) (progn ; Determine minor variables from initial conditions (setq modinitFor (/ initFor mass)) ; f_o (setq drivFreq 1.1) ; omega (setq natFreq (sqrt (/ spring_const mass))) ; omega_n (setq dampednatFreq (sqrt (- 1 (* natFreq dampRat dampRat)))) ; omega_d ; Determine major variables from minor variables (setq omn2_om (- (expt natFreq 2) (expt drivFreq 2))) (setq 2zomnom (* 2 dampRat natFreq drivFreq)) (setq coefX (/ modinitFor (sqrt (+ (expt omn2_om 2) (expt 2zomnom 2))))) (setq theta (atan (/ 2zomnom omn2_om))) (setq XcosTheta (* coefX (cos theta))) (setq phiNum (* dampednatFreq (- initDis XcosTheta))) (setq phiDen (+ initVel (* natFreq dampRat (- initDis XcosTheta)) (* -1 drivFreq coefX (sin theta)))) (if (and (= damping_coeff 0) (= initVel 0)) ; Test if undamped (setq phi 0) ; If undamped, set phi to zero (setq phi (atan (/ phiNum phiDen))) ; Otherwise ) (setq coefA (/ (- initDis XcosTheta) (sin phi))) (setq expo (expt 2.71828183 (* -1 dampRat dampednatFreq time))) ; Use major and minor variables to assemble general response function x(t) (setq dampingTerm (* coefA expo (sin (+ (* dampednatFreq time) phi)))) (setq forcingTerm (* coefX (cos (- (* drivFreq time) theta)))) ; Final response (setq y_dampedvibe (+ dampingTerm forcingTerm)) (setq list1 (append list1 (list (list x y_dampedvibe 0)))) ) (progn ) ) ) Quote
Lee Mac Posted May 22, 2009 Author Posted May 22, 2009 Thanks for sharing. Is there any practical application for the Fibonacci number? Well, tbh I added it just for fun But as Rob points out, there may be a use Quote
Lee Mac Posted May 24, 2009 Author Posted May 24, 2009 OK, just a few more - I obtained Matrix Transpose from theSwamp - some great coding. [i][color=#990099];; Vector Dot Product[/color][/i] [i][color=#990099];; Args: a,b Vectors[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] dot [b][color=RED]([/color][/b]a b[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]length[/color][/b] a[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]length[/color][/b] b[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]apply[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]+[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]*[/color][/b] a b[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [i][color=#990099];; Vector Cross Product[/color][/i] [i][color=#990099];; Args: a,b Vectors[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] cross [b][color=RED]([/color][/b]a b[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cond[/color][/b] [b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=BLUE]or[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]<[/color][/b] [b][color=#009900]3[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]length[/color][/b] a[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]/=[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]length[/color][/b] a[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]length[/color][/b] b[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=BLUE]nil[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]t[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]-[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]*[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] a[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]caddr[/color][/b] b[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]*[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] b[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]caddr[/color][/b] a[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]-[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]*[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] b[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]caddr[/color][/b] a[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]*[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] a[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]caddr[/color][/b] b[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]-[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]*[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] a[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] b[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]*[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] b[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] a[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [i][color=#990099];; Vector Norm[/color][/i] [i][color=#990099];; Args: a Vector[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] norm [b][color=RED]([/color][/b]a[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]sqrt[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]apply[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]+[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b]x[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]expt[/color][/b] x [b][color=#009900]2[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] a[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [i][color=#990099];; Matrix Transpose (by Doug Wilson)[/color][/i] [i][color=#990099];; Args: m Matrix[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] trp [b][color=RED]([/color][/b]m[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]apply[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]list[/color][/b] m[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] Quote
David Bethel Posted May 25, 2009 Posted May 25, 2009 Here is Jon Fleming's contribution from back in the day ;;; The trigonometric functions not included with AutoLISP. ;;; Jon Fleming, May 20 1997. ;;; Note that some of the functions (arcsecant and arccosecant) ;;; use other functions defined in this file. ;;; Note that none of these functions check for valid ;;; arguments. Passing valid arguments is the responsibility ;;; of the calling program. ;;; 9.7E307 was determined experimentally to be the largest ;;; number that can be generated in AutoLISP (in R14). ;;;-------------------------------------------------------- ;;; tangent accepts any angle in radians, and returns the ;;; tangent in the range -9.7E307+epsilon to 9.7E307 inclusive (defun tan (z / cosz) (if (zerop (setq cosz (cos z))) 9.7e307 (/ (sin z) cosz) ) ;_ end if ) ;_ end defun ;;; secant accepts any angle in radians, and returns the ;;; secant in the ranges -9.7E307+epsilon to -1.0 inclusive ;;; and 1.0 to 9.7E307 inclusive (defun sec (z / cosz) (if (zerop (setq cosz (cos z))) 9.7E307 (/ 1.0 cosz) ) ;_ end if ) ;_ end defun ;;; cosecant accepts any angle in radians, and returns the ;;; cosecant in the ranges -9.7E307+epsilon to -1.0 inclusive ;;; and 1.0 to 9.7E307 inclusive (defun csc (z / sinz) (if (zerop (setq sinz (sin z))) 9.7E307 (/ 1.0 sinz) ) ) ;;; arcsine (inverse sine) accepts an argument in the range ;;; -1.0 to 1.0 inclusive, and returns an angle in radians in ;;; the range (-pi/2) to (pi/2) inclusive. (defun asin (z /) (atan z (sqrt (- 1.0 (* z z)))) ) ;_ end defun ;;; arccosine (inverse cosine) accepts an argument in the ;;; range -1.0 to 1.0 inclusive, and returns an angle in ;;; radians in the range pi to 0 inclusive (defun acos (z /) (atan (sqrt (- 1.0 (* z z))) z) ) ;_ end defun ;;; arcsecant (inverse secant) accepts an argument in ;;; one of two ranges: minus infinity to -1 inclusive or ;;; 1 to infinity inclusive, and returns an angle in ;;; radians in the range pi to 0 inclusive (except ;;; EXACTLY pi/2 will never be returned on a computer ;;; with finite numerical precision) (defun asec (z /) (acos (/ 1.0 z)) ) ;_ end defun ;;; arccosecant (inverse cosecant) accepts an argument ;;; in one of two ranges: minus infinity to -1 inclusive or ;;; 1 to infinity inclusive, and returns an angle in ;;; radians in the range -pi/2 to pi/2 inclusive (except ;;; EXACTLY 0.0 will never be returned on a computer ;;; with finite numerical precision) (defun acsc (z /) (asin (/ 1.0 z)) ) ;_ end defun ;;; arccotangent (inverse cotangent) accepts an argument ;;; in the range minus infinity to plus infinity ;;; inclusive and returns an angle in radians in the ;;; range pi to 0 inclusive. (defun acot (z /) (- (/ pi 2.0) (atan z)) ) ;_ end defun (prin1) -David Quote
Lee Mac Posted May 25, 2009 Author Posted May 25, 2009 Nice one David - this thread would be a great reference (possible sticky?) Quote
Arnie Posted November 24, 2009 Posted November 24, 2009 Hi Rob Saw your reply to the Fibonacci function where you attached a picture . Would you have any idea how to draw that handrail volutes in cad 3D . I have tried helyx extrusion and nothing works ?? Quote
cadman2009 Posted November 25, 2009 Posted November 25, 2009 OK, just a few more - I obtained Matrix Transpose from theSwamp - some great coding. [i][color=#990099];; Vector Dot Product[/color][/i] [i][color=#990099];; Args: a,b Vectors[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] dot [b][color=RED]([/color][/b]a b[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]length[/color][/b] a[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]length[/color][/b] b[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]apply[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]+[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]*[/color][/b] a b[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [i][color=#990099];; Vector Cross Product[/color][/i] [i][color=#990099];; Args: a,b Vectors[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] cross [b][color=RED]([/color][/b]a b[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cond[/color][/b] [b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=BLUE]or[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]<[/color][/b] [b][color=#009900]3[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]length[/color][/b] a[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]/=[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]length[/color][/b] a[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]length[/color][/b] b[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=BLUE]nil[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]t[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]-[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]*[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] a[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]caddr[/color][/b] b[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]*[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] b[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]caddr[/color][/b] a[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]-[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]*[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] b[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]caddr[/color][/b] a[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]*[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] a[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]caddr[/color][/b] b[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]-[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]*[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] a[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] b[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]*[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] b[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cadr[/color][/b] a[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [i][color=#990099];; Vector Norm[/color][/i] [i][color=#990099];; Args: a Vector[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] norm [b][color=RED]([/color][/b]a[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]sqrt[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]apply[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]+[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b]x[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]expt[/color][/b] x [b][color=#009900]2[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] a[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [i][color=#990099];; Matrix Transpose (by Doug Wilson)[/color][/i] [i][color=#990099];; Args: m Matrix[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] trp [b][color=RED]([/color][/b]m[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]apply[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]list[/color][/b] m[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] special thanks Lee , Its very useful for me Because I'm not forced to go out of the AutoCAD environment ( to matlab ) and back again Quote
Lee Mac Posted November 25, 2009 Author Posted November 25, 2009 Glad you could make use of it Cadman :wink: Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.