计算机图形学实训教程(修订1)
第五章八卦的练习
第一步:
Shape s1 = new Ellipse2D.Double(0,0,100,100);
Shape s2 = new Rectangle(50,0,100,100);
输出为; g2.draw(s1); g2.draw(s2); (此时仅为观看图像作为参考用,观后务必删除,否则影响画面效果)
添加a1、a2对分别对s1、s2实例化
Area a1 = new Area(s1);
Area a2 = new Area(s2);
//圆形(a1)与矩形(a2)的集合
a1.intersect(a2);
//void intersect(Area a)//将此区域的形状设置为当前形状与指定区域形状的交集
g2.fill(a1);
//填充 输出 半圆a1
第二步:
//上 白圈
Shape s4= new Ellipse2D.Double(25,0,51,51);
输出结果为: g2.draw(s4);
Area a4 = new Area(s4);
a1.subtract(a4);
//void subtract(Area a)//从此区域的形状中减去指定区域的形状
g2.translate(180,0);
//将所画图像在原图像的基础上进行重新定位 水平180 ,垂直0
g2.fill(a1);
第三步:
Shape s7 = new Ellipse2D.Double(50,70,10,10);
Area a7= new Area(s7);
a1.subtract(a7);
g2.translate(180,0);
g2.fill(a1);
想法:在圆圈a1中减去a7小圆的面积 重点!!移动小圆的位置在黑色区域显示,否则只有一半
第四步:
//圆形
Shape s3 = new Ellipse2D.Double(100,50,51,51);
//矩形 长100,宽100
Shape s8= new Rectangle(125,1,100,100);
Area a3 = new Area(s3);
Area a8= new Area(s8);
//void subtract(Area a)//从此区域的形状中减去指定区域的形状
a3.subtract(a8);
g2.translate(-73,-1);
g2.fill(a3);
想法:为保留中心白色小球 ,不应直接画黑圈,解决办法 矩形(a8)截半画圆(A3)
此时调整的不是//Ellipse2D.Double(100,50,51,51);,而是 g2.translate(-73,-1)
整体!!!!
第五步:
Shape s6= new Ellipse2D.Double(360,0,100,100);
g2.draw(s6);
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201111120359325.png#pic_center)
Shape s5= new Ellipse2D.Double(410,22,10,10);
g2.fill(s5);
注:所有坐标都依据前一个图像来调整