哈工大-软件构造-Lab2的相关问题

Lab2的相关问题

前言

接着之前的博客,这里简述一下在实验1的P2里我遇到的或同学遇到的一些问题

导入文件

这里其实就是简单的文件复制,之后刷新(刷新的问题在之前讲过了),但这时候会产生报错,这是因为包的名字和引入报的名字不对造成的,只要在前面加上“P2.”就好了。
注意:package和部分的import后面都要加
在这里插入图片描述在这里插入图片描述

JUint的使用

其实,老师是发了一段视频教学的(不知道是不是疫情期间的特殊处理),在这里再附赠一段视频,JUnit应该就差不多了(主要是这段视频是我找到的最短的,看起来不会特别烦)
JUint教学:https://www.bilibili.com/video/av80539947?from=search&seid=16452110112185829811

凸包

凸包(Convex Hull)是一个计算几何(图形学)中的概念。在一个实数向量空间V中,对于给定集合X,所有包含X的凸集的交集S被称为X的凸包。X的凸包可以用X内所有点(X1,…Xn)的凸组合来构造.

简单来讲,对于一个二维空间的点集,这个点集当中的一些点总可以形成一个凸多边形,而这个凸多边形之内恰好可以包括除了组成凸包这个凸多边以外的所有点,而这个凸多边形就是凸包。

再形象的理解一下,凸包可以看成是再木板上钉了许多钉子,用一根橡皮经框住所有钉子是所得到的多边形。
哈工大-软件构造-Lab2的相关问题_第1张图片如上图,红色点集当中的一些点可以组成黄色的凸多边,而这个凸多边恰好可以囊括所有的红色点集,这个多边形/组成多边形的点集就叫做凸包。

它的构建方法其实也比较简单:
1.遍历所有的点,找到最坐下的点(先找最左,再找最右)
2.以y轴正方向为其实方向(题里规定了),每次找转角最小的点(转角相同,就找距离远的点)
这个函数在P2之前写过,但要注意,之前输入的坐标是int型,现在是double型的,不建议进行强转,不如直接再写一遍
在这里插入图片描述有2点要说的:
(1)注意得数小于0或大于360的情况
(2)转角和现在点朝向的方向建议用2个变量来记录,这两是分开的,千万别弄混了
3.直到找回初始的点,就ok了
(具体代码就不给了,做实验还得靠自己)

后记

其实第二个实验不难,但有很多人第一次接触方法,不会写,在这里,把第一个画正方形的给出来,举一反三,就明白了

public static void drawSquare(Turtle turtle, int sideLength) {
    	if (sideLength <= 0){
    		System.out.println("The side length cannot be less than or equal to 0");
    		return ;
    		}
        for (int i = 0; i < 4; i++) {
        	turtle.forward(sideLength);
        	turtle.turn(90);
        }
    }

你可能感兴趣的:(哈工大-软件构造-Lab2的相关问题)