計算機圖形學實訓教程(修訂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);


Shape s5= new Ellipse2D.Double(410,22,10,10);
g2.fill(s5);

注:所有坐標都依據前一個影像來調整
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/212827.html
標籤:其他
