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