Branch data Line data Source code
1 : : #include "SMF_State.hpp"
2 : : #include <cstring>
3 : : #include <cstdlib>
4 : :
5 : : // static inline int streq(const char *a,const char *b) { return std::strcmp(a,b)==0; }
6 : :
7 : : namespace moab
8 : : {
9 : :
10 : 4 : SMF_State::SMF_State( const SMF_ivars& ivar, SMF_State* next )
11 : : {
12 : 2 : first_vertex = ivar.next_vertex;
13 [ - + ]: 2 : if( next )
14 : : {
15 : 0 : vertex_correction = next->vertex_correction;
16 : 0 : xform = next->xform;
17 : : }
18 : : else
19 : : {
20 : 2 : vertex_correction = 0;
21 [ + - ]: 2 : AffineXform identity;
22 [ + - ]: 2 : xform = identity;
23 : : }
24 : 2 : }
25 : :
26 : 2601 : void SMF_State::vertex( double v[3] )
27 : : {
28 : 2601 : xform.xform_point( v );
29 : 2601 : }
30 : :
31 : 0 : void SMF_State::normal( double nrm[3] )
32 : : {
33 : 0 : xform.xform_vector( nrm );
34 : 0 : }
35 : :
36 : 5000 : void SMF_State::face( int* verts, const SMF_ivars& ivar )
37 : : {
38 [ + + ]: 20000 : for( int i = 0; i < 3; i++ )
39 : : {
40 [ - + ]: 15000 : if( verts[i] < 0 )
41 : 0 : verts[i] += ivar.next_vertex;
42 : : else
43 : 15000 : verts[i] += vertex_correction + ( first_vertex - 1 );
44 : : }
45 : 5000 : }
46 : :
47 : 0 : void SMF_State::set_vertex_correction( int i )
48 : : {
49 : 0 : vertex_correction = i;
50 : 0 : }
51 : :
52 : 0 : void SMF_State::mmult( const AffineXform& M )
53 : : {
54 : : // initially, we tried this:
55 : : // xform.accumulate(M);
56 : : // maybe we should do M.accumulate(xform)
57 [ # # ]: 0 : AffineXform tmp = M;
58 [ # # ]: 0 : tmp.accumulate( xform );
59 [ # # ]: 0 : xform = tmp;
60 : 0 : }
61 : :
62 : 0 : void SMF_State::mload( const AffineXform& M )
63 : : {
64 : 0 : xform = M;
65 : 0 : }
66 : :
67 [ + - ][ + - ]: 228 : } // namespace moab
|