软件构造实验一思考

任务2中方法Calculating Bearings的编写

问题: 求给定两个点和初始方向,求转向角度。
(1)
最开始考虑通过建立两个向量来求夹角。应用向量夹角的公式来计算余弦值。
测试的时候发现,如果出现(0,0)的点,就存在空向量了,那么夹角无论如何都是0。
如果要排除0向量,需要加的限制条件太多,编写难度比较大。
(2)
查阅资料得知Math.atan2()方法(来自菜鸟教程)在这里插入图片描述
可以通过这个函数来计算角度。
将targetY - currentY, targetX – currentX (注意此处的x,y已经调换)作为新的坐标,计算这个坐标在坐标系中和x轴的夹角。可以推知这个角刚好与是原来从y轴转到目标点的转向角度,用这个角度减去当前角度就是需要的值了。只不过可能会出现负值,加上360即可

convexHull函数的编写

这个函数求凸包,我写的程序思想很简单,就是遍历所有的点,找出和当前点转向角最小的,作为下一个点,直到返回最初点。
大体实现后测试用例通不过。
检查后添加:当点数小于3时直接返回。
还是通不过测试用例。
后来尝试在输入的pionts集合上删除已有的点来防止重复(后来发现没必要,已有的点肯定是角度较大的,不会进入结果集合),结果是程序直接出错了。当时编写时觉得可能是不能删除元素,删除了里面就乱了。(猜测的,后来上课知道了删除的话要用迭代器,我实现时用的是for循环)。
最后发现是因为存在共线的点,然后就选取了第一次遇到的点。
添加共线的判断,把转向角最小的那组存起来,再选出距离当前点最远的,就是要的目标点。

FriendshipGraph类的测试类编写

第一次写这种测试类的代码,没什么经验,主要是模仿P2中的代码和习题课的测试代码:划分等价类,测试边界等等。
大致测试了添加同名人物,添加自己到自己的边,测试单向边情况下的距离计算等情况。

脱离Eclipse进行build

这里我尝试使用ant去进行build,但是在网上查看教程后发现build.xml的编写挺复杂的,所以暂时没有脱离Eclipse去进行代码的测试。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值