Advertisement
Guest User

Untitled

a guest
Jul 20th, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.04 KB | None | 0 0
  1.  
  2. import java.util.Scanner;
  3.  
  4. class point {
  5. int x,y;
  6. public point(int x,int y){
  7.     this.x = x;
  8.     this.y = y;}}
  9. class shape{
  10. point [] arr = new point[5];
  11. String Shape_name;
  12. int radius; //if required
  13.     double k,l,m,n,o,p; // stray variables
  14. shape(){
  15.      Shape_name = "Shape";
  16. }
  17.  
  18.      void draw(){}
  19. void intersect(shape s){
  20. System.out.println(this.Shape_name + " intersecting with "+ s.Shape_name);}}
  21.  
  22. class circle extends shape{
  23.  
  24. circle(){
  25. int fx,fy;
  26. fx = (int) (10 * (Math.random()));
  27. fy = (int) (10 * (Math.random()));
  28. radius = (int) (10* (Math.random()))  + 2;
  29. arr[0] = new point(fx,fy);
  30. Shape_name = "Circle";
  31. System.out.println("Circle initialised!");
  32.     }
  33.     @Override
  34. void draw(){
  35. System.out.println("Circle drawn!");}
  36.  
  37.     void circle_line(float x1,float y1,float r1,float x2,float y2,float x3,float y3)
  38.   {
  39.      float a,b,c,d,e,f,X1,X2,Y1,Y2;
  40.     if(x2!=x3)
  41.     {
  42.      c = ((y2*x3)-(y3*x2))/(x3-x2);
  43.      b = (y3-y2)/(x3-x2);
  44.      d = 1+(b*b);
  45.      e = (2*b*(c-y1))-(2*x1);
  46.      f = (x1*x1)+((c-y1)*(c-y1))-(r1*r1);
  47.      a = (e*e)-(4*d*f);
  48.      if(a==0)
  49.      {
  50.        X1 = (-e)/(2*d);
  51.        Y1 = (b*X1)+c;
  52.        if((((x2<=X1)&&(X1<=x3))||((X1<=x2)&&(x3<=X1)))&&(((y2<=Y1)&&(Y1<=y3))||((Y1<=y2)&&(y3<=Y1))))
  53.          System.out.println("("+X1+","+Y1+")");
  54.      }
  55.      if(a>0)
  56.      {
  57.       X1 = (-e+((float)(Math.sqrt(a))))/(2*d);
  58.       Y1 = (b*X1)+c;
  59.       if((((x2<=X1)&&(X1<=x3))||((X1<=x2)&&(x3<=X1)))&&(((y2<=Y1)&&(Y1<=y3))||((Y1<=y2)&&(y3<=Y1))))
  60.          System.out.println("("+X1+","+Y1+")");
  61.       X2 = (-e-((float)(Math.sqrt(a))))/(2*d);
  62.       Y2 = (b*X2)+c;
  63.       if((((x2<=X2)&&(X2<=x3))||((X2<=x2)&&(x3<=X2)))&&(((y2<=Y2)&&(Y2<=y3))||((Y2<=y2)&&(y3<=Y2))))
  64.          System.out.println("("+X2+","+Y2+")");
  65.      }
  66.     }
  67.     else
  68.     {
  69.      X1 = X2 = x2;
  70.      a = (r1*r1)-((x2-x1)*(x2-x1));
  71.      if(a==0)
  72.      {
  73.       Y1 = y1;
  74.       if((((x2<=X1)&&(X1<=x3))||((X1<=x2)&&(x3<=X1)))&&(((y2<=Y1)&&(Y1<=y3))||((Y1<=y2)&&(y3<=Y1))))
  75.           System.out.println("("+X1+","+Y1+")");
  76.      }
  77.      if(a>0)
  78.      {
  79.        Y1 = y1+((float)Math.sqrt(a));
  80.        Y2 = y1-((float)Math.sqrt(a));
  81.        if((((x2<=X1)&&(X1<=x3))||((X1<=x2)&&(x3<=X1)))&&(((y2<=Y1)&&(Y1<=y3))||((Y1<=y2)&&(y3<=Y1))))
  82.            System.out.println("("+X1+","+Y1+")");
  83.        if((((x2<=X2)&&(X2<=x3))||((X2<=x2)&&(x3<=X2)))&&(((y2<=Y2)&&(Y2<=y3))||((Y2<=y2)&&(y3<=Y2))))
  84.            System.out.println("("+X2+","+Y2+")");
  85.      }
  86.     }
  87.   }
  88. public int circle_circle_intersection(int x0, int y0, int  r0,
  89.                                int x1, int y1, int r1,
  90.                                double xi, double yi,
  91.                                double xi_prime, double yi_prime)
  92. {
  93.   double a, dx, dy, d, h, rx, ry;
  94.   double x2, y2;
  95.  
  96.   dx = x1 - x0;
  97.   dy = y1 - y0;
  98.   d = Math.hypot(dx,dy);
  99.  
  100.   if (d > (r0 + r1))
  101.   {
  102.  
  103.     return 0;
  104. }
  105.   if (d < Math.abs(r0 - r1))
  106.   {
  107.  return 0;
  108.   }
  109. a = ((r0*r0) - (r1*r1) + (d*d)) / (2.0 * d) ;
  110.   x2 = x0 + (dx * a/d);
  111.   y2 = y0 + (dy * a/d);
  112.   h = Math.sqrt((r0*r0) - (a*a));
  113.   rx = -dy * (h/d);
  114.   ry = dx * (h/d);
  115.   xi = x2 + rx;
  116.   xi_prime = x2 - rx;
  117.   yi = y2 + ry;
  118.   yi_prime = y2 - ry;
  119. System.out.println(xi + " ,"+yi +" and "+xi_prime + ", " + yi_prime);
  120.   return 1;
  121. }
  122.  
  123.  
  124.     @Override
  125. void intersect(shape s){
  126.  
  127.  if(s.Shape_name == "Circle")       {
  128.  int result = circle_circle_intersection(this.arr[0].x,this.arr[0].y,this.radius,s.arr[0].x,s.arr[0].y,s.radius,this.l,this.m,this.n,this.o);
  129.  if(result ==1 ){
  130.  System.out.println("result : ");}
  131.  else {
  132.  System.out.println("These circles are not intersecting!!!");
  133.   }
  134. }
  135.  else if(s.Shape_name == "Rectangle") {
  136.  System.out.println(this.Shape_name + " intersecting with "+ s.Shape_name);}
  137.  
  138.  else if (s.Shape_name == "Triangle")   {
  139.  System.out.println(this.Shape_name + " intersecting with "+ s.Shape_name);}
  140.  else if(s.Shape_name == "Square"){
  141.  System.out.println(this.Shape_name + " intersecting with "+ s.Shape_name);}
  142.     }
  143.  
  144. }
  145.  
  146.  
  147.  
  148. class Rectangle extends shape{
  149.    
  150.     int side_length;
  151. Rectangle(){
  152.      int fx,fy,fx1,fy1,temp;
  153. Shape_name = "Rectangle";
  154. fx = (int) (100 * (Math.random()));
  155. fy = (int) (100 * (Math.random()));
  156. fx1 = (int) (100 * (Math.random()));
  157. fy1 = (int) (100 * (Math.random()));
  158. if(fx>fx1){
  159. temp = fx;
  160. fx = fx1;
  161. fx1 = temp;}
  162.  
  163. if(fy>fy1){
  164. temp = fy;
  165. fy = fy1;
  166. fy1 = temp;
  167. }
  168. arr[0] = new point(fx,fy);
  169. arr[1] = new point(fx1,fy);
  170. arr[2] = new point(fx1,fy1);
  171. arr[3] = new point(fx,fy1);
  172. System.out.println("Rectangle initialised!");
  173. }
  174.     @Override
  175. void draw(){
  176. System.out.println("Rectangle drawn with vertices : " + "("+ this.arr[1].x +"," + this.arr[1].y + ")" +  " ("+ this.arr[2].x +"," + this.arr[2].y + ")");
  177. }
  178.  
  179.     @Override
  180. void intersect(shape s){
  181.  
  182.  if(s.Shape_name == "Circle")   {
  183.  System.out.println(this.Shape_name + " intersecting with "+ s.Shape_name);
  184.  }
  185.  else if(s.Shape_name == "Rectangle") {
  186.  System.out.println(this.Shape_name + " intersecting with "+ s.Shape_name);
  187.  }
  188.  else if (s.Shape_name == "Triangle"){
  189.  System.out.println(this.Shape_name + " intersecting with "+ s.Shape_name);
  190.  }
  191.  else if(s.Shape_name == "Square"){
  192.  System.out.println(this.Shape_name + " intersecting with "+ s.Shape_name);
  193.  }
  194.     }
  195. }
  196.  
  197.  
  198. class Square extends shape{
  199.     Square(){
  200.     int fx,fy,f,k;
  201.  Shape_name = "Square";
  202. fx = (int) (100 * (Math.random()));
  203. fy = (int) (100 * (Math.random()));
  204. f  = (int) (100 * (Math.random()));
  205. k = (fx - f);
  206. if(k<0){
  207. k = k*(-1);}
  208. arr[0] = new point(fx,fy);
  209. arr[1] = new point(f,fy);
  210. arr[2] = new point(fx,fy+k);
  211. arr[3] = new point(f,fy+k);
  212. System.out.println("Square initialised!");
  213. }
  214.     @Override
  215. void draw(){
  216. System.out.println("Square drawn!");
  217. }
  218.  
  219.     void intersect(shape s){
  220.  
  221.  if(s.Shape_name == "Circle")       {
  222.  System.out.println(this.Shape_name + " intersecting with "+ s.Shape_name);
  223.  }
  224.  else if(s.Shape_name == "Rectangle") {
  225.  System.out.println(this.Shape_name + " intersecting with "+ s.Shape_name);
  226.  }
  227.  else if (s.Shape_name == "Triangle"){
  228.  System.out.println(this.Shape_name + " intersecting with "+ s.Shape_name);
  229.  }
  230.  else if(s.Shape_name == "Square"){
  231.  System.out.println(this.Shape_name + " intersecting with "+ s.Shape_name);
  232.  }
  233.  
  234.     }
  235.  
  236. }
  237.  
  238.  
  239.  
  240. class Triangle extends shape{
  241.  
  242.     Triangle(){
  243.     int fx,fy,fx1 = 0,k,i;
  244.  Shape_name = "Triangle";
  245. fx = (int) (100 * (Math.random()));
  246. fy = 0;
  247. arr[0] = new point(fx,fy);
  248.  
  249.     fx1 = (int) (100 * (Math.random()));
  250. if (fx1 == fx){
  251. fx1 += 12;
  252. }
  253. fy = 0;
  254.  
  255. arr[1] = new point(fx1,fy);
  256. fx = (int) (100 * (Math.random()));
  257. fy = (int) (100 * (Math.random()))+1;
  258. arr[2] = new point(fx,fy);
  259. System.out.println("Triangle initialised!");
  260. }
  261.     @Override
  262. void draw(){
  263. System.out.println("Triangle drawn!");
  264. k = (arr[1].x - arr[0].x)*(arr[2].y - arr[0].y) - (arr[1].y - arr[0].y)*(arr[2].x - arr[0].x);
  265.     }
  266.  
  267. void intersect(shape s){
  268.  
  269.  if(s.Shape_name == "Circle")       {
  270.  System.out.println(this.Shape_name + " intersecting with "+ s.Shape_name);
  271.  }
  272.  else if(s.Shape_name == "Rectangle") {
  273.   System.out.println(this.Shape_name + " intersecting with "+ s.Shape_name);
  274.  
  275.  }
  276.  else if (s.Shape_name == "Triangle"){
  277.   System.out.println(this.Shape_name + " intersecting with "+ s.Shape_name);
  278.  }
  279.  else if(s.Shape_name == "Square"){
  280.  }
  281.  
  282.     }
  283.  
  284. }
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291. public class Shapes{
  292.     public static void main(String[] args) {
  293.         shape [] array = new shape[100];
  294.        int i,f,g;
  295.        int x1,x2;
  296.  
  297.        for(i=0;i<100;i++){
  298. f = (int) (10 * (Math.random()));
  299. f = f%4;
  300. g = f%2;
  301. switch(f){
  302.     case 0:{
  303.          array[i] = new circle();
  304.          System.out.println("Centre :" + array[i].arr[0].x + "   " +  array[i].arr[0].y );
  305.          System.out.println("Radius :" + array[i].radius);
  306.          break;}
  307.     case 1:
  308.         array [i] = new Rectangle();
  309.         System.out.println("Points :" + array[i].arr[0].x + "  " +  array[i].arr[0].y);
  310.         System.out.println("Points :" + array[i].arr[1].x + "  " +  array[i].arr[1].y);
  311.         System.out.println("Points :" + array[i].arr[2].x + "  " +  array[i].arr[2].y);
  312.         System.out.println("Points :" + array[i].arr[3].x + "  " +  array[i].arr[3].y);
  313.  
  314.         break;
  315.     case 2:
  316.         array [i] = new Square();
  317.         System.out.println("Points :" + array[i].arr[0].x + "   " +  array[i].arr[0].y);
  318.         System.out.println("Points :" + array[i].arr[1].x + "   " +  array[i].arr[1].y);
  319.         System.out.println("Points :" + array[i].arr[2].x + "   " +  array[i].arr[2].y);
  320.         System.out.println("Points :" + array[i].arr[3].x + "   " +  array[i].arr[3].y);
  321.  
  322.         break;
  323.     case 3:
  324.         array[i] =  new Triangle();
  325.         System.out.println("Points :" + array[i].arr[0].x + "   " +  array[i].arr[0].y);
  326.         System.out.println("Points :" + array[i].arr[1].x + "   " +  array[i].arr[1].y);
  327.         System.out.println("Points :" + array[i].arr[2].x + "   " +  array[i].arr[2].y);
  328.        
  329.         break;
  330. }
  331.     }
  332.        int x0;
  333.        int choice;
  334.  
  335.  
  336.        Scanner s = new Scanner(System.in);
  337.        System.out.println("1:See what shape it is!");
  338. System.out.println("2: Enter to intersect the two shapes");
  339. System.out.println("3: Exit from the program!");
  340.  
  341.  
  342. for(i=1;i>0;i++){
  343. System.out.println("Enter your choice :");
  344.     choice = s.nextInt();
  345. switch(choice) {
  346.     case 1:
  347.         label:
  348.         System.out.println("Enter the shape number:");
  349.         x0 = s.nextInt();
  350.         if(x0<=99)
  351.         System.out.println("The shape of "+ x0+"th element is "+ array[x0].Shape_name);
  352.         else
  353.         {
  354.             System.out.println("Enter a number below 100!");
  355.        }
  356.         break;
  357.     case 2:
  358.         System.out.println("Enter ur two choices!");
  359.         x1 =  s.nextInt();
  360.         x2 =   s.nextInt();
  361.          if(x1 > 99 || x2 > 99){
  362.          System.out.println("Enter a number below 100!");
  363.          break;
  364.          }
  365.         array[x1].intersect(array[x2]);
  366.         break;
  367.     case 3:
  368.         System.out.println("Exiting the program!");
  369.         System.exit(0);
  370.         break;
  371.     default:
  372.         System.out.println("Invalid Choice!");
  373.         break;
  374. }}
  375.  
  376.     }
  377.  
  378. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement