### Author Topic: passing vectors to a function  (Read 10440 times)

0 Members and 1 Guest are viewing this topic.

#### Shay Gaghe

• Newt
• Posts: 89
##### Re: passing vectors to a function
« Reply #30 on: July 11, 2014, 01:29:58 AM »
with dims

#### Kerry

• Mesozoic relic
• Seagull
• Posts: 11654
• class keyThumper<T>:ILazy<T>
##### Re: passing vectors to a function
« Reply #31 on: July 11, 2014, 01:41:21 AM »
If you're travelling in space and you are located at 10, 25,13 and you want to travel to Uranus which is at 12,21,15 ; what vector will Sulu need to
use to navigate to your destination?

(distances in parsecs).

i must know the location of Sulu
Sulu is on the bridge .. he is the navigator.
http://en.wikipedia.org/wiki/Hikaru_Sulu

Regarding the piccy you posted,
What is the vector for each of the arms in the left grid .. and in the right grid.?

ie:
What is it's Length, Delta X and Delta Y dimensions ?
< ... piccys >

You still don't understand what constitutes a vector.
What is the Delta X and Delta Y of the arms ??
« Last Edit: July 11, 2014, 01:47:53 AM by Kerry »
kdub, kdub_nz in other timelines.
Perfection is not optional.
Everything will work just as you expect it to, unless your expectations are incorrect.
Discipline: None at all.

#### Kerry

• Mesozoic relic
• Seagull
• Posts: 11654
• class keyThumper<T>:ILazy<T>
##### Re: passing vectors to a function
« Reply #32 on: July 11, 2014, 01:54:32 AM »
kdub, kdub_nz in other timelines.
Perfection is not optional.
Everything will work just as you expect it to, unless your expectations are incorrect.
Discipline: None at all.

#### Kerry

• Mesozoic relic
• Seagull
• Posts: 11654
• class keyThumper<T>:ILazy<T>
##### Re: passing vectors to a function
« Reply #33 on: July 11, 2014, 04:56:09 AM »
Shay Gaghe,
I hate it when I'm forced to have discussions with myself.

Try to answer the questions I asked because the answer you want is in my questions.

kdub, kdub_nz in other timelines.
Perfection is not optional.
Everything will work just as you expect it to, unless your expectations are incorrect.
Discipline: None at all.

#### Shay Gaghe

• Newt
• Posts: 89
##### Re: passing vectors to a function
« Reply #34 on: July 11, 2014, 05:15:19 AM »
sorry i didnt see star trek

but let me express my gesture for you

#### Kerry

• Mesozoic relic
• Seagull
• Posts: 11654
• class keyThumper<T>:ILazy<T>
##### Re: passing vectors to a function
« Reply #35 on: July 11, 2014, 06:15:02 AM »
Pretty close :

Try this

Now that we can get to our destination, try to change your code to use the Vector definition (DeltaX, DeltaY, DeltaZ) of each line rather than the endpoints in space.

« Last Edit: July 11, 2014, 06:27:55 AM by Kerry »
kdub, kdub_nz in other timelines.
Perfection is not optional.
Everything will work just as you expect it to, unless your expectations are incorrect.
Discipline: None at all.

#### Shay Gaghe

• Newt
• Posts: 89
##### Re: passing vectors to a function
« Reply #36 on: July 11, 2014, 07:36:20 AM »
Pretty close :

Try this

Now that we can get to our destination, try to change your code to use the Vector definition (DeltaX, DeltaY, DeltaZ) of each line rather than the endpoints in space.

in order to get back to where istarted i would inverse the operator to + rather than -

except that i cant go anywhere without knowing the xyz of home

or i didnt understand the task well

#### Kerry

• Mesozoic relic
• Seagull
• Posts: 11654
• class keyThumper<T>:ILazy<T>
##### Re: passing vectors to a function
« Reply #37 on: July 11, 2014, 07:39:34 AM »
Lets say Home is at (-18, 18, 18)

kdub, kdub_nz in other timelines.
Perfection is not optional.
Everything will work just as you expect it to, unless your expectations are incorrect.
Discipline: None at all.

#### Shay Gaghe

• Newt
• Posts: 89
##### Re: passing vectors to a function
« Reply #38 on: July 11, 2014, 07:56:38 AM »
i wanna go home

#### Kerry

• Mesozoic relic
• Seagull
• Posts: 11654
• class keyThumper<T>:ILazy<T>
##### Re: passing vectors to a function
« Reply #39 on: July 11, 2014, 08:05:14 AM »
i wanna go home

