Path: csiph.com!x330-a1.tempe.blueboxinc.net!aioe.org!news.glorb.com!postnews.google.com!a21g2000prj.googlegroups.com!not-for-mail From: byhesed Newsgroups: comp.lang.java.programmer Subject: Re: Programming question determining two circle's relation Date: Sat, 30 Apr 2011 01:59:22 -0700 (PDT) Organization: http://groups.google.com Lines: 111 Message-ID: <14270bba-4ef7-4144-bba3-e0a1bb943fca@a21g2000prj.googlegroups.com> References: <892252a0-e31d-426b-8f47-d37c0b2ec364@17g2000prr.googlegroups.com> NNTP-Posting-Host: 119.202.36.92 Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Trace: posting.google.com 1304153963 19482 127.0.0.1 (30 Apr 2011 08:59:23 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Sat, 30 Apr 2011 08:59:23 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: a21g2000prj.googlegroups.com; posting-host=119.202.36.92; posting-account=v_GC8QoAAABz34PprEBWdejdnnHZvg4_ User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.60 Safari/534.24,gzip(gfe) Xref: x330-a1.tempe.blueboxinc.net comp.lang.java.programmer:3318 On Apr 30, 5:33=A0pm, byhesed wrote: > What's wrong with contains and overlaps method in Circle2D class? > It returns incorrect answers. > > - A method contains(double x, double y) returns true if the specified > point(x,y) is inside this circle. > - A method contains(Circle2D circle) returns true if the specified > circle is inside this circle. > - A method overlaps(Circle2D circle) return true if the specified > circle overlaps with this circle. > > I calculate the distance between two circles: > - double distance =3D Math.sqrt(Math.pow(circle.x - getX(), 2.0) + > Math.pow(circle.y - getY(), 2.0)); > > It's wired too me because I think it is not wrong. > > // TEST CODE > public class Exercise10_11 { > =A0 =A0 =A0 =A0 public static void main(String[] args) { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 Circle2D c1 =3D new Circle2D(2, 2, 5.5); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 System.out.println("Area is " + c1.getAre= a()); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 System.out.println("Perimeter is " + c1.g= etPerimeter()); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 System.out.println(c1.contains(3, 3)); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 System.out.println(c1.contains(new Circle= 2D(4, 5, 10.5))); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 System.out.println(c1.overlaps(new Circle= 2D(3, 5, 2.3))); > =A0 =A0 =A0 =A0 } > > } > > // Circle2D Class > public class Circle2D { > =A0 =A0 =A0 =A0 private double x; > =A0 =A0 =A0 =A0 private double y; > =A0 =A0 =A0 =A0 private double radius; > > =A0 =A0 =A0 =A0 public Circle2D() { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 x =3D 0; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 y =3D 0; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 radius =3D 1; > =A0 =A0 =A0 =A0 } > > =A0 =A0 =A0 =A0 public Circle2D(double x, double y, double radius) { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 this.x =3D x; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 this.y =3D y; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 this.radius =3D radius; > =A0 =A0 =A0 =A0 } > > =A0 =A0 =A0 =A0 public double getX() { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 return x; > =A0 =A0 =A0 =A0 } > > =A0 =A0 =A0 =A0 public double getY() { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 return y; > =A0 =A0 =A0 =A0 } > > =A0 =A0 =A0 =A0 public double getArea() { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 return radius * radius * Math.PI; > =A0 =A0 =A0 =A0 } > > =A0 =A0 =A0 =A0 public double getPerimeter() { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 return 2 * radius * Math.PI; > =A0 =A0 =A0 =A0 } > > =A0 =A0 =A0 =A0 public boolean contains(double x, double y) { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 double distance =3D Math.pow(getX() - x, = 2.0) + Math.pow(getY() - y, > 2.0); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (distance <=3D radius) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 return true; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 else > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 return false; > =A0 =A0 =A0 =A0 } > > =A0 =A0 =A0 =A0 public boolean contains(Circle2D circle) { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 double distance =3D Math.sqrt(Math.pow(ci= rcle.x - getX(), 2.0) + > Math.pow(circle.y - getY(), 2.0)); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (distance <=3D Math.abs(radius - circl= e.radius)) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 return true; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 else > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 return false; > > =A0 =A0 =A0 =A0 } > > =A0 =A0 =A0 =A0 public boolean overlaps(Circle2D circle) { > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 double distance =3D Math.sqrt(Math.pow(ci= rcle.x - getX(), 2.0) + > Math.pow(circle.y - getY(), 2.0)); > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (distance > Math.abs(radius - circle.r= adius) && distance < > Math.abs(radius + circle.radius)) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 return true; > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 else > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 return false; > =A0 =A0 =A0 =A0 } > > > > > > > > } Sorry, I found answers. Formulas were wrong. :)