Как ты и говорил создал класс родителя. Как думаешь что еще надо доработать? Если кого нибудь видит мои ошибки, подскажите как лучше их исправить.
Java | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| public abstract class Figure {
private int x,y,z;
public int getCoorX(){
return x;
}
public void setCoorX(int x) {
this.x = x;
}
public int getCoorY(){
return y;
}
public void setCoorY(int y) {
this.y = y;
}
public int getCoorZ(){
return z;
}
public void setCoorZ(int z) {
this.z = z;
}
public Figure (int x, int y, int z){
this.x = x;
this.y = y;
this.z = z;
}
} |
|
Остальные классы
Java | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
| import static java.lang.Math.*;
public class TriPrism extends Figure {
private double VPrism, SBase, SPrism, h;
public TriPrism(int x, int y, int z){
super(x,y,z);
}
public void toSearchVPrism(TriPrism A, TriPrism B, TriPrism C, TriPrism A1, TriPrism B1, TriPrism C1){
double AB = sqrt(pow(A.getCoorX()-B.getCoorX(),2)+pow(A.getCoorY()-B.getCoorY(),2)+pow(A.getCoorZ()-B.getCoorZ(),2)); // Длина вектора AB у основания
double BC = sqrt(pow(B.getCoorX()-C.getCoorX(),2)+pow(B.getCoorY()-C.getCoorY(),2)+pow(B.getCoorZ()-C.getCoorZ(),2)); // Длина вектора AB у основания
double AC = sqrt(pow(A.getCoorX()-C.getCoorX(),2)+pow(A.getCoorY()-C.getCoorY(),2)+pow(A.getCoorZ()-C.getCoorZ(),2)); // Длина вектора AB у основания
double p = (AB + BC + AC)/2;
SBase = sqrt((p-AB)*(p-BC)*(p-AC)*p);
System.out.println("\nПлощадь основания призмы = " + SBase); // Площадь основания призмы
if (((A.getCoorX()&A.getCoorY()) == (A1.getCoorX()&A1.getCoorY()))&&((B.getCoorX()&B.getCoorY()) == (B1.getCoorX()&B1.getCoorY()))&&((C.getCoorX()&C.getCoorY()) == (C1.getCoorX()&C1.getCoorY()))){
double AA = sqrt(pow((A.getCoorZ()-A1.getCoorZ()),2)); // Высота
h=AA;
System.out.println("Высота призмы = "+AA);
VPrism = SBase * AA; // Нахождения объема призмы
System.out.println("Объем призмы = "+VPrism);
} else{
if ((A.getCoorX()&A.getCoorY()) != (A1.getCoorX()&A1.getCoorY())){
System.out.println("Изменить координаты вершины в точке A1");
}
else if ((B.getCoorX()&B.getCoorY()) != (B1.getCoorX()&B1.getCoorY())){
System.out.println("Изменить координаты вершины в точке B1");
}
else if ((C.getCoorX()&C.getCoorY()) != (C1.getCoorX()&C1.getCoorY())){
System.out.println("Изменить координаты вершины в точке C1");
}
System.out.println("Измените координаты верхних вершин основания, так как мы строим правильную призму!");
}
}
public void toSearchSPrism(TriPrism A, TriPrism B, TriPrism C, TriPrism A1, TriPrism B1, TriPrism C1){
double AB = sqrt(pow(A.getCoorX()-B.getCoorX(),2)+pow(A.getCoorY()-B.getCoorY(),2)+pow(A.getCoorZ()-B.getCoorZ(),2));
double BC = sqrt(pow(B.getCoorX()-C.getCoorX(),2)+pow(B.getCoorY()-C.getCoorY(),2)+pow(B.getCoorZ()-C.getCoorZ(),2));
double AC = sqrt(pow(A.getCoorX()-C.getCoorX(),2)+pow(A.getCoorY()-C.getCoorY(),2)+pow(A.getCoorZ()-C.getCoorZ(),2));
if (((A.getCoorX()&A.getCoorY()) == (A1.getCoorX()&A1.getCoorY()))&&((B.getCoorX()&B.getCoorY()) == (B1.getCoorX()&B1.getCoorY()))&&((C.getCoorX()&C.getCoorY()) == (C1.getCoorX()&C1.getCoorY()))){
SPrism = SBase*2+h*(AB+BC+AC); // Нахождение площади призмы
System.out.println("Площадь призмы = "+SPrism+"\n");
}
}
@Override
public String toString() {
return getCoorX()+","+getCoorY()+","+getCoorZ();
}
} |
|
Java | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
| import static java.lang.Math.*;
public class TriPyramid extends Figure {
private double VPyramid, SPyramid;
TriPyramid(int x, int y, int z){
super(x,y,z);
}
public String toString() {
return getCoorX()+","+getCoorY()+","+getCoorZ();
}
public void toSearchVPyramid(TriPyramid PA, TriPyramid PB, TriPyramid PC, TriPyramid PD){
double[] AB = {PB.getCoorX()-PA.getCoorX(),PB.getCoorY()-PA.getCoorY(),PB.getCoorZ()-PA.getCoorZ()}; // Координата вектора AB к основанию
double[] AC = {PC.getCoorX()-PA.getCoorX(),PC.getCoorY()-PA.getCoorY(),PC.getCoorZ()-PA.getCoorZ()}; // Координата вектора AC к основанию
double[] AD = {PD.getCoorX()-PA.getCoorX(),PD.getCoorY()-PA.getCoorY(),PD.getCoorZ()-PA.getCoorZ()}; // Координата вектора AD к основанию
VPyramid = ((AB[0]*AC[1]*AD[2])+(AB[1]*AC[2]*AD[0])+(AB[2]*AC[0]*AD[1])-(AB[2]*AC[1]*AD[0])-(AB[1]*AC[0]*AD[2])-(AB[0]*AC[2]*AD[1]))/6;
if (VPyramid <0){
VPyramid = 0 - VPyramid;
System.out.println("Объём пирамиды = " +VPyramid);
} else{
System.out.println("Объём пирамиды = " +VPyramid);
}
}
public void toSearchSPyramid(TriPyramid PA, TriPyramid PB, TriPyramid PC, TriPyramid PD){
// Найдем вектора, для правила "Площадь треугольника образованного векторами a и b равна половине модуля векторного произведения этих векторов"
double[] DB = {PB.getCoorX()-PD.getCoorX(),PB.getCoorY()-PD.getCoorY(),PB.getCoorZ()-PD.getCoorZ()}; //
double[] DC = {PC.getCoorX()-PD.getCoorX(),PC.getCoorY()-PD.getCoorY(),PC.getCoorZ()-PD.getCoorZ()};
double[] DA = {PA.getCoorX()-PD.getCoorX(),PA.getCoorY()-PD.getCoorY(),PA.getCoorZ()-PD.getCoorZ()};
double[] CB = {DB[0]-DC[0], DB[1]-DC[1], DB[2]-DC[2]};
double[] CA = {DA[0]-DC[0], DA[1]-DC[1], DA[2]-DC[2]};
// Найдем векторное произведение векторов
double[] C1 = {(DB[1]*DC[2])-(DB[2]*DC[1]), 0-((DB[0]*DC[2])-(DB[2]*DC[0])), ((DB[0]*DC[1])-(DB[1]*DC[0]))};
double[] C2 = {(DB[1]*DA[2])-(DB[2]*DA[1]), 0-((DB[0]*DA[2])-(DB[2]*DA[0])), ((DB[0]*DA[1])-(DB[1]*DA[0]))};
double[] C3 = {(DC[1]*DA[2])-(DC[2]*DA[1]), 0-((DC[0]*DA[2])-(DC[2]*DA[0])), ((DC[0]*DA[1])-(DC[1]*DA[0]))};
double[] C4 = {(CB[1]*CA[2])-(CB[2]*CA[1]), 0-((CB[0]*CA[2])-(CB[2]*CA[0])), ((CB[0]*CA[1])-(CB[1]*CA[0]))};
// Найдем площадь грани
double SP1 = sqrt(pow(C1[0],2)+pow(C1[1],2)+pow(C1[2],2))/2; // Основание
double SP2 = sqrt(pow(C2[0],2)+pow(C2[1],2)+pow(C2[2],2))/2; // Грань DAB
double SP3 = sqrt(pow(C3[0],2)+pow(C3[1],2)+pow(C3[2],2))/2; // Грань DAC
double SP4 = sqrt(pow(C4[0],2)+pow(C4[1],2)+pow(C4[2],2))/2; // Грань CAB
SPyramid = SP1 + SP2 + SP3 + SP4;
System.out.println("Площадь пирамиды = "+SPyramid+"\n");
}
} |
|
Java | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
| import static java.lang.Math.pow;
import static java.lang.Math.sqrt;
public class TriTetra extends Figure {
private double VTetra, STetra;
TriTetra(int x, int y, int z){
super(x,y,z);
}
public void toSearchVTetra(TriTetra PA, TriTetra PB, TriTetra PC, TriTetra PD){
double[] AB = {PB.getCoorX()-PA.getCoorX(),PB.getCoorY()-PA.getCoorY(),PB.getCoorZ()-PA.getCoorZ()}; // Координата вектора AB к основанию
double[] AC = {PC.getCoorX()-PA.getCoorX(),PC.getCoorY()-PA.getCoorY(),PC.getCoorZ()-PA.getCoorZ()}; // Координата вектора AC к основанию
double[] AD = {PD.getCoorX()-PA.getCoorX(),PD.getCoorY()-PA.getCoorY(),PD.getCoorZ()-PA.getCoorZ()}; // Координата вектора AD к основанию
VTetra = ((AB[0]*AC[1]*AD[2])+(AB[1]*AC[2]*AD[0])+(AB[2]*AC[0]*AD[1])-(AB[2]*AC[1]*AD[0])-(AB[1]*AC[0]*AD[2])-(AB[0]*AC[2]*AD[1]))/6;
if (VTetra <0){
VTetra = 0 - VTetra;
System.out.println("Объём тетраэдра = " +VTetra);
} else{
System.out.println("Объём тетраэдра = " +VTetra);
}
}
public void toSearchSTetra(TriTetra PA, TriTetra PB, TriTetra PC, TriTetra PD){
// Найдем вектора, для правила "Площадь треугольника образованного векторами a и b равна половине модуля векторного произведения этих векторов"
double[] DB = {PB.getCoorX()-PD.getCoorX(),PB.getCoorY()-PD.getCoorY(),PB.getCoorZ()-PD.getCoorZ()}; //
double[] DC = {PC.getCoorX()-PD.getCoorX(),PC.getCoorY()-PD.getCoorY(),PC.getCoorZ()-PD.getCoorZ()};
double[] DA = {PA.getCoorX()-PD.getCoorX(),PA.getCoorY()-PD.getCoorY(),PA.getCoorZ()-PD.getCoorZ()};
double[] CB = {DB[0]-DC[0], DB[1]-DC[1], DB[2]-DC[2]};
double[] CA = {DA[0]-DC[0], DA[1]-DC[1], DA[2]-DC[2]};
// Найдем векторное произведение векторов
double[] C1 = {(DB[1]*DC[2])-(DB[2]*DC[1]), 0-((DB[0]*DC[2])-(DB[2]*DC[0])), ((DB[0]*DC[1])-(DB[1]*DC[0]))};
double[] C2 = {(DB[1]*DA[2])-(DB[2]*DA[1]), 0-((DB[0]*DA[2])-(DB[2]*DA[0])), ((DB[0]*DA[1])-(DB[1]*DA[0]))};
double[] C3 = {(DC[1]*DA[2])-(DC[2]*DA[1]), 0-((DC[0]*DA[2])-(DC[2]*DA[0])), ((DC[0]*DA[1])-(DC[1]*DA[0]))};
double[] C4 = {(CB[1]*CA[2])-(CB[2]*CA[1]), 0-((CB[0]*CA[2])-(CB[2]*CA[0])), ((CB[0]*CA[1])-(CB[1]*CA[0]))};
// Найдем площадь грани
double SP1 = sqrt(pow(C1[0],2)+pow(C1[1],2)+pow(C1[2],2))/2; // Основание
double SP2 = sqrt(pow(C2[0],2)+pow(C2[1],2)+pow(C2[2],2))/2; // Грань DAB
double SP3 = sqrt(pow(C3[0],2)+pow(C3[1],2)+pow(C3[2],2))/2; // Грань DAC
double SP4 = sqrt(pow(C4[0],2)+pow(C4[1],2)+pow(C4[2],2))/2; // Грань CAB
STetra = SP1 + SP2 + SP3 + SP4;
System.out.println("Площадь тетраэдра = "+STetra+"\n");
}
public String toString() {
return getCoorX()+","+getCoorY()+","+getCoorZ();
}
} |
|
Java | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
| public class TestFigure {
public static void main(String[] args) {
// TODO Auto-generated method stub
// Призма
TriPrism TestPrism = new TriPrism(0,0,0);
TriPrism A = new TriPrism (54,123,80);
TriPrism B = new TriPrism (21,12,33);
TriPrism C = new TriPrism (34,13,12);
TriPrism A1 = new TriPrism (54,123,33);
TriPrism B1 = new TriPrism (21,12,12);
TriPrism C1 = new TriPrism (34,13,33);
System.out.println("Вершина A("+A+");");
System.out.println("Вершина B("+B+");");
System.out.println("Вершина C("+C+");");
System.out.println("Вершина A1("+A1+");");
System.out.println("Вершина B1("+B1+");");
System.out.println("Вершина C1("+C1+");");
TestPrism.toSearchVPrism(A, B, C, A1, B1, C1);
TestPrism.toSearchSPrism(A, B, C, A1, B1, C1);
// Пирамида
TriPyramid TestPyramid = new TriPyramid(0,0,0);
TriPyramid PA = new TriPyramid(4,12,8); // Вершина
TriPyramid PB = new TriPyramid(21,2,5);
TriPyramid PC = new TriPyramid(9,8,1);
TriPyramid PD = new TriPyramid(34,34,32);
System.out.println("Вершина A("+PA+");");
System.out.println("Вершина B("+PB+");");
System.out.println("Вершина C("+PC+");");
System.out.println("Вершина D("+PD+");");
TestPyramid.toSearchVPyramid(PA, PB, PC, PD); // Проверка [url]http://ru.onlinemschool.com/math/assistance/vector/pyramid_volume/[/url]
TestPyramid.toSearchSPyramid(PA, PB, PC, PD);
// Тетраэдр
TriTetra TestTetra = new TriTetra(0,0,0);
TriTetra TA = new TriTetra(1,2,1);
TriTetra TB = new TriTetra(2,-3,4);
TriTetra TC = new TriTetra(-4,5,1);
TriTetra TD = new TriTetra(-1,2,-3);
System.out.println("Вершина A("+TA+");");
System.out.println("Вершина B("+TB+");");
System.out.println("Вершина C("+TC+");");
System.out.println("Вершина D("+TD+");");
TestTetra.toSearchVTetra(TA,TB,TC,TD);
TestTetra.toSearchSTetra(TA,TB,TC,TD);
}
} |
|
0
|