Most excellent Navigator Shay.
kdub, kdub_nz in other timelines.
Perfection is not optional.
Everything will work just as you expect it to, unless your expectations are incorrect.
Discipline: None at all.

#### Kerry

• Mesozoic relic
• Seagull
• Posts: 11654
• class keyThumper<T>:ILazy<T>
##### Re: passing vectors to a function
« Reply #40 on: July 11, 2014, 08:06:11 AM »
Here's something to read on the trip.

Code - Auto/Visual Lisp: [Select]
1. ;;
2. ;;;-------------------------------------------------------------
3. ;;;-------------------------------------------------------------
4. ;;; Returns the single unit vector from p1 to p2
5. (defun kdub:vec2pts (p1 p2)
6.   (if (not (equal p1 p2 1e-009))
7.     (mapcar '(lambda (x) (/ x (distance p1 p2))) (mapcar '- p2 p1))
8.   )
9. )
10. ;;
11. ;;;-------------------------------------------------------------
12. ;;;-------------------------------------------------------------
13. ;;
14. (defun kdub:normal_from_3pts (ip p1 p2 / norm)
15.   (cond ((inters ip p1 ip p2)
16.          (foreach p '(p1 p2) (set p (mapcar '- (eval p) ip)))
17.          (setq norm (list (- (* (cadr p1) (caddr p2)) (* (caddr p1) (cadr p2)))
18.                           (- (* (caddr p1) (car p2)) (* (car p1) (caddr p2)))
19.                           (- (* (car p1) (cadr p2)) (* (cadr p1) (car p2)))
20.                     )
21.                norm (mapcar '(lambda (x) (* x (/ 1 (distance '(0 0 0) norm)))) norm)
22.          )
23.         )
24.   )
25. )
26. ;;
27. ;;;-------------------------------------------------------------
28. ;;;-------------------------------------------------------------
29. ;;
30. ;;;  Returns the angle (in radians) defined by its summit and two points
31. ;;; Returned angle is always positive and less than or equal to pi radians.
32.
33. ;; Using vector calculus
34. (defun kdub:enclosedangle_3pts (ip p1 p2 / v1 v2)
35.   (if (and (setq v1 (kdub:vec2pts ip p1)) (setq v2 (kdub:vec2pts ip p2)))
36.     (cond ((equal v1 v2 1e-009) 0.0)
37.           ((equal v1 (mapcar '- v2) 1e-009) pi)
38.           (t (* 2 (kdub:asin (/ (distance v1 v2) 2))))
39.     )
40.   )
41. )
42.
43. ;;
44. ;;;-------------------------------------------------------------
45. ;;;-------------------------------------------------------------
46. (defun KDUB:GetEnclosedApexAngle ( apex p1 p2 )
47.   (- (+ pi pi) (rem (+ pi pi (- (angle apex p1) (angle apex p2))) (+ pi pi)))
48. )
49. ;;
50. ;;;-------------------------------------------------------------
51. ;;;-------------------------------------------------------------
52. ;;
53. (defun KDUB:GetApexAngle<180 ( apex p1 p2 )
54.   (min (setq a (rem (+ pi pi (- (angle apex p1) (angle apex p2))) (+ pi pi))) (- (+ pi pi) a))
55. )
56.
57. ;;
58. ;;;-------------------------------------------------------------
59. ;;;-------------------------------------------------------------
60. ;;
61. ;;; Returns the elevation of point pt from the plane defined by p1 p2 p3
62.
63. (defun kdub:elevabovePlane (pt p1 p2 p3)
64.   (* (cos
65.        (kdub:enclosedangle_3pts p1 (mapcar '+ p1 (kdub:normal_from_3pts p1 p2 p3)) pt)
66.      )
67.      (distance p1 pt)
68.   )
69. )
70. ;;
71. ;;;-------------------------------------------------------------
72. ;;;-------------------------------------------------------------
73. ;;; Returns the coordinates of the projection of point pt
74. ;;; on the plane defined by the points p1 p2 p3.
75.
76. (defun kdub:project_pt (pt p1 p2 p3)
77.   (mapcar '-
78.           pt
79.           (mapcar '(lambda (x) (* x (kdub:elevabovePlane pt p1 p2 p3)))
80.                   (kdub:normal_from_3pts p1 p2 p3)
81.           )
82.   )
83. )
84. ;;;-------------------------------------------------------------
85. ;;;-------------------------------------------------------------
86. ;;
87. (defun kdub:vec:points->vector (3dPt1 3dPt2) (mapcar '- 3dPt2 3dPt1))
88. ;;
89. ;;;-------------------------------------------------------------
90. ;;;-------------------------------------------------------------
91. ;;
92. ;; VXS Multiply a vector by a scalar
93. ;;
94. ;; Arguments : a vector and a real
95. ;;
96. (defun vxs (v s) (mapcar (function (lambda (x) (* x s))) v))
97. ;;
98. ;;;-------------------------------------------------------------
99. ;;;-------------------------------------------------------------
100. ;;; -- Function GetPathVector
101. ;;; Returns the vector at start point from a given object.
102. ;;; Arguments [Type]:
103. ;;;   Obj = Object [VLA-OBJECT]
104. ;;; Return [Type]:
105. ;;;   > Vector [LIST]
106. ;;; Notes:
107. ;;;   None
108. ;;
109. (defun kdub:vec:getpathvector (vlaObj)
110.   (kdub:vec:normalize
111.   )
112. )
113. ;;
114. ;;;-------------------------------------------------------------
115. ;;;-------------------------------------------------------------
116. ;;; -- Function KDUB:VecNormalize
117. ;;; Normalizes Vec to unit length (1.0).
118. ;;; Arguments [Type]:
119. ;;;   Vec = Vector [LIST]
120. ;;; Return [Type]:
121. ;;;   > Normalized vector [LIST]
122. ;;; Notes:
123. ;;;   None
124. ;;
125. (defun kdub:vec:normalize (Vector / Coefficient)
126.   (setq Coefficient (/ 1.0 (kdub:vec:calculatelength Vector)))
127.   (kdub:vec:zeroaxisfuzz (mapcar '* Vector (list Coefficient Coefficient Coefficient))
128.   )
129. )
130. ;;
131. ;;;-------------------------------------------------------------
132. ;;;-------------------------------------------------------------
133. ;;
134. ;;
135. ;;; -- Function KDUB:eVecLen
136. ;;; Calculates length of a vector.
137. ;;; Arguments [Type]:
138. ;;;   Vec = Vector [LIST]
139. ;;; Return [Type]:
140. ;;;   > Length of the vector [REAL]
141. ;;; Notes:
142. ;;;   None
143. ;;
144. (defun kdub:vec:calculatelength (Vector)
145.   (car (kdub:vec:zeroaxisfuzz
146.          (list (sqrt (apply '+ (mapcar '(lambda (a) (* a a)) Vector))))
147.        )
148.   )
149. )
150. ;;
151. ;;;-------------------------------------------------------------
152. ;;;-------------------------------------------------------------
153. ;;
154. ;;; Return the cross product, vec1 cross vec2
155. (defun kdub:vec:crossproduct (vec1 vec2)
157.         (- (* (caddr vec1) (car vec2)) (* (car vec1) (caddr vec2)))
158.         (- (* (car vec1) (cadr vec2)) (* (cadr vec1) (car vec2)))
159.   )
160. )
161.
162.
163. ;;
164. ;;;-------------------------------------------------------------
165. ;;;-------------------------------------------------------------
166. ;;
167. (defun kdub:vec:vla3dpoint->list (vla3dPoint)
168.   (kdub:vec:zeroaxisfuzz (vlax-safearray->list (vlax-variant-value vla3dPoint)))
169. )
170. ;;;------------------------------------------------------------------
171. ;;;------------------------------------------------------------------
172. ;;; arcsine (inverse sine) accepts an argument in the range
173. ;;; -1.0 to 1.0 inclusive, and returns an angle in radians in
174. ;;; the range -pi/2 to pi/2 inclusive.
175. (defun kdub:asin (num)
176.   (cond
177.     ((> (abs num) 1.0)
178.      (alert (strcat " Arc-sine error in (KDUB:asin ." "\n Spitting the dummy"))
179.      (exit)
180.     )
181.     ((zerop num) 0.0)
182.     ((= num 1.0) kglobal:rad90)
183.     ((= num -1.0) (- kglobal:rad90))
184.     (t (atan num (sqrt (- 1.0 (* num num)))))
185.   )
186. )
187. ;;;------------------------------------------------------------------
188. ;;;------------------------------------------------------------------
189. ;;; arccosine (inverse cosine)
190. ;;; argument in the range -1.0 to 1.0 inclusive
191. ;;; returns an angle in radians in the range pi to 0 inclusive
192. ;;;
193. (defun kdub:acos (num)
194.   (if (zerop num)
195.     (* pi 0.5)
196.     (atan (sqrt (- 1.0 (* num num))) num)
197.   )
198. )
199. ;;;------------------------------------------------------------------
200. ;;;------------------------------------------------------------------
201. ;;;
202. ;;; (KDUB:defineconstant '*max_Real* 1.797693134862315e+308)
203. ;; pass num as radian.
204. (defun kdub:tan (num / cosnum)
205.   (cond ((zerop (rem num pi)) 0.0)
206.         ((zerop (rem num (* pi 0.5))) *max_real*)
207.         ((zerop (setq cosnum (cos num))) *max_real*)
208.         (t (/ (sin num) cosnum))
209.   )
210. )
211. ;;;------------------------------------------------------------------
212. ;;;------------------------------------------------------------------
213. ;;;
214.
215.
216.
217.
kdub, kdub_nz in other timelines.
Perfection is not optional.
Everything will work just as you expect it to, unless your expectations are incorrect.
Discipline: None at all.

#### Kerry

• Mesozoic relic
• Seagull
• Posts: 11654
• class keyThumper<T>:ILazy<T>
##### Re: passing vectors to a function
« Reply #41 on: July 11, 2014, 08:14:42 AM »
And these helpers

Code - Auto/Visual Lisp: [Select]
1. ;;;------------------------------------------------------------------
2. ;;;------------------------------------------------------------------
3. ;;;
4. (defun kdub:protect-assign (symbollist)
5.   (eval (list 'pragma (list 'quote (list (cons 'protect-assign symbollist)))))
6. )
7. ;;;------------------------------------------------------------------
8. ;;;------------------------------------------------------------------
9. ;;;
10. (defun kdub:unprotect-assign (symbollist)
11.   (eval (list 'pragma (list 'quote (list (cons 'unprotect-assign symbollist)))))
12. )
13. ;;;------------------------------------------------------------------
14. ;;;------------------------------------------------------------------
15. ;;;
16. (defun kdub:defineconstant (symbolname symbolvalue)
17.   (kdub:unprotect-assign (list symbolname))
18.   (set symbolname symbolvalue)
19.   (kdub:protect-assign (list symbolname))
20.   (princ)
21. )
22.
23. (kdub:defineconstant 'kglobal:pix2 (* pi 2))
24. (kdub:defineconstant 'kglobal:pi/2 (* pi 0.5))
25. (kdub:defineconstant 'kglobal:pi/4 (* pi 0.25))
26. (kdub:defineconstant 'kglobal:pi/8 (* kglobal:pi/4 0.5))
27.
28. (kdub:defineconstant 'kglobal:epsilon 1e-14)
29. (kdub:defineconstant 'kglobal:max-real 1.797693134862315e+308)
30.                                              ;double, 64-bit
31. (kdub:defineconstant 'kglobal:min-real 2.2250738585072014e-308)
32. (kdub:defineconstant 'kglobal:max-integer 2147483647)
33.                                              ; signed longint, 32-bit
34.
35. (kdub:defineconstant 'kglobal:rad00 0.00)
36. (kdub:defineconstant 'kglobal:rad15 (* pi (/ 15 180.0)))
37. (kdub:defineconstant 'kglobal:rad30 (* pi (/ 30 180.0)))
38. (kdub:defineconstant 'kglobal:rad45 (* pi 0.25))
39. (kdub:defineconstant 'kglobal:rad60 (* pi (/ 60 180.0)))
40. (kdub:defineconstant 'kglobal:rad90 (* pi 0.50))
41. (kdub:defineconstant 'kglobal:rad135 (* pi 0.75))
42. (kdub:defineconstant 'kglobal:rad180 pi)
43. (kdub:defineconstant 'kglobal:rad225 (* pi 1.25))
44. (kdub:defineconstant 'kglobal:rad270 (* pi 1.50))
45. (kdub:defineconstant 'kglobal:rad315 (* pi 1.75))
46. (kdub:defineconstant 'kglobal:rad360 (* pi 2.00))
47.
kdub, kdub_nz in other timelines.
Perfection is not optional.
Everything will work just as you expect it to, unless your expectations are incorrect.
Discipline: None at all.

#### JohnK

• Seagull
• Posts: 10626
##### Re: passing vectors to a function
« Reply #42 on: July 11, 2014, 08:21:42 AM »
TheSwamp.org (serving the CAD community since 2003)
Member location map - Add yourself

Donate to TheSwamp.org

#### Shay Gaghe

• Newt
• Posts: 89
##### Re: passing vectors to a function
« Reply #43 on: July 11, 2014, 08:25:49 AM »
Thanks
it will be enjoyable trip!

#### Kerry

• Mesozoic relic
• Seagull
• Posts: 11654
• class keyThumper<T>:ILazy<T>
##### Re: passing vectors to a function
« Reply #44 on: July 11, 2014, 08:27:35 AM »
Thanks
it will be enjoyable trip!

You're welcome. Thanks for playing along.

//------------