一些时髦的角落踢
- (defun LM:FunkyGrCorner ( p1 / g )
- (while (= 5 (car (setq g (grread 't 13 0)))) (redraw)
- (
- (lambda ( p1 p2 p3 p4 h xa x )
- (mapcar '(lambda ( from to ) (grdraw from to -1 h)) (list p1 p2 p3 p4) (list p2 p3 p4 p1))
- (mapcar '(lambda ( from ax ) (LM:grCornerpiece from (+ ax xa (/ (* x 5 pi) 4.)) 8 3))
- (list p1 p2 p3 p4)
- (list (angle p1 p2) (angle p2 p3) (angle p3 p4) (angle p4 p1))
- )
- )
- p1 (list (caadr g) (cadr p1)) (cadr g) (list (car p1) (cadadr g))
-
- (if (< (car p1) (caadr g)) 0 1)
-
- (angle '(0. 0. 0.) (trans (getvar 'ucsxdir) 0 (trans '(0. 0. 1.) 1 0 t) t))
-
- (if (or (and (< (caadr g) (car p1)) (< (cadr p1) (cadadr g)))
- (and (< (car p1) (caadr g)) (< (cadadr g) (cadr p1)))) -1 1)
- )
- )
- (redraw) (if (listp (cadr g)) (cadr g))
- )
- (defun LM:grCornerpiece ( p a s c / -s lst r )
- ;; © Lee Mac 2010
- (setq -s (- s) lst
- (list
- (list -s -s) (list 0. 0.)
- (list (1+ -s) -s) (list 0. -1.)
- (list -s (1+ -s)) (list -1. 0.)
- (list -s s) (list 0. 0.)
- (list (1+ -s) s) (list 0. 1.)
- (list -s (1- s)) (list -1. 0.)
- (list -s -s) (list -s s )
- (list (1+ -s) -s) (list (1+ -s) s)
- (list -s (1+ -s)) (list -s (1- s))
- )
- )
- (setq r (/ (getvar 'VIEWSIZE) (cadr (getvar 'SCREENSIZE))) p (trans p 1 3))
- (grvecs (cons c (LM:RotatePointsbyMatrix lst '(0. 0. 0.) a))
- (list
- (list r 0. 0. (car p))
- (list 0. r 0. (cadr p))
- (list 0. 0. r 0.)
- (list 0. 0. 0. 1.)
- )
- )
- )
- ;;--------------=={ Rotate Points by Matrix }==---------------;;
- ;; ;;
- ;; Performs a Rotation transformation on a list of points ;;
- ;;------------------------------------------------------------;;
- ;; Author: Lee McDonnell, 2010 ;;
- ;; ;;
- ;; Copyright © 2010 by Lee McDonnell, All Rights Reserved. ;;
- ;; Contact: Lee Mac @ TheSwamp.org, CADTutor.net ;;
- ;;------------------------------------------------------------;;
- ;; Arguments: ;;
- ;; PointList - list of points to be rotated ;;
- ;; BasePoint - base point for rotation (in CS of PointList) ;;
- ;; rAngle - angle of rotation ;;
- ;;------------------------------------------------------------;;
- (defun LM:RotatePointsByMatrix ( PointList BasePoint rAngle )
- ;; © Lee Mac 2010
-
- (
- (lambda ( Matrix / BaseVector )
- (setq BaseVector (mapcar '- BasePoint (mxv Matrix BasePoint)))
- (mapcar '(lambda ( point ) (mapcar '+ (mxv Matrix point) BaseVector)) PointList)
- )
- (list
- (list (cos rAngle) (sin (- rAngle)) 0.0)
- (list (sin rAngle) (cos rAngle) 0.0)
- (list 0.0 0.0 1.0)
- )
- )
- )
- (defun mxv ( m v )
- (mapcar '(lambda ( r ) (apply '+ (mapcar '* r v))) m)
- )
|