|
|
@@ -11,32 +11,36 @@ import java.util.Map;
|
|
11
|
11
|
|
|
12
|
12
|
public class AlgAlgorithm {
|
|
13
|
13
|
|
|
|
14
|
+ /**
|
|
|
15
|
+ * 打点
|
|
|
16
|
+ *
|
|
|
17
|
+ * @param
|
|
|
18
|
+ */
|
|
|
19
|
+
|
|
|
20
|
+
|
|
|
21
|
+ public static void main(String[] args) {
|
|
|
22
|
+
|
|
|
23
|
+ }
|
|
14
|
24
|
|
|
15
|
25
|
//圆筒仓的直径
|
|
16
|
|
- static double diameter = 12;
|
|
|
26
|
+ //double diameter = 4;
|
|
17
|
27
|
//AC 是设备到地面的高
|
|
18
|
|
- double high = 35;
|
|
|
28
|
+ //double high = 35;
|
|
19
|
29
|
|
|
20
|
30
|
|
|
21
|
|
- static double h1 = 6; //h1 圆锥的高
|
|
22
|
|
- static double h2 = 3; // h2 水平地面到圆锥尖的高
|
|
23
|
|
- public static List<Double> zNums = new ArrayList<Double>();
|
|
24
|
31
|
/**
|
|
25
|
32
|
* 算法 产生 待检测点。
|
|
26
|
33
|
*
|
|
27
|
|
- * @param high 高
|
|
|
34
|
+ * @param diameter 直径
|
|
|
35
|
+ * @param high 高
|
|
28
|
36
|
* @return
|
|
29
|
37
|
*/
|
|
30
|
|
- public static String getAveragePosition(double diameter,double high) {
|
|
|
38
|
+ public static String getAveragePosition(double diameter, double high) {
|
|
|
39
|
+
|
|
31
|
40
|
|
|
32
|
|
- if(diameter==0){
|
|
33
|
|
- diameter= diameter;
|
|
34
|
|
- }
|
|
35
|
|
- if(high==0){
|
|
36
|
|
- high= high;
|
|
37
|
|
- }
|
|
38
|
41
|
StringBuffer sb = new StringBuffer();
|
|
39
|
42
|
|
|
|
43
|
+
|
|
40
|
44
|
double x1 = 0;
|
|
41
|
45
|
double y1 = 0;
|
|
42
|
46
|
//打出来三角形的底边AB 实际是平面上点的斜边
|
|
|
@@ -109,6 +113,7 @@ public class AlgAlgorithm {
|
|
109
|
113
|
sb.append(Math.round(vertical_step));
|
|
110
|
114
|
sb.append(";");
|
|
111
|
115
|
// sb.append("\n");
|
|
|
116
|
+
|
|
112
|
117
|
}
|
|
113
|
118
|
}
|
|
114
|
119
|
|
|
|
@@ -125,19 +130,30 @@ public class AlgAlgorithm {
|
|
125
|
130
|
// sb.append("\n");
|
|
126
|
131
|
//System.out.println(Math.round(level_step)+","+Math.round(vertical_step)+"");
|
|
127
|
132
|
//System.out.println(sb);
|
|
|
133
|
+
|
|
128
|
134
|
return sb.toString();
|
|
129
|
135
|
}
|
|
130
|
136
|
|
|
|
137
|
+ public List<Double> getzNums() {
|
|
|
138
|
+ return zNums;
|
|
|
139
|
+ }
|
|
|
140
|
+
|
|
|
141
|
+ public void setzNums(List<Double> zNums) {
|
|
|
142
|
+ this.zNums = zNums;
|
|
|
143
|
+ }
|
|
131
|
144
|
|
|
132
|
145
|
/**
|
|
133
|
146
|
* 激光测距 给三维
|
|
134
|
|
- *
|
|
135
|
147
|
* @param map
|
|
136
|
148
|
* @return
|
|
137
|
149
|
*/
|
|
|
150
|
+ static List<Double> zNums = new ArrayList<Double>();
|
|
|
151
|
+
|
|
|
152
|
+
|
|
138
|
153
|
|
|
139
|
154
|
public static String sxy(Map<Double, AngleObject> map) {
|
|
140
|
155
|
|
|
|
156
|
+
|
|
141
|
157
|
double d = 30;//圆筒仓的直径
|
|
142
|
158
|
double AC = 50;//AC是设备到地面的高
|
|
143
|
159
|
double B1C = 0;//设备和粮面点之间的距离
|
|
|
@@ -155,6 +171,8 @@ public class AlgAlgorithm {
|
|
155
|
171
|
// map.put(3.0, angleObject);
|
|
156
|
172
|
|
|
157
|
173
|
//list集合用于存放 z值
|
|
|
174
|
+
|
|
|
175
|
+
|
|
158
|
176
|
for (Double verticalAngle : map.keySet()) {
|
|
159
|
177
|
AngleObject angleObject1 = map.get(verticalAngle);
|
|
160
|
178
|
//将垂直的角度转化为弧度
|
|
|
@@ -201,7 +219,6 @@ public class AlgAlgorithm {
|
|
201
|
219
|
y = y + d / 2;
|
|
202
|
220
|
|
|
203
|
221
|
sb.append("[" + x + "," + y + "," + z + "],");
|
|
204
|
|
-
|
|
205
|
222
|
zNums.add(z);
|
|
206
|
223
|
}
|
|
207
|
224
|
}
|
|
|
@@ -213,10 +230,11 @@ public class AlgAlgorithm {
|
|
213
|
230
|
|
|
214
|
231
|
/**
|
|
215
|
232
|
* 计算体积
|
|
216
|
|
- * @param zList 粮面高集合
|
|
217
|
233
|
*/
|
|
218
|
234
|
public static void calculateVolume(List<Double> zList) {
|
|
219
|
|
-
|
|
|
235
|
+ double d = 30; //直径
|
|
|
236
|
+ double h1 = 6; //h1 圆锥的高
|
|
|
237
|
+ double h2 = 3; // h2 水平地面到圆锥尖的高
|
|
220
|
238
|
//z值的集合
|
|
221
|
239
|
|
|
222
|
240
|
//17.1 18.3 19.2 18.3 20.1 16.4 19.8 16.7 19.0 18.9
|
|
|
@@ -239,9 +257,9 @@ public class AlgAlgorithm {
|
|
239
|
257
|
* h2 水平地面到圆锥尖的高
|
|
240
|
258
|
*/
|
|
241
|
259
|
|
|
242
|
|
- double v1 = 3.14 * (diameter / 2) * (diameter / 2) * (sum / zList.size());
|
|
243
|
|
- double v2 = 3.14 * (diameter / 2) * (diameter / 2) * (zMin - h2 - h1);
|
|
244
|
|
- double v3 = (3.14 * (diameter / 2) * (diameter / 2) * h1) / 3;
|
|
|
260
|
+ double v1 = 3.14 * (d / 2) * (d / 2) * (sum / zList.size());
|
|
|
261
|
+ double v2 = 3.14 * (d / 2) * (d / 2) * (zMin - h2 - h1);
|
|
|
262
|
+ double v3 = (3.14 * (d / 2) * (d / 2) * h1) / 3;
|
|
245
|
263
|
double vv = v1 + v2 + v3;
|
|
246
|
264
|
BigDecimal bdv = new BigDecimal(vv);
|
|
247
|
265
|
double v = bdv.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|