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 | } |