Statistics
| Revision:

svn-gvsig-desktop / trunk / libraries / libCq CMS for java.old / src / org / cresques / px / dxf / DxfCalXtru.java @ 20

History | View | Annotate | Download (2.16 KB)

1
package org.cresques.px.dxf;
2

    
3
import java.awt.geom.Point2D;
4
import java.lang.Math;
5

    
6
public class DxfCalXtru {
7
        public static Point2D CalculateXtru(Point2D coord_in, Point3D xtru) {
8
                Point2D coord_out = new Point2D.Double();
9
                
10
        double dxt0 = 0, dyt0 = 0, dzt0 = 0;
11
        double dvx1, dvx2, dvx3;
12
        double dvy1, dvy2, dvy3;
13
        double dmod, dxt, dyt, dzt;
14
        
15
        double aux = ((double)1.0)/((double)64.0); //LWS
16
        double aux1 = Math.abs(xtru.getX());
17
        double aux2 = Math.abs(xtru.getY());
18
        
19
        dxt0 = coord_in.getX();
20
        dyt0 = coord_in.getY();
21
        //dzt0 = coord_in.z;
22
        
23
        double xtruX, xtruY, xtruZ;
24
        xtruX = xtru.getX();
25
        xtruY = xtru.getY();
26
        xtruZ = xtru.getZ();
27

    
28
        if ((aux1 < aux) && (aux2 < aux)) {
29
            dmod = Math.sqrt(xtruZ*xtruZ + xtruX*xtruX);
30
            dvx1 = xtruZ / dmod;
31
            dvx2 = 0;
32
            dvx3 = -xtruX / dmod;
33
        } else {
34
            dmod = Math.sqrt(xtruY*xtruY + xtruX*xtruX);
35
            dvx1 = -xtruY / dmod;
36
            dvx2 = xtruX / dmod;
37
            dvx3 = 0;
38
        }
39

    
40
        dvy1 = xtruY*dvx3 - xtruZ*dvx2;
41
        dvy2 = xtruZ*dvx1 - xtruX*dvx3;
42
        dvy3 = xtruX*dvx2 - xtruY*dvx1;
43

    
44
        dmod = Math.sqrt(dvy1*dvy1 + dvy2*dvy2 + dvy3*dvy3);
45

    
46
        dvy1 = dvy1 / dmod;
47
        dvy2 = dvy2 / dmod;
48
        dvy3 = dvy3 / dmod;
49

    
50
        dxt = dvx1*dxt0 + dvy1*dyt0 + xtruX*dzt0;
51
        dyt = dvx2*dxt0 + dvy2*dyt0 + xtruY*dzt0;
52
        dzt = dvx3*dxt0 + dvy3*dyt0 + xtruZ*dzt0;
53

    
54
        coord_out.setLocation(dxt, dyt);
55
        //coord_out.z = dzt;
56

    
57
        dxt0 = 0;
58
        dyt0 = 0;
59
        dzt0 = 0;
60
        
61
                return coord_out;
62
        }
63
        
64
    public static double cosDeg(double alfa) {
65
            final double toRad = Math.PI/(double)180.0;
66
            return Math.cos(alfa*toRad);
67
    }
68

    
69
    public static double sinDeg(double alfa) {
70
            final double toRad = Math.PI/(double)180.0;
71
            return Math.sin(alfa*toRad);
72
    }
73
    
74
    public static void CalculateArc(double[] dat, double r, double angulo) {
75
            dat[1] = dat[1] + r * Math.sin(angulo*Math.PI/(double)180.0);
76
            dat[0] = dat[0] + r * Math.cos(angulo*Math.PI/(double)180.0);
77
    }
78
    
79
}