summaryrefslogtreecommitdiff
path: root/tests/test_transformation.py
blob: b313359d9e98f021309e6aa5e0d3242ab31a0243 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#!/usr/bin/python
from skdb.geom import *
from skdb.gui import *
#test that a shape can be transformed in the same way that a make_vertex object is transformed
#test also gp_Pnt.Transform and BRepBuilderAPI_Transform
#do the points line up? vert2 and obj should be the same.
#now use SetTransformation

#TODO use TopExp to find the point of the arrow, then compare gp_Pnt's

if __name__ == "__main__":
    trsf1 = gp_Trsf()
    my_ax3 = gp_Ax3(gp_Ax2(gp_Pnt(0,2.1,0), gp_Dir(-1,1,1)))
    trsf1.SetTransformation(my_ax3)

    point2 = Point(0,0,0)
    point2.Transform(trsf1)
    vert2 = make_vertex(point2)

    #apply BRepBuilderAPI_Transform to vertex1
    vert1 = make_vertex(Point(0,2.1,0))
    obj = BRepBuilderAPI_Transform(vert1, trsf1, True).Shape()

    my_ax = gp_Ax2(gp_Pnt(0,2.1,0), gp_Dir(-1,1,1))
    my_ax.SetDirection(gp_Dir(-1,0,0))
    my_ax = gp_Ax3(my_ax)
    print my_ax.Direct() #when my_ax is gp_Ax3
    blahr = gp_Trsf(); blahr.SetTransformation(my_ax)
    arrow3 = Arrow().to(dest=blahr) #tests BRepBuilderAPI_Transform

    display.DisplayShape(make_vertex(Point(0,0,0))) #display origin marker
    display.DisplayShape(obj) #vert1 but with BRepBuilderAPI_Transform applied to it
    display.DisplayColoredShape(vert2,'GREEN') #make_vertex(point2)
    display.DisplayColoredShape(arrow3,'RED') #make_arrow_to

    start_display()

    pt1 = gp_Pnt(0,0,-1) #0,0,-1
    trsf1 = gp_Trsf()
    normal_vec = gp_Dir(0,1,0)
    x_vec = gp_Dir(1,0,0)
    trsf1.SetTransformation(gp_Ax3(gp_Ax2(gp_Pnt(0,0,0), gp_Dir(0,1,0), gp_Dir(1,0,0)))) #0,0,-1 --> 0,1,0
    print pt1.Transformed(trsf1).XYZ().X(); pt1.Transformed(trsf1).XYZ().Y(); pt1.Transformed(trsf1).XYZ().Z() #0, 1, 0


def tlater(point=Point(1,0,0), origin=Point(0,0,0), normal=Direction(0,0,1), vx=Direction(1,0,0)):
    '''
    constructs a transformation
    point = Point(point)
    origin = Point(origin)
    normal_vec = Direction(normal)
    x_vec = Direction(vx)
    '''
    point = Point(point)
    origin = Point(origin)
    normal_vec = Direction(normal)
    x_vec = Direction(vx)
    trsf = gp_Trsf()
    trsf.SetTransformation(gp_Ax3(gp_Ax2(origin, normal_vec, x_vec)))
    resulting_point = point.Transformed(trsf)
    print "\t(%s, %s, %s)" % (resulting_point.XYZ().X(), resulting_point.XYZ().Y(), resulting_point.XYZ().Z())
    return resulting_point

def big_test():
    for a in [0, 1, -1]:
        for b in [0, 1, -1]:
            for c in [0, 1, -1]:
                for d in [0, 1, -1]:
                    for e in [0, 1, -1]:
                        for f in [0, 1, -1]:
                            try:
                                normal = Direction(a,b,c)
                                vx = Direction(d,e,f)
                                print "normal=%s, vx=%s" % ([a,b,c], [d,e,f]) #% (normal, vx) <-- doesn't produce the right results
                                tlater(normal=normal, vx=vx)
                            except RuntimeError, v:
                                True #oops?
    return