Advertisement
Teammasik

lr4_OOP

Dec 8th, 2023 (edited)
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 17.36 KB | None | 0 0
  1. -- class GeomFig
  2. import java.awt.*;
  3.  
  4. public abstract class GeomFig {
  5.  
  6.     public abstract double getArea();
  7.     public abstract double getPerimeter();
  8.     public abstract void Move();
  9.  
  10.  
  11.  
  12.     public abstract void IsInclude(Polygon fig);
  13.  
  14.     public abstract void IsIntersect(Polygon fig);
  15.  
  16.     public abstract Polygon getFig();
  17. }
  18. -------------------------------------------------------
  19. -- class compare
  20.  
  21. public class Compare {
  22.     public static void CompareFig(double area1, double area2){
  23.         if (area1 > area2) {
  24.             System.out.println("площадь 1 фигуры больше 2");
  25.         } else if (area2 > area1) {
  26.             System.out.println("площадь 2 фигуры больше 1");
  27.         }
  28.         else {
  29.             System.out.println("они равны");
  30.         }
  31.     }
  32. }
  33.  
  34. ------------------------------------------------------------
  35. --class getTriangArea
  36. import java.awt.*;
  37.  
  38. public class getTriangArea {
  39.     public static double area(Polygon fig){
  40.         int[] xPoints = fig.xpoints;
  41.         int[] yPoints = fig.ypoints;
  42.  
  43.         double a = Math.sqrt(Math.pow(xPoints[1] - xPoints[0], 2) + Math.pow(yPoints[1] - yPoints[0], 2));
  44.         double b = Math.sqrt(Math.pow(xPoints[2] - xPoints[1], 2) + Math.pow(yPoints[2] - yPoints[1], 2));
  45.         double c = Math.sqrt(Math.pow(xPoints[2] - xPoints[0], 2) + Math.pow(yPoints[2] - yPoints[0], 2));
  46.         double s = (a + b + c) / 2; // Полупериметр
  47.         return Math.sqrt(s * (s - a) * (s - b) * (s - c));
  48.     }
  49.  
  50.  
  51. }
  52. ---------------------------------------------------
  53. --class Triangle
  54. import java.awt.*;
  55.  
  56. class Triangle extends GeomFig{
  57.     public int x1,x2,x3,y1,y2,y3;
  58.     int[] arrayX;
  59.     int[] arrayY;
  60.     Polygon trian;
  61.  
  62.     @Override
  63.     public double getArea() {
  64.         double a = Math.sqrt(Math.pow(arrayX[1] - arrayX[0], 2) + Math.pow(arrayY[1] - arrayY[0], 2));
  65.         double b = Math.sqrt(Math.pow(arrayX[2] - arrayX[1], 2) + Math.pow(arrayY[2] - arrayY[1], 2));
  66.         double c = Math.sqrt(Math.pow(arrayX[2] - arrayX[0], 2) + Math.pow(arrayY[2] - arrayY[0], 2));
  67.         double ph = (a + b + c) / 2;
  68.         return Math.sqrt(ph * (ph - a) * (ph - b) * (ph - c));
  69.     }
  70.  
  71.     @Override
  72.     public double getPerimeter() {
  73.         double a = Math.sqrt(Math.pow(arrayX[1] - arrayX[0], 2) + Math.pow(arrayY[1] - arrayY[0], 2));
  74.         double b = Math.sqrt(Math.pow(arrayX[2] - arrayX[1], 2) + Math.pow(arrayY[2] - arrayY[1], 2));
  75.         double c = Math.sqrt(Math.pow(arrayX[2] - arrayX[0], 2) + Math.pow(arrayY[2] - arrayY[0], 2));
  76.         return a+b+c;
  77.     }
  78.  
  79.     @Override
  80.     public void Move() {
  81.         for (int i = 0; i < 3; i++) {
  82.             arrayX[i] += 3;
  83.             arrayY[i] += 1;
  84.         }
  85.     }
  86.  
  87.     @Override
  88.     public void IsInclude(Polygon fig) {
  89.         int[] xPoints = fig.xpoints;
  90.         int[] yPoints = fig.ypoints;
  91.  
  92.         for (int i = 0; i < xPoints.length; i++) {
  93.             if (!trian.contains(xPoints[i], yPoints[i])) {
  94.                 System.out.println("фигура не входит! ");
  95.                 return;
  96.             }
  97.             else{
  98.                 System.out.println("фигура входит! ");
  99.             }
  100.         }
  101.     }
  102.  
  103.     public boolean Validate(){
  104.         double a = Math.sqrt(Math.pow(arrayX[1] - arrayX[0], 2) + Math.pow(arrayY[1] - arrayY[0], 2));
  105.         double b = Math.sqrt(Math.pow(arrayX[2] - arrayX[1], 2) + Math.pow(arrayY[2] - arrayY[1], 2));
  106.         double c = Math.sqrt(Math.pow(arrayX[2] - arrayX[0], 2) + Math.pow(arrayY[2] - arrayY[0], 2));
  107.         if (a + b > c && a + c > b && a + c > b) return true; return false;
  108.     }
  109.     @Override
  110.     public void IsIntersect(Polygon fig){
  111.  
  112.         int[] xPoints = fig.xpoints;
  113.         int[] yPoints = fig.ypoints;
  114.         int counter = 0;
  115.  
  116.         for (int i = 0; i < xPoints.length; i++) {
  117.             if (trian.contains(xPoints[i], yPoints[i])) {
  118.                 counter++;
  119.             }
  120.         }
  121.  
  122.         if (counter < xPoints.length && counter != 0) {
  123.             System.out.println("Фигуры пересекаются");
  124.         }
  125.         else{
  126.             System.out.println("Фигуры не пересекаюстя");
  127.         }
  128.     }
  129.  
  130.     @Override
  131.     public Polygon getFig() {
  132.         if(Validate()){
  133.             return trian;
  134.         }
  135.         else{
  136.             return null;
  137.         }
  138.  
  139.     }
  140.  
  141.     public Triangle(int x1, int x2, int x3, int y1, int y2, int y3) {
  142.         this.x1 = x1;
  143.         this.x2 = x2;
  144.         this.x3 = x3;
  145.         this.y1 = y1;
  146.         this.y2 = y2;
  147.         this.y3 = y3;
  148.         this.arrayX = new int[]{x1, x2, x3};
  149.         this.arrayY = new int[]{y1, y2, y3};
  150.         trian = new Polygon(arrayX, arrayY, 3);
  151.         if (!Validate()) {
  152.             System.out.println("фигуры не существует");
  153.         }
  154.     }
  155. }
  156.  
  157. --------------------------------------------------
  158. -- class Quadrate
  159. import java.awt.*;
  160.  
  161. public class Quadrate extends GeomFig{
  162.     int x1,x2,x3,x4,y1,y2,y3,y4;
  163.     int[] arrayX;
  164.     int[] arrayY;
  165.     Polygon quad;
  166.  
  167.     @Override
  168.     public double getArea() {
  169.         Polygon triangle1 = new Polygon(new int[]{arrayX[0], arrayX[1], arrayX[2]}, new int[]{arrayY[0], arrayY[1], arrayY[2]}, 3);
  170.         Polygon triangle2 = new Polygon(new int[]{arrayX[0], arrayX[2], arrayX[3]}, new int[]{arrayY[0], arrayY[2], arrayY[3]}, 3);
  171.  
  172.         return getTriangArea.area(triangle1) + getTriangArea.area(triangle2);
  173.     }
  174.  
  175.     @Override
  176.     public double getPerimeter() {
  177.         double perimeter = 0;
  178.         for (int i = 0; i < 4; i++) {
  179.             int x1 = arrayX[i];
  180.             int y1 = arrayY[i];
  181.             int x2 = arrayX[(i + 1) % 4];
  182.             int y2 = arrayY[(i + 1) % 4];
  183.             perimeter += Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
  184.         }
  185.  
  186.         return perimeter;
  187.     }
  188.  
  189.     @Override
  190.     public void Move() {
  191.         for (int i = 0; i < 4; i++) {
  192.             arrayX[i] += 3;
  193.             arrayY[i] += 1;
  194.         }
  195.     }
  196.  
  197.     @Override
  198.     public void IsInclude(Polygon fig) {
  199.         int[] xPoints = fig.xpoints;
  200.         int[] yPoints = fig.ypoints;
  201.  
  202.         for (int i = 0; i < xPoints.length; i++) {
  203.             if (!quad.contains(xPoints[i], yPoints[i])) {
  204.                 System.out.println("фигура не входит! ");
  205.                 return;
  206.             }
  207.         }
  208.         System.out.println("фигура входит! ");
  209.     }
  210.  
  211.     @Override
  212.     public void IsIntersect(Polygon fig) {
  213.         int[] xPoints = fig.xpoints;
  214.         int[] yPoints = fig.ypoints;
  215.         int counter = 0;
  216.  
  217.         for (int i = 0; i < xPoints.length; i++) {
  218.             if (quad.contains(xPoints[i], yPoints[i])) {
  219.                 counter+=1;
  220.             }
  221.         }
  222.  
  223.         if (counter < xPoints.length && counter != 0) {
  224.             System.out.println("Фигуры пересекаются");
  225.         }
  226.         else{
  227.             System.out.println("Фигуры не пересекаюстя");
  228.         }
  229.     }
  230.  
  231.     @Override
  232.     public Polygon getFig() {
  233.         return quad;
  234.     }
  235.  
  236.     public Quadrate(int x1, int x2, int x3, int x4, int y1, int y2, int y3, int y4) {
  237.         this.x1 = x1;
  238.         this.x2 = x2;
  239.         this.x3 = x3;
  240.         this.x4 = x4;
  241.         this.y1 = y1;
  242.         this.y2 = y2;
  243.         this.y3 = y3;
  244.         this.y4 = y4;
  245.         this.arrayX = new int[]{x1, x2, x3, x4};
  246.         this.arrayY = new int[]{y1, y2, y3, y4};
  247.         quad = new Polygon(arrayX, arrayY, 4);
  248.     }
  249. }
  250. ---------------------------------------------------------------------------------------
  251. -- class Rectangle
  252. import java.awt.*;
  253.  
  254. public class Rectangle extends GeomFig{
  255.     int x1,x2,x3,x4,y1,y2,y3,y4;
  256.     int[] arrayX;
  257.     int[] arrayY;
  258.     Polygon rect;
  259.  
  260.     @Override
  261.     public double getArea() {
  262.         Polygon triangle1 = new Polygon(new int[]{arrayX[0], arrayX[1], arrayX[2]}, new int[]{arrayY[0], arrayY[1], arrayY[2]}, 3);
  263.         Polygon triangle2 = new Polygon(new int[]{arrayX[0], arrayX[2], arrayX[3]}, new int[]{arrayY[0], arrayY[2], arrayY[3]}, 3);
  264.  
  265.         return getTriangArea.area(triangle1) + getTriangArea.area(triangle2);
  266.     }
  267.  
  268.     @Override
  269.     public double getPerimeter() {
  270.         double perimeter = 0;
  271.         for (int i = 0; i < 4; i++) {
  272.             int x1 = arrayX[i];
  273.             int y1 = arrayY[i];
  274.             int x2 = arrayX[(i + 1) % 4];
  275.             int y2 = arrayY[(i + 1) % 4];
  276.             perimeter += Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
  277.         }
  278.  
  279.         return perimeter;
  280.     }
  281.  
  282.     @Override
  283.     public void Move() {
  284.         for (int i = 0; i < 4; i++) {
  285.             arrayX[i] += 3;
  286.             arrayY[i] += 1;
  287.         }
  288.     }
  289.  
  290.     @Override
  291.     public void IsInclude(Polygon fig) {
  292.         int[] xPoints = fig.xpoints;
  293.         int[] yPoints = fig.ypoints;
  294.  
  295.         for (int i = 0; i < xPoints.length; i++) {
  296.             if (!rect.contains(xPoints[i], yPoints[i])) {
  297.                 System.out.println("фигура не входит! ");
  298.                 return;
  299.             }
  300.             else{
  301.                 System.out.println("фигура входит! ");
  302.             }
  303.         }
  304.     }
  305.  
  306.     @Override
  307.     public void IsIntersect(Polygon fig) {
  308.         int[] xPoints = fig.xpoints;
  309.         int[] yPoints = fig.ypoints;
  310.         int counter = 0;
  311.  
  312.         for (int i = 0; i < xPoints.length; i++) {
  313.             if (rect.contains(xPoints[i], yPoints[i])) {
  314.                 counter++;
  315.             }
  316.         }
  317.  
  318.         if (counter < xPoints.length && counter != 0) {
  319.             System.out.println("Фигуры пересекаются");
  320.         }
  321.         else{
  322.             System.out.println("Фигуры не пересекаюстя");
  323.         }
  324.     }
  325.  
  326.     @Override
  327.     public Polygon getFig() {
  328.         return rect;
  329.     }
  330.  
  331.     public Rectangle(int x1, int x2, int x3, int x4, int y1, int y2, int y3, int y4) {
  332.         this.x1 = x1;
  333.         this.x2 = x2;
  334.         this.x3 = x3;
  335.         this.x4 = x4;
  336.         this.y1 = y1;
  337.         this.y2 = y2;
  338.         this.y3 = y3;
  339.         this.y4 = y4;
  340.         this.arrayX = new int[]{x1, x2, x3, x4};
  341.         this.arrayY = new int[]{y1, y2, y3, y4};
  342.         rect = new Polygon(arrayX, arrayY, 4);
  343.     }
  344. }
  345. ------------------------------------------------
  346. --class Tetragon
  347. import java.awt.*;
  348.  
  349. public class Tetragon extends GeomFig{
  350.     int x1,x2,x3,x4,y1,y2,y3,y4;
  351.     int[] arrayX;
  352.     int[] arrayY;
  353.     Polygon tetrag;
  354.  
  355.     @Override
  356.     public double getArea() {
  357.         Polygon triangle1 = new Polygon(new int[]{arrayX[0], arrayX[1], arrayX[2]}, new int[]{arrayY[0], arrayY[1], arrayY[2]}, 3);
  358.         Polygon triangle2 = new Polygon(new int[]{arrayX[0], arrayX[2], arrayX[3]}, new int[]{arrayY[0], arrayY[2], arrayY[3]}, 3);
  359.  
  360.         return getTriangArea.area(triangle1) + getTriangArea.area(triangle2);
  361.     }
  362.  
  363.     @Override
  364.     public double getPerimeter() {
  365.         double perimeter = 0;
  366.         for (int i = 0; i < 4; i++) {
  367.             int x1 = arrayX[i];
  368.             int y1 = arrayY[i];
  369.             int x2 = arrayX[(i + 1) % 4];
  370.             int y2 = arrayY[(i + 1) % 4];
  371.             perimeter += Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
  372.         }
  373.  
  374.         return perimeter;
  375.     }
  376.  
  377.     @Override
  378.     public void Move() {
  379.         for (int i = 0; i < 4; i++) {
  380.             arrayX[i] += 3;
  381.             arrayY[i] += 1;
  382.         }
  383.     }
  384.  
  385.  
  386.     public boolean Validate(){
  387.         if (arrayX.length != 4 || arrayY.length != 4 ||
  388.                 (arrayX[0] == arrayX[1] && arrayY[0] == arrayY[1]) ||
  389.                 (arrayX[0] == arrayX[2] && arrayY[0] == arrayY[2]) ||
  390.                 (arrayX[0] == arrayX[3] && arrayY[0] == arrayY[3]) ||
  391.                 (arrayX[1] == arrayX[2] && arrayY[1] == arrayY[2]) ||
  392.                 (arrayX[1] == arrayX[3] && arrayY[1] == arrayY[3]) ||
  393.                 (arrayX[2] == arrayX[3] && arrayY[2] == arrayY[3])) {
  394.             return false;
  395.         }
  396.         for (int i = 0; i < arrayX.length; i++) {
  397.             for (int j = 0; j < arrayX.length; j++) {
  398.                 for (int k = 0; k < arrayX.length; k++) {
  399.                     if (arrayX[i] == arrayX[j] && arrayX[i] == arrayX[k] && arrayX[j] == arrayX[k]){
  400.                         return false;
  401.                     }
  402.                     if (arrayY[i] == arrayY[j] && arrayY[i] == arrayY[k] && arrayY[j] == arrayY[k]){
  403.                         return false;
  404.                     }
  405.                 }
  406.             }
  407.         }
  408.         return true;
  409.     }
  410.     @Override
  411.     public void IsInclude(Polygon fig) {
  412.         int[] xPoints = fig.xpoints;
  413.         int[] yPoints = fig.ypoints;
  414.  
  415.         for (int i = 0; i < xPoints.length; i++) {
  416.             if (!tetrag.contains(xPoints[i], yPoints[i])) {
  417.                 System.out.println("фигура не входит! ");
  418.                 return;
  419.             }
  420.             else{
  421.                 System.out.println("фигура входит! ");
  422.             }
  423.         }
  424.     }
  425.  
  426.     @Override
  427.     public void IsIntersect(Polygon fig) {
  428.         int[] xPoints = fig.xpoints;
  429.         int[] yPoints = fig.ypoints;
  430.         int counter = 0;
  431.  
  432.         for (int i = 0; i < xPoints.length; i++) {
  433.             if (tetrag.contains(xPoints[i], yPoints[i])) {
  434.                 counter++;
  435.             }
  436.         }
  437.  
  438.         if (counter < xPoints.length && counter != 0) {
  439.             System.out.println("Фигуры пересекаются");
  440.         }
  441.         else{
  442.             System.out.println("Фигуры не пересекаюстя");
  443.         }
  444.     }
  445.  
  446.     @Override
  447.     public Polygon getFig() {
  448.         return tetrag;
  449.     }
  450.  
  451.     public Tetragon(int x1, int x2, int x3, int x4, int y1, int y2, int y3, int y4) {
  452.         this.x1 = x1;
  453.         this.x2 = x2;
  454.         this.x3 = x3;
  455.         this.x4 = x4;
  456.         this.y1 = y1;
  457.         this.y2 = y2;
  458.         this.y3 = y3;
  459.         this.y4 = y4;
  460.         this.arrayX = new int[]{x1, x2, x3, x4};
  461.         this.arrayY = new int[]{y1, y2, y3, y4};
  462.         tetrag = new Polygon(arrayX, arrayY, 4);
  463.     }
  464. }
  465. ------------------------------------------------
  466. -- class Pentagon
  467. import java.awt.*;
  468.  
  469. public class Pentagon extends GeomFig{
  470.     int x1,x2,x3,x4,x5,y1,y2,y3,y4,y5;
  471.     int[] arrayX = {x1,x2,x3,x4,x5};
  472.     int[] arrayY = {y1,y2,y3,y4,y5};
  473.     Polygon penta = new Polygon(arrayX,arrayY, 5);
  474.  
  475.     @Override
  476.     public double getArea() {
  477.         double area = 0;
  478.         for (int i = 0; i < 4; i++) {
  479.             area += (arrayX[i] * arrayY[i + 1]) - (arrayX[i + 1] * arrayY[i]); //gauss
  480.         }
  481.         area += (arrayX[4] * arrayY[0]) - (arrayX[0] * arrayY[4]);
  482.  
  483.         area = Math.abs(area / 2);
  484.  
  485.         return area;
  486.     }
  487.  
  488.     @Override
  489.     public double getPerimeter() {
  490.         double perimeter = 0;
  491.         for (int i = 0; i < 5; i++) {
  492.             int x1 = arrayX[i];
  493.             int y1 = arrayY[i];
  494.             int x2 = arrayX[(i + 1) % 5];
  495.             int y2 = arrayY[(i + 1) % 5];
  496.             perimeter += Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
  497.         }
  498.  
  499.         return perimeter;
  500.     }
  501.  
  502.     @Override
  503.     public void Move() {
  504.         for (int i = 0; i < 5; i++) {
  505.             arrayX[i] += 3;
  506.             arrayY[i] += 1;
  507.         }
  508.     }
  509.  
  510.     @Override
  511.     public void IsInclude(Polygon fig) {
  512.         int[] xPoints = fig.xpoints;
  513.         int[] yPoints = fig.ypoints;
  514.  
  515.         for (int i = 0; i < xPoints.length; i++) {
  516.             if (!penta.contains(xPoints[i], yPoints[i])) {
  517.                 System.out.println("фигура не входит! ");
  518.                 return;
  519.             }
  520.             else{
  521.                 System.out.println("фигура входит! ");
  522.             }
  523.         }
  524.     }
  525.  
  526.     @Override
  527.     public void IsIntersect(Polygon fig) {
  528.         int[] xPoints = fig.xpoints;
  529.         int[] yPoints = fig.ypoints;
  530.         int counter = 0;
  531.  
  532.         for (int i = 0; i < xPoints.length; i++) {
  533.             if (penta.contains(xPoints[i], yPoints[i])) {
  534.                 counter++;
  535.             }
  536.         }
  537.  
  538.         if (counter < xPoints.length && counter != 0) {
  539.             System.out.println("Фигуры пересекаются");
  540.         }
  541.         else{
  542.             System.out.println("Фигуры не пересекаюстя");
  543.         }
  544.     }
  545.  
  546.     @Override
  547.     public Polygon getFig() {
  548.         return penta;
  549.     }
  550.  
  551.     public Pentagon(int x1, int x2, int x3, int x4, int x5, int y1, int y2, int y3, int y4, int y5) {
  552.         this.x1 = x1;
  553.         this.x2 = x2;
  554.         this.x3 = x3;
  555.         this.x4 = x4;
  556.         this.x5 = x5;
  557.         this.y1 = y1;
  558.         this.y2 = y2;
  559.         this.y3 = y3;
  560.         this.y4 = y4;
  561.         this.y5 = y5;
  562.         this.arrayX = new int[]{x1, x2, x3, x4, x5};
  563.         this.arrayY = new int[]{y1, y2, y3, y4,y5};
  564.         penta = new Polygon(arrayX, arrayY, 5);
  565.     }
  566. }
  567. ----------------------------------------------
  568. -- class Main
  569. public class Main {
  570.     public static void main(String[] args) {
  571.         Triangle tri = new Triangle(1,2,2,1,2,1);
  572.         Quadrate quad = new Quadrate(0,0,4,4,0,4,4,0);
  573.  
  574.         quad.IsInclude(tri.getFig());
  575.         quad.IsIntersect(tri.getFig());
  576.         System.out.println("Периметр фигуры: " + quad.getPerimeter());
  577.         System.out.println("Площадь фигуры: " + quad.getArea());
  578.         Compare.CompareFig(tri.getArea(), quad.getArea());
  579.     }
  580. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement