Oval.java
上传用户:sdzznc
上传日期:2022-07-23
资源大小:51k
文件大小:1k
源码类别:

绘图程序

开发平台:

Java

  1. // Copyright by Scot Drysdale
  2. package cn.edu.nju.software.grapheditor.shape;
  3. import java.awt.*;
  4. public class Oval extends Shape {
  5.     public int x,y,width,height;
  6.     public Oval(Color c) {
  7. super(c);
  8. // TODO Auto-generated constructor stub
  9. }
  10.     public boolean containsPoint(Point p) {
  11. return pointInOval(p,x,y,width,height);
  12. }
  13. public void drawShape(Graphics page) {
  14. page.fillOval(x,y,width,height);// TODO Auto-generated method stub
  15. }
  16. public Point getCenter() {
  17. return new Point( (int)(x+width/2),(int)(y+height/2));
  18. }
  19. public void move(int deltaX, int deltaY) {
  20. x+=deltaX;
  21. y+=deltaY;
  22. }// YOU FILL IN INSTANCE VARIABLES AND METHODS.
  23. // Helper method that returns whether Point p is in an Oval with the given
  24. // top left corner and size.
  25. private static boolean pointInOval(Point p, int left, int top, int width,
  26. int height) {
  27. double a = width / 2.0; // half of the width
  28. double b = height / 2.0; // half of the height
  29. double centerx = left + a; // x-coord of the center
  30. double centery = top + b; // y-coord of the center
  31. double x = p.x - centerx; // horizontal distance between p and center
  32. double y = p.y - centery; // vertical distance between p and center
  33. // Now we just apply the standard geometry formula.
  34. // (See CRC, 29th edition, p. 178.)
  35. return Math.pow(x / a, 2) + Math.pow(y / b, 2) <= 1;
  36. }
  37. }