Statistics
| Revision:

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

History | View | Annotate | Download (2.17 KB)

1 20 jmorell
package org.cresques.px.dxf;
2
3
import java.awt.geom.Point2D;
4
import java.lang.Math;
5 22 jmorell
import org.cresques.geo.Point3D;
6 20 jmorell
7
public class DxfCalXtru {
8 22 jmorell
        public static Point2D CalculateXtru(Point3D coord_in, Point3D xtru) {
9 20 jmorell
                Point2D coord_out = new Point2D.Double();
10
11 42 luisw
        double dxt0 = 0D, dyt0 = 0D, dzt0 = 0D;
12 20 jmorell
        double dvx1, dvx2, dvx3;
13
        double dvy1, dvy2, dvy3;
14
        double dmod, dxt, dyt, dzt;
15
16 42 luisw
        double aux = 1D/64D; //LWS
17 20 jmorell
        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 22 jmorell
        dzt0 = coord_in.getZ();
23 20 jmorell
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
}