angle error what mistake ?

angle error what mistake ?

jaimuthu
Advocate Advocate
253 Views
2 Replies
Message 1 of 3

angle error what mistake ?

jaimuthu
Advocate
Advocate

 

 

 

 

 

 

1) i want p1 to p3 angle 43 degree and length of 190 

 

2) lenght is correct but angle is 109 degree what i mistake for this program

 

(defun c:tri( / unit mxv v^v transptucs transptwcs p1 p2 loop g p h gp p3 )

(defun unit ( v / d )
(mapcar '(lambda ( x y ) (/ x y)) v (list (setq d (distance '(0.0 0.0 0.0) v)) d d))
)

(defun mxv ( m v )
(mapcar '(lambda ( r ) (apply '+ (mapcar '* r v))) m)
)

(defun v^v ( u v )
(list
(- (* (cadr u) (caddr v)) (* (cadr v) (caddr u)))
(- (* (car v) (caddr u)) (* (car u) (caddr v)))
(- (* (car u) (cadr v)) (* (car v) (cadr u)))
)
)

(defun transptucs ( pt p1 p2 p3 / ux uy uz )
(setq uz (unit (v^v (mapcar '- p2 p1) (mapcar '- p3 p1))))
(setq ux (unit (mapcar '- p2 p1)))
(setq uy (unit (mapcar '- p3 p1)))

(mxv (list ux uy uz) (mapcar '- pt p1))
)

(defun transptwcs ( pt pt1 pt2 pt3 / pt1n pt2n pt3n )
(setq pt1n (transptucs '(0.0 0.0 0.0) pt1 pt2 pt3))
(setq pt2n (transptucs '(1.0 0.0 0.0) pt1 pt2 pt3))
(setq pt3n (transptucs '(0.0 1.0 0.0) pt1 pt2 pt3))
(transptucs pt pt1n pt2n pt3n)
)

(setq p1 (getpoint "\nPick or specify start point : "))
(setq p2 (getpoint "\nPick or specify end point : " p1))
(setq h(getdist "\n enter height:"))
(setq loop t)
(while loop
(setq g (grread t 15 0))
(if (eq (car g) 5)
(progn
(setq p (mapcar '(lambda ( a b ) (/ (+ a b) 2.0)) p1 p2))
;(setq h (/ (distance p1 p2)2 ))
(setq gp (cadr g))
(if (not (minusp (cadr (transptucs gp p1 (polar p1 (angle p1 p2) 1.0) (polar p1 (+ (angle p1 p2) (* 0.5 pi)) 1.0)))))
(progn
(redraw)
(setq p3 (polar p1 (+ (- 137 pi)) h))
(grdraw p1 p2 1 1)
(grdraw p2 p3 1 1)
(grdraw p3 p1 1 1)
)
(progn
(redraw)
(setq p3 (polar p1 (- (- 137 pi)) h))
(grdraw p1 p2 1 1)
(grdraw p2 p3 1 1)
(grdraw p3 p1 1 1)
)
)
)


(progn
(entmake (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") '(90 . 3)
(if (eq (getvar 'plinegen) 1) '(70 . 129) '(70 . 1))
(cons 38 (caddr (trans p1 1 (trans '(0.0 0.0 1.0) 1 0 t)))) (cons 10 (list (car (trans p1 1 (trans '(0.0 0.0 1.0) 1 0 t)))
(cadr (trans p1 1 (trans '(0.0 0.0 1.0) 1 0 t))))) (cons 10 (list (car (trans p2 1 (trans '(0.0 0.0 1.0) 1 0 t)))
(cadr (trans p2 1 (trans '(0.0 0.0 1.0) 1 0 t))))) (cons 10 (list (car (trans p3 1 (trans '(0.0 0.0 1.0) 1 0 t)))
(cadr (trans p3 1 (trans '(0.0 0.0 1.0) 1 0 t))))) (cons 210 (trans '(0.0 0.0 1.0) 1 0 t))))
(setq loop nil)
)


)
)
; (setq aa(- 137 pi))
;(command "circle" p1 10)
; (command "circle" p2 10)
; (command "circle" p3 10)
(redraw)
; (alert(rtos aa 2 1 ))
)

 

 

 

 

 

 

0 Likes
Accepted solutions (1)
254 Views
2 Replies
Replies (2)
Message 2 of 3

Kent1Cooper
Consultant
Consultant
Accepted solution

@jaimuthu wrote:

... i want p1 to p3 angle 43 degree ....

.... (- 137 pi) ....


Since 137 is 43 less than 180, it appears you are using 137 as degrees in the angle-difference calculation relative to pi as radians.  Both need to be expressed in radians in (polar) functions [and trig functions, etc.], and (angle) functions return in radians.  And I think [without detailed analysis] that you should be subtracting it from pi, rather than the other way around, for example:

 

(- pi (cvunit 137 "degree" "radian"))

 

Maybe the pi really does belong after [it would give you negative 43°], but either way 137° must be expressed in radians.

 

Or you could do the subtraction in degrees, and convert the result to radians:

(cvunit (- 180 137) "degree" "radian")

Kent Cooper, AIA
0 Likes
Message 3 of 3

jaimuthu
Advocate
Advocate

thanks for your guide its work

0 Likes