Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- class point {
- int x,y;
- public point(int x,int y){
- this.x = x;
- this.y = y;}}
- class shape{
- point [] arr = new point[5];
- String Shape_name;
- int radius; //if required
- double k,l,m,n,o,p; // stray variables
- shape(){
- Shape_name = "Shape";
- }
- void draw(){}
- void intersect(shape s){
- System.out.println(this.Shape_name + " intersecting with "+ s.Shape_name);}}
- class circle extends shape{
- circle(){
- int fx,fy;
- fx = (int) (10 * (Math.random()));
- fy = (int) (10 * (Math.random()));
- radius = (int) (10* (Math.random())) + 2;
- arr[0] = new point(fx,fy);
- Shape_name = "Circle";
- System.out.println("Circle initialised!");
- }
- @Override
- void draw(){
- System.out.println("Circle drawn!");}
- void circle_line(float x1,float y1,float r1,float x2,float y2,float x3,float y3)
- {
- float a,b,c,d,e,f,X1,X2,Y1,Y2;
- if(x2!=x3)
- {
- c = ((y2*x3)-(y3*x2))/(x3-x2);
- b = (y3-y2)/(x3-x2);
- d = 1+(b*b);
- e = (2*b*(c-y1))-(2*x1);
- f = (x1*x1)+((c-y1)*(c-y1))-(r1*r1);
- a = (e*e)-(4*d*f);
- if(a==0)
- {
- X1 = (-e)/(2*d);
- Y1 = (b*X1)+c;
- if((((x2<=X1)&&(X1<=x3))||((X1<=x2)&&(x3<=X1)))&&(((y2<=Y1)&&(Y1<=y3))||((Y1<=y2)&&(y3<=Y1))))
- System.out.println("("+X1+","+Y1+")");
- }
- if(a>0)
- {
- X1 = (-e+((float)(Math.sqrt(a))))/(2*d);
- Y1 = (b*X1)+c;
- if((((x2<=X1)&&(X1<=x3))||((X1<=x2)&&(x3<=X1)))&&(((y2<=Y1)&&(Y1<=y3))||((Y1<=y2)&&(y3<=Y1))))
- System.out.println("("+X1+","+Y1+")");
- X2 = (-e-((float)(Math.sqrt(a))))/(2*d);
- Y2 = (b*X2)+c;
- if((((x2<=X2)&&(X2<=x3))||((X2<=x2)&&(x3<=X2)))&&(((y2<=Y2)&&(Y2<=y3))||((Y2<=y2)&&(y3<=Y2))))
- System.out.println("("+X2+","+Y2+")");
- }
- }
- else
- {
- X1 = X2 = x2;
- a = (r1*r1)-((x2-x1)*(x2-x1));
- if(a==0)
- {
- Y1 = y1;
- if((((x2<=X1)&&(X1<=x3))||((X1<=x2)&&(x3<=X1)))&&(((y2<=Y1)&&(Y1<=y3))||((Y1<=y2)&&(y3<=Y1))))
- System.out.println("("+X1+","+Y1+")");
- }
- if(a>0)
- {
- Y1 = y1+((float)Math.sqrt(a));
- Y2 = y1-((float)Math.sqrt(a));
- if((((x2<=X1)&&(X1<=x3))||((X1<=x2)&&(x3<=X1)))&&(((y2<=Y1)&&(Y1<=y3))||((Y1<=y2)&&(y3<=Y1))))
- System.out.println("("+X1+","+Y1+")");
- if((((x2<=X2)&&(X2<=x3))||((X2<=x2)&&(x3<=X2)))&&(((y2<=Y2)&&(Y2<=y3))||((Y2<=y2)&&(y3<=Y2))))
- System.out.println("("+X2+","+Y2+")");
- }
- }
- }
- public int circle_circle_intersection(int x0, int y0, int r0,
- int x1, int y1, int r1,
- double xi, double yi,
- double xi_prime, double yi_prime)
- {
- double a, dx, dy, d, h, rx, ry;
- double x2, y2;
- dx = x1 - x0;
- dy = y1 - y0;
- d = Math.hypot(dx,dy);
- if (d > (r0 + r1))
- {
- return 0;
- }
- if (d < Math.abs(r0 - r1))
- {
- return 0;
- }
- a = ((r0*r0) - (r1*r1) + (d*d)) / (2.0 * d) ;
- x2 = x0 + (dx * a/d);
- y2 = y0 + (dy * a/d);
- h = Math.sqrt((r0*r0) - (a*a));
- rx = -dy * (h/d);
- ry = dx * (h/d);
- xi = x2 + rx;
- xi_prime = x2 - rx;
- yi = y2 + ry;
- yi_prime = y2 - ry;
- System.out.println(xi + " ,"+yi +" and "+xi_prime + ", " + yi_prime);
- return 1;
- }
- @Override
- void intersect(shape s){
- if(s.Shape_name == "Circle") {
- 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);
- if(result ==1 ){
- System.out.println("result : ");}
- else {
- System.out.println("These circles are not intersecting!!!");
- }
- }
- else if(s.Shape_name == "Rectangle") {
- System.out.println(this.Shape_name + " intersecting with "+ s.Shape_name);}
- else if (s.Shape_name == "Triangle") {
- System.out.println(this.Shape_name + " intersecting with "+ s.Shape_name);}
- else if(s.Shape_name == "Square"){
- System.out.println(this.Shape_name + " intersecting with "+ s.Shape_name);}
- }
- }
- class Rectangle extends shape{
- int side_length;
- Rectangle(){
- int fx,fy,fx1,fy1,temp;
- Shape_name = "Rectangle";
- fx = (int) (100 * (Math.random()));
- fy = (int) (100 * (Math.random()));
- fx1 = (int) (100 * (Math.random()));
- fy1 = (int) (100 * (Math.random()));
- if(fx>fx1){
- temp = fx;
- fx = fx1;
- fx1 = temp;}
- if(fy>fy1){
- temp = fy;
- fy = fy1;
- fy1 = temp;
- }
- arr[0] = new point(fx,fy);
- arr[1] = new point(fx1,fy);
- arr[2] = new point(fx1,fy1);
- arr[3] = new point(fx,fy1);
- System.out.println("Rectangle initialised!");
- }
- @Override
- void draw(){
- System.out.println("Rectangle drawn with vertices : " + "("+ this.arr[1].x +"," + this.arr[1].y + ")" + " ("+ this.arr[2].x +"," + this.arr[2].y + ")");
- }
- @Override
- void intersect(shape s){
- if(s.Shape_name == "Circle") {
- System.out.println(this.Shape_name + " intersecting with "+ s.Shape_name);
- }
- else if(s.Shape_name == "Rectangle") {
- System.out.println(this.Shape_name + " intersecting with "+ s.Shape_name);
- }
- else if (s.Shape_name == "Triangle"){
- System.out.println(this.Shape_name + " intersecting with "+ s.Shape_name);
- }
- else if(s.Shape_name == "Square"){
- System.out.println(this.Shape_name + " intersecting with "+ s.Shape_name);
- }
- }
- }
- class Square extends shape{
- Square(){
- int fx,fy,f,k;
- Shape_name = "Square";
- fx = (int) (100 * (Math.random()));
- fy = (int) (100 * (Math.random()));
- f = (int) (100 * (Math.random()));
- k = (fx - f);
- if(k<0){
- k = k*(-1);}
- arr[0] = new point(fx,fy);
- arr[1] = new point(f,fy);
- arr[2] = new point(fx,fy+k);
- arr[3] = new point(f,fy+k);
- System.out.println("Square initialised!");
- }
- @Override
- void draw(){
- System.out.println("Square drawn!");
- }
- void intersect(shape s){
- if(s.Shape_name == "Circle") {
- System.out.println(this.Shape_name + " intersecting with "+ s.Shape_name);
- }
- else if(s.Shape_name == "Rectangle") {
- System.out.println(this.Shape_name + " intersecting with "+ s.Shape_name);
- }
- else if (s.Shape_name == "Triangle"){
- System.out.println(this.Shape_name + " intersecting with "+ s.Shape_name);
- }
- else if(s.Shape_name == "Square"){
- System.out.println(this.Shape_name + " intersecting with "+ s.Shape_name);
- }
- }
- }
- class Triangle extends shape{
- Triangle(){
- int fx,fy,fx1 = 0,k,i;
- Shape_name = "Triangle";
- fx = (int) (100 * (Math.random()));
- fy = 0;
- arr[0] = new point(fx,fy);
- fx1 = (int) (100 * (Math.random()));
- if (fx1 == fx){
- fx1 += 12;
- }
- fy = 0;
- arr[1] = new point(fx1,fy);
- fx = (int) (100 * (Math.random()));
- fy = (int) (100 * (Math.random()))+1;
- arr[2] = new point(fx,fy);
- System.out.println("Triangle initialised!");
- }
- @Override
- void draw(){
- System.out.println("Triangle drawn!");
- 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);
- }
- void intersect(shape s){
- if(s.Shape_name == "Circle") {
- System.out.println(this.Shape_name + " intersecting with "+ s.Shape_name);
- }
- else if(s.Shape_name == "Rectangle") {
- System.out.println(this.Shape_name + " intersecting with "+ s.Shape_name);
- }
- else if (s.Shape_name == "Triangle"){
- System.out.println(this.Shape_name + " intersecting with "+ s.Shape_name);
- }
- else if(s.Shape_name == "Square"){
- }
- }
- }
- public class Shapes{
- public static void main(String[] args) {
- shape [] array = new shape[100];
- int i,f,g;
- int x1,x2;
- for(i=0;i<100;i++){
- f = (int) (10 * (Math.random()));
- f = f%4;
- g = f%2;
- switch(f){
- case 0:{
- array[i] = new circle();
- System.out.println("Centre :" + array[i].arr[0].x + " " + array[i].arr[0].y );
- System.out.println("Radius :" + array[i].radius);
- break;}
- case 1:
- array [i] = new Rectangle();
- System.out.println("Points :" + array[i].arr[0].x + " " + array[i].arr[0].y);
- System.out.println("Points :" + array[i].arr[1].x + " " + array[i].arr[1].y);
- System.out.println("Points :" + array[i].arr[2].x + " " + array[i].arr[2].y);
- System.out.println("Points :" + array[i].arr[3].x + " " + array[i].arr[3].y);
- break;
- case 2:
- array [i] = new Square();
- System.out.println("Points :" + array[i].arr[0].x + " " + array[i].arr[0].y);
- System.out.println("Points :" + array[i].arr[1].x + " " + array[i].arr[1].y);
- System.out.println("Points :" + array[i].arr[2].x + " " + array[i].arr[2].y);
- System.out.println("Points :" + array[i].arr[3].x + " " + array[i].arr[3].y);
- break;
- case 3:
- array[i] = new Triangle();
- System.out.println("Points :" + array[i].arr[0].x + " " + array[i].arr[0].y);
- System.out.println("Points :" + array[i].arr[1].x + " " + array[i].arr[1].y);
- System.out.println("Points :" + array[i].arr[2].x + " " + array[i].arr[2].y);
- break;
- }
- }
- int x0;
- int choice;
- Scanner s = new Scanner(System.in);
- System.out.println("1:See what shape it is!");
- System.out.println("2: Enter to intersect the two shapes");
- System.out.println("3: Exit from the program!");
- for(i=1;i>0;i++){
- System.out.println("Enter your choice :");
- choice = s.nextInt();
- switch(choice) {
- case 1:
- label:
- System.out.println("Enter the shape number:");
- x0 = s.nextInt();
- if(x0<=99)
- System.out.println("The shape of "+ x0+"th element is "+ array[x0].Shape_name);
- else
- {
- System.out.println("Enter a number below 100!");
- }
- break;
- case 2:
- System.out.println("Enter ur two choices!");
- x1 = s.nextInt();
- x2 = s.nextInt();
- if(x1 > 99 || x2 > 99){
- System.out.println("Enter a number below 100!");
- break;
- }
- array[x1].intersect(array[x2]);
- break;
- case 3:
- System.out.println("Exiting the program!");
- System.exit(0);
- break;
- default:
- System.out.println("Invalid Choice!");
- break;
- }}
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement