java实现心形图案|桃心

There is something wrong when you use thedouble type minus an int type. Because when you refer to a double type.

Eg. Double 1.0;

Some ide may get the value 1.00000000000

And others may get 0.999999999999999

But they represent the same number.

The same problem here.

So you must find the precise position here.

 

for this we use the function (x^2+y^2-1)^3 - x^2*y^3 = 0;

单个桃心:

       public static void main(String argv[]){
              for(float y = (float) 1.5;y>-1.5;y -=0.1)
              {
                     for(float x= (float) -1.5;x<1.5;x+= 0.05)
                     {
                           float a = x*x+y*y-1;
                           if((a*a*a-x*x*y*y*y)<=0.0)
                           {
                                  
                                  
                                  System.out.print("*");
                           
                           }
                           else
                                  System.out.print(" ");
                     }
                     System.out.print("\n");
              }
       }

for two of the pic

       public static void main(String argv[]){
        for(float y = (float) 1.5;y>-1.5;y -=0.1)
        {
               for(float x= (float) -1.5;x<1.5;x+= 0.05)
               {
                     float a = x*x+y*y-1;
                     if((a*a*a-x*x*y*y*y)<=0.0)
                     {
                           if(Math.abs(x+0.100000712)<=1e-6 && Math.abs(y-0.6999998)<=1e-6)
                           {
                                     System.out.print("F");
                                   continue;
                            }
                           if(Math.abs(x+0.050000306)<=1e-6 && Math.abs(y-0.6999998)<=1e-6)
                            {
                                   System.out.print("r");
                                   continue;
                            }
                            if(Math.abs(x+-3.0621885E-7)<=1e-6 && Math.abs(y-0.6999998)<=1e-6)
                            {
                                   System.out.print("a");
                                   continue;
                            }
                            if(Math.abs(x-0.049999695)<=1e-6 && Math.abs(y-0.6999998)<=1e-6)
                            {
                                   System.out.print("n");
                                   continue;
                            }
                            if(Math.abs(x-0.100000001)<=1e-6 && Math.abs(y-0.6999998)<=1e-6)
                            {
                                   System.out.print("k");
                                   continue;
                            }
                            
                            System.out.print("*");
                     
                     }
                     else
                            System.out.print(" ");
               }
               
               for(float x= (float) 1.5;x<4.5;x+= 0.05)
               {
                     float a = (x-3)*(x-3)+y*y-1;
                     boolean flag = false;
                     if((a*a*a-(x-3)*(x-3)*y*y*y)<=0.0)
                     {
                           if(Math.abs(x-3+0.100000712)<=1e-6 && Math.abs(y-0.6999998)<=1e-6)
                           {
                                     System.out.print("C");
                                     flag = true;
                                   continue;
                            }
                           if((Math.abs(x-2.9499986)) <= 1e-6 && Math.abs(y-0.6999998)<=1e-6 )
                            {
                                   System.out.print("a");
                                   continue;
                            }
                            if(Math.abs(x-2.9999986)<=1e-6 && Math.abs(y-0.6999998)<=1e-6)
                            {
                                   System.out.print("s");
                                   continue;
                            }
                            if(Math.abs(x-3.0499985)<=1e-6 && Math.abs(y-0.6999998)<=1e-6)
                            {
                                   System.out.print("i");
                                   continue;
                            }
                            if(Math.abs(x-3.0999985)<=1e-6 && Math.abs(y-0.6999998)<=1e-6)
                            {
                                   System.out.print("o");
                                   continue;
                            }
                            
                            System.out.print("*");
                     
                     }
                     else
                            System.out.print(" ");
               }
               
               System.out.print("\n");
        }
       }


你可能感兴趣的:(java)