1234567891011121314151617181920212223242526272829303132 |
- """Compute main axes of a transformation matrix"""
- from vedo import *
- settings.default_font = "Calco"
- M = np.random.rand(3,3) - 0.5
- A = LinearTransform(M)
- print(A)
- print(M)
- p = [1, 2, 3]
- pt = Point(p)
- print("---------- All these should be equal:")
- print("M @ [1,2,3] =", M @ p)
- print("A([1,2,3]) =", A(p))
- print("A(pt).vertices =", A(pt).vertices[0])
- maxes = A.compute_main_axes()
- arr1 = Arrow([0,0,0], maxes[0]).c('r', 0.5)
- arr2 = Arrow([0,0,0], maxes[1]).c('g', 0.5)
- arr3 = Arrow([0,0,0], maxes[2]).c('b', 0.5)
- sphere1 = Sphere().wireframe().lighting('off').alpha(0.2)
- sphere1.cmap('hot', sphere1.vertices[:,2])
- sphere2 = sphere1.clone().apply_transform(A)
- show([[sphere1, __doc__],
- [sphere2, arr1, arr2, arr3, str(M)]],
- N=2, axes=1, bg='bb').close()
|