Statistics
| Revision:

svn-gvsig-desktop / tags / Root_CqCMSGisPlanet / libraries / libCq CMS for java.old / src / org / cresques / px / dxf / DxfCalXtru.java @ 1933

History | View | Annotate | Download (2.17 KB)

1
package org.cresques.px.dxf;
2

    
3
import java.awt.geom.Point2D;
4
import java.lang.Math;
5
import org.cresques.geo.Point3D;
6

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

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

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

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

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

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

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

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

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