三葉玫瑰并不是植物,你也說啦,是專門研究數(shù)學(xué)的。其實是一種三葉玫瑰線的 java代碼
魏都網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運營維護(hù)。成都創(chuàng)新互聯(lián)公司從2013年創(chuàng)立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。
S 3:
輸入下面程序用于輸出三葉玫瑰線的圖形,三葉玫瑰線的參數(shù)方程為:
x = r * sin(3t)* sin(t);y = r *sin(3t) * sin(t) 其中: 0 = t = 2 * 3.14159
#include stdio.h
#include math.h
#define RADIUS 12
#define PII 3.14159
void main(void)
{
char tx[2 * RADIUS + 1][2 * RADIUS + 1];
int nT;
int nX;
int nY;
double dbD;
for(nX = 0; nX 2 * RADIUS + 1; nX++)
{
for(nY = 0; nY 2 * RADIUS + 1; nY++)
{
tx[nX][nY] = '';
}
}
for(nT = 0; nT = 360; nT += 4)
{
dbD = nT * PII / 180;
nX = (int)(RADIUS * sin(3 * dbD) * sin(dbD)) + RADIUS;
nY = (int)(RADIUS * sin(3 * dbD) * cos(dbD)) + RADIUS;
tx[nX][nY] = '*';
}
for(nX = 0; nX 2 * RADIUS + 1; nX++)
{
for(nY = 0; nY 2 * RADIUS + 1; nY++)
{
printf("%2c", tx[nX][nY]);
}
printf("\n");
}
}
java繪圖類的graphics的drawLine(x1,y1,x2,y2)四個參數(shù)分別指
x1 - 第一個點的 x 坐標(biāo)。
y1 - 第一個點的 y 坐標(biāo)。
x2 - 第二個點的 x 坐標(biāo)。
y2 - 第二個點的 y 坐標(biāo)。
drawLine函數(shù)的作用是 在此圖形上下文的坐標(biāo)系中,使用當(dāng)前顏色在點 (x1, y1) 和 (x2, y2) 之間畫一條線。
Java語言在Graphics類提供繪制各種基本的幾何圖形的基礎(chǔ)上,擴(kuò)展Graphics類提供一個Graphics2D類,它擁用更強(qiáng)大的二維圖形處理能力,提供、坐標(biāo)轉(zhuǎn)換、顏色管理以及文字布局等更精確的控制。
繪圖屬性
Graphics2D定義了幾種方法,用于添加或改變圖形的狀態(tài)屬性??梢酝ㄟ^設(shè)定和修改狀態(tài)屬性,指定畫筆寬度和畫筆的連接方式;設(shè)定平移、旋轉(zhuǎn)、縮放或修剪變換圖形;以及設(shè)定填充圖形的顏色和圖案等。圖形狀態(tài)屬性用特定的對象存儲。
1. stroke屬性
stroke屬性控制線條的寬度、筆形樣式、線段連接方式或短劃線圖案。該屬性的設(shè)置需要先創(chuàng)建BasicStroke對象,再調(diào)用setStroke()方法來設(shè)置。創(chuàng)建BasicStroke對象的方法有:
BasicStroke(float w):指定線條寬w。
BasicStroke(float w,int cap, int join):
cap是端點樣:CAP_BUTT(無修飾),CAP_ROUND(半圓形末端),CAP_SQUARE(方形末端,默認(rèn)值)。
Join定義兩線段交匯處的連接方式:JOIN_BEVEL(無修飾),JOIN_MTTER(尖形末端,默認(rèn)值),JOIN_ROUND(圓形末端)。
2. paint屬性
paint屬性控制填充效果。先調(diào)用以下方法確定填充效果,理用setPaint()方法設(shè)置。
GradientPaint(float x1,float y1,Color c1,float x2,flaot y2,Color c2):從(x1,y1)到(x2,y2)顏色從c1漸變到c2。其中:參數(shù)c1,c2決定這個漸變色是從顏色c1漸變到顏色c2。參數(shù)x1,y1,x2,y2決定了漸變的強(qiáng)弱,即要求從點(x1,y1)出發(fā)到達(dá)點(x2,y2),顏色從c1變成c2。
GradientPaint(float x1,float y1,Color c1,float x2,float y2,Color c2,Boolean cyclic):如果希望漸變到終點又是起點的顏色,應(yīng)將cyclic設(shè)置為true。
3. transform屬性
transform 屬性用來實現(xiàn)常用的圖形平移、縮放和斜切等變換操作。首先創(chuàng)建AffineTransform對象,然后調(diào)用setTransform()方法設(shè)置transform屬性。最后,用具有指定屬性的Graphics2D對象繪制圖形。創(chuàng)建AffineTransform對象的方法有:
getRotateinstrance(double theta):旋轉(zhuǎn)theta弧度。
getRotateInstance(double theta,dioble x,double y):繞旋轉(zhuǎn)中心(x,y)旋轉(zhuǎn)。
getScaleInstance(double sx,double sy):x和y 方向分別按sx,sy比例變換。
getTranslateInstance(double tx,double ty):平移變換。
getShearInstance(double shx,double shy):斜切變換,shx和shy指定斜拉度。
也可以先創(chuàng)建一個沒有transform屬性的AffineTransform對象,然后用以下方法指定圖形平移、旋轉(zhuǎn)、縮放變換屬性。
transelate(double dx,double dy):將圖形在x軸方向平移dx像素。
scale(double sx,double sy):圖形在x軸方向縮放sx倍,縱向縮放sy倍。
rotate(double arc,double x, double y):圖形以點(x,y)為軸點,旋轉(zhuǎn)arc弧度。
例如,創(chuàng)建AffineTransform對象:
AffineTransform trans = new AffineTransform();
為AffineTransform對象指定繞點旋轉(zhuǎn)變換屬性:
Trans.rotate(50.0*3.1415927/180.0,90,80);
接著為Graphics2D 的對象g2d設(shè)置具有上述旋轉(zhuǎn)變換功能的“畫筆”:
Graphics2D g2d = (Graphics2D)g;g2d.setTranstorm(trans);
最后,以圖形對象為參數(shù)調(diào)用具有變換功能的Graphics2D 對象的draw()方法。例如,設(shè)已有一個二次曲線對象curve,以下代碼實現(xiàn)用上述旋轉(zhuǎn)功能的g2d對象繪制這條二次曲線:
g2d.draw(curve);
4. clip屬性
clip屬性用于實現(xiàn)剪裁效果。設(shè)置剪裁屬性可調(diào)用setClip()方法確定剪裁區(qū)的Shape。連續(xù)多個setClip()得到它們交集的剪裁區(qū)。
5. composit屬性
composit屬性設(shè)置圖形重疊區(qū)域的效果。先用方法AlphaComposite.getInstance(int rule, float alpha)得到AlphaComposite對象,再通過setComposite()方法設(shè)置混合效果。Alpha值的范圍為0.0f(完全透明)-0.1f(完全不透明)。
Graphics2D類的繪圖方法
Graphics2D類仍然保留Graphics類的繪圖方法,同時增加了許多新方法。新方法將幾何圖形(線段、圓等)作為一個對象來繪制。在java.awt.geom包中聲明的一系列類,分別用于創(chuàng)建各種身體圖形對象。主要有:
Line2D線段類,RoundRectangle2D圓角矩形類,Ellipse2D橢圓類,Arc2D圓弧類,QuadCurve2D二次曲線類,CubicCurve2D三次曲線類。
要用Graphics2D類的新方法畫一個圖形。先在重畫方法paintComponent()或paint()中,把參數(shù)對象g強(qiáng)制轉(zhuǎn)換成Graphics2D對象;然后,用上述圖形類提供的靜態(tài)方法Double()創(chuàng)建該圖形的對象;最后,以圖形對象為參數(shù)調(diào)用Graphics2D對象的draw()方法繪制這個圖形。例如以下代碼用Graphics2D的新方法繪制線段和圓角矩形:
Graphics2D g2d = (Graphics2D)g;//將對象g類型從Graphics轉(zhuǎn)換成Graphics2D
Line2D line = new Line2D.Double(30.0,30.0,340.0,30.0);
g2d.draw(line);
RoundRectangle2D rRect = new RoundRectangle2D.Double(13.0,30.0,100.0,70.0,40.0,20.0);
g2d.draw(rRect);
也可以先用java.awt.geom包提供的Shape對象,并用單精度Float坐標(biāo)或雙精度Double坐標(biāo)創(chuàng)建Shape對象,然后再用draw()方法繪制。例如,以下代碼先創(chuàng)建圓弧對象,然后繪制圓弧:
Shape arc = new Arc2D.Float(30,30,150,150,40,100,Arc2D.OPEN);
g2d.draw(arc)/繪制前面創(chuàng)建的圖形對象arc
//圖形類作父類
public class Diagram {
//計算面積
public double area(){return 0;}
}
//圓類:繼承圖形類
public class Crile extends Diagram{
private double r;
public Crile(double r){
this.r=r;
}
//重寫area方法
public double area(){
double r=this.r;
return r*r*3.14;
}
}
//三角形類:繼承圖形類
public class Triangle extends Diagram{
private double high; //三角形的高
private double bottom; //三角形的底
public Triangle(double h,double b){
this.high=h;
this.bottom=b;
}
public double area(){
double h=this.high;
double b=this.bottom;
return h*b/2;
}
}
//測試
public class test {
public static void main(String[] args) {
System.out.println("請選擇圖形的類型:(1)三角形(2)圓");
Scanner scanner=new Scanner(System.in);
int i=scanner.nextInt();
if(i==1){
System.out.println("你選擇的是三角形!請輸入三角形高長(回車結(jié)束):");
double high=scanner.nextLong();
System.out.println("請輸入三角形底長(回車結(jié)束):");
double bottom=scanner.nextLong();
//這里體現(xiàn)動態(tài),如果選擇的圖形是三角形,那么創(chuàng)建三角形類
//調(diào)用的時候就是調(diào)用的三角形的方法
Diagram diagram=new Triangle(high, bottom);
System.out.println("三角形的面積為:"+diagram.area());
}
if(i==2){
System.out.println("你選擇的是圓形!請輸入圓的半徑(回車結(jié)束):");
double r=scanner.nextLong();
Diagram diagram=new Crile(r);
System.out.println("三角形的面積為:"+diagram.area());
}
}
}
其他的一樣了,純手工 望采納!
網(wǎng)站欄目:java代碼各種圖形參數(shù),Java圖形
網(wǎng)頁網(wǎng)址:http://muchs.cn/article48/hcigep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、域名注冊、響應(yīng)式網(wǎng)站、App設(shè)計、外貿(mào)建站、網(wǎng)頁設(shè)計公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)