471,354 Members | 2,096 Online

# Transforming the Point using list 440 256MB
Hi,

I have a Point and Transfoirmation matrix.How to translate the Point from one Coordinate system to other using list .

Point1 = [1,2,3]

#Transformation Matrix
T =
[ [1,0,0],
[0,1,0],
[0,0,1]]

I have to get the

TransPoint = Point1 * T

Other than list,is there any other approach is possible to get the transformation of point

Thanks
PSB
Jun 6 '07 #1
5 1650 bvdet
2,851 Expert Mod 2GB
Hi,

I have a Point and Transfoirmation matrix.How to translate the Point from one Coordinate system to other using list .

Point1 = [1,2,3]

#Transformation Matrix
T =
[ [1,0,0],
[0,1,0],
[0,0,1]]

I have to get the

TransPoint = Point1 * T

Other than list,is there any other approach is possible to get the transformation of point

Thanks
PSB
The transformation matrix you have defined (T) is the standard orthonormal basis for R3. What is the basis for Point 1? Given an orthonormal basis in R3, a point relative to that basis can be translated to the standard basis :
Expand|Select|Wrap|Line Numbers
1. from macrolib.PointPlane3D import Point
2.
3. def determinant3(a,b,c,m,n,k,u,v,w):
4.         return a*n*w + b*k*u + m*v*c - c*n*u - b*m*w - a*k*v
5.
6. def translate(A, B, N, pt):
7.
8.     X,Y,Z = tuple(pt)
9.
10.     '''
11.     Normalize pt
12.     '''
13.     M = (X*X + Y*Y + Z*Z)**0.5
14.     try:
15.         X1, Y1, Z1 = X/M, Y/M, Z/M
16.     except:
17.         X1, Y1, Z1 = 0.0, 0.0, 0.0
18.
19.     D = determinant3(A.x, A.y, A.z, N.x, N.y, N.z, B.x, B.y, B.z)
20.     Dx = determinant3(X1, A.y, A.z, Z1, N.y, N.z, Y1, B.y, B.z)
21.     Dy = determinant3(A.x, X1, A.z, N.x, Z1, N.z, B.x, Y1, B.z)
22.     Dz = determinant3(A.x, A.y, X1, N.x, N.y, Z1, B.x, B.y, Y1)
23.
24.     '''
25.     Calculate the resultant unit vector 'R1'
26.     '''
27.     R1 = Point(Dx/D, Dy/D, Dz/D)
28.
29.     '''
30.     Return the global coordinate vector
31.     '''
32.     return R1*M
33.
34. # local basis 'X'
35. a = Point(0.462352, 0.850215, 0.251725)
36. # local basis 'Y'
37. b = Point(0.791086, -0.267295, -0.550215)
38. # local basis 'Z'
39. n = Point(-0.400516, 0.453529, -0.796177)
40.
41. print repr(translate(a, b, n, Point(12,12,12)))
42.
43. '''
44. >>> Point(10.235071, 12.437392, -13.136013)
45. '''
Please, check my math!

Given three non-collinear points in R3, you can define an orthonormal basis. Let's say point1 is the basis origin, point2 defines the X axis with respect to the origin, and point 3, in combination with p1 and p2, defines the plane:
Expand|Select|Wrap|Line Numbers
1. >>> c.p1
2. Point(144.000000, 256.000000, 300.000000)
3. >>> c.p2
4. Point(324.000000, 587.000000, 398.000000)
5. >>> c.p3
6. Point(645.000000, 400.000000, 130.000000)
7. >>> a = BasisTransToGlobal(c.p1, c.p2, c.p3, Point(12,12,12))
8. >>> a.R
9. Point(154.235075, 268.437392, 286.863999)
10. >>> a.R-c.p1
11. Point(10.235075, 12.437392, -13.136001)
12. >>>
BTW - This should have been posted to Python Forum instead of Python Articles.
Jun 6 '07 #2
bartonc
6,596 Expert 4TB
Moved from Python Articles

Please be careful not to post questions in the Articles section.

Thanks you for your co-operation in this matter.
Jun 7 '07 #3
Motoma
3,237 Expert 2GB
Jinkies bvdet! That was amazing!
Jun 7 '07 #4
bvdet
2,851 Expert Mod 2GB
Jinkies bvdet! That was amazing!
Nuthin' to it Motoma. I've been working on this module for about a year (in my spare time of course).
Jun 8 '07 #5
bvdet
2,851 Expert Mod 2GB
Here's the return trip:
Expand|Select|Wrap|Line Numbers
1. def transToLocal(pt, m):
2.     '''
3.     pt - point object in the standard R3 orthonormal basis
4.     vA - local 'X' unit vector
5.     vB - local 'Y' unit vector
6.     vN - local 'Z' unit vector
7.
8.     'dot()' is a Point object method that returns the dot product
9.
10.     Return the local coordinate
11.     Vector projection of: pt along vA, pt along vB, pt along vN
12.     '''
13.     return Point(pt.dot(Point(*m)), \
14.                  pt.dot(Point(*m)), \
15.                  pt.dot(Point(*m)))
16.
17. # Local basis translation matrix
18. m = [(0.462352, 0.850215, 0.251725), \
19.      (0.791086, -0.267295, -0.550215), \
20.      (-0.400516, 0.453529, -0.796177)]
21. # Point object in standard orthonormal basis
22. pt = Point(10.235071, 12.437392, -13.136013)
23.
24. print repr(transToLocal(pt, m))
25. # Point(12.000000, 12.000000, 12.000000)
Jun 8 '07 #6

 34 posts views Thread by jblazi | last post: by reply views Thread by David Furey | last post: by 5 posts views Thread by Jody Greening | last post: by 4 posts views Thread by Showjumper | last post: by 3 posts views Thread by Sergio Otoya | last post: by 4 posts views Thread by Cathie | last post: by 6 posts views Thread by Adam Clauss | last post: by 1 post views Thread by VINITAG | last post: by 5 posts views Thread by james_027 | last post: by reply views Thread by Yacine Si Tayeb | last post: by reply views Thread by KayQ | last post: by reply views Thread by sofiatarhonska | last post: by reply views Thread by leo001 | last post: by reply views Thread by chloesad91 | last post: by reply views Thread by chloesad91 | last post: by reply views Thread by kjhyder | last post: by reply views Thread by YTAIGamer | last post: by reply views Thread by XIAOLAOHU | last post: by