代码之家  ›  专栏  ›  技术社区  ›  Stan Kurilin

三角类实现

  •  -2
  • Stan Kurilin  · 技术社区  · 14 年前

    public interface Triangle  {
        void moveApex(Point from, Point to);
        List<Point> getApexes();
        void rotate(double angle);
        void setLocation(Point p);
        Point getLocation();
        void setSize(Dimension d);
        Dimension getSize();
    }
    

    其中点和维数是一些整数对。你会以什么方式实现它?你会用顶点来创建一些区域,还是用2个角度和一条基线来操作? 谢谢。

    2 回复  |  直到 14 年前
        1
  •  2
  •   phimuemue    14 年前

    正如你所提到的,点可以表示为一对点。我们把这样的一对称为二维 矢量 . 矢量可以解释为从原点(坐标系)到点的箭头,也可以解释为从指示方向或运动的任何地方开始的箭头。一、 向量是一个点和一个运动的表示。

    矩阵 . 借助这些矩阵,可以很好地表达任意变换。

    矢量: http://en.wikipedia.org/wiki/Euclidean_vector

    三角形概述: http://en.wikipedia.org/wiki/Triangle

    http://en.wikipedia.org/wiki/Matrix_multiplication

    通过矩阵旋转: http://en.wikipedia.org/wiki/Rotation_matrix

    • setLocation 需要矢量移动(即矢量相加)
    • setSize 可能需要向量乘法
    • rotate 实现矩阵旋转

    当然,应该有很多实现。

        2
  •  2
  •   Romain Linsolas    14 年前

    你的 interface getLocation() 返回不同的对象。也许你得选择不同的名字,比如:

    Point getLocationAsPoint();
    Dimension getLocationAsDimension();
    

    现在,如果您使用Eclipse,您可以简单地创建一个新类,指示这个类实现 Triangle 界面,它将创建以下骨架:

    public class MyTriangle implements Triangle {
    
        @Override
        public List<Point> getApexes() {
            // TODO Auto-generated method stub
            return null;
        }
    
        @Override
        public void moveApex(Point from, Point to) {
            // TODO Auto-generated method stub
        }
    
        @Override
        public void rotate(double angle) {
            // TODO Auto-generated method stub
        }
    
        @Override
        public void setLocation(Point p) {
            // TODO Auto-generated method stub
        }
    
        @Override
        public void setSize(Dimension d) {
            // TODO Auto-generated method stub
        }
    
        @Override
        public Dimension getLocationAsDimension() {
            // TODO Auto-generated method stub
            return null;
        }
    
        @Override
        public Point getLocationAsPoint() {
            // TODO Auto-generated method stub
            return null;
        }
    
    }
    

    TDD 以便正确完成任务。

    Eclipse可以创建一个新的JUnit测试类作为您的起点:创建一个新的JUnit测试用例,然后选择 MyTriangle 类创建向导中的选项。