简单的静态图形(1)- 向内旋转的三角形

引言

图形学产生了十分浓厚的兴趣,同时感觉数学真的厉害,我很庆幸我是数学专业的~这里就贴一些我画过的图和程序吧,与大家一同分享一下 ~大家有好看的也要贴出来看哦o(∩_∩)o...

向内旋转的三角形

思路

生成的图形

代码

package  com.boymgl.cgexample;

import  java.awt.Canvas;
import  java.awt.Dimension;
import  java.awt.Graphics;
import  java.awt.event.WindowAdapter;
import  java.awt.event.WindowEvent;

import  javax.swing.JFrame;

@SuppressWarnings(
" serial " )
public   class  Triangles  extends  JFrame  {

    
public static void main(String[] args) {
        
new Triangles();
    }

    
    
public Triangles() {
        
super("Triangles, count = 50");
        addWindowListener(
new WindowAdapter() {
            
public void windowClosing(WindowEvent e) {
                System.exit(
0);
            }

        }
);
        setSize(
800,600);
        add(
"Center"new CvTriangles());
        setVisible(
true);
    }


}


@SuppressWarnings(
" serial " )
class  CvTriangles  extends  Canvas  {
    
    
private int maxX;
    
private int maxY;
    
private int minMaxXY;
    
private int centerX;
    
private int centerY;
    
    
private void initgr() {
        Dimension d 
= getSize();
        maxX 
= d.width - 1;
        maxY 
= d.height - 1;
        minMaxXY 
= Math.min(maxX, maxY);
        centerX 
= maxX / 2;
        centerY 
= maxY / 2;
    }

    
    
private int iX(float x) {
        
return Math.round(x);
    }

    
    
private int iY(float y) {
        
return maxY - Math.round(y);
    }

    
    
public void paint(Graphics g) {
        initgr();
        
float side = 0.95F * minMaxXY, sideHalf = 0.5F * side,
            h 
= sideHalf * (float)Math.sqrt(3),
            xA, yA, xB, yB, xC, yC,
            xA1, yA1, xB1, yB1, xC1, yC1,
            p, q;
        q 
= 0.05F;
        p 
= 1 - q;
        xA 
= centerX - sideHalf;
        yA 
= centerY - 0.5F * h;
        xB 
= centerX + sideHalf;
        yB 
= yA;
        xC 
= centerX;
        yC 
= centerY + 0.5F * h;
        
for (int i = 0; i < 50; i++{
            g.drawLine(iX(xA), iY(yA), iX(xB), iY(yB));
            g.drawLine(iX(xB), iY(yB), iX(xC), iY(yC));
            g.drawLine(iX(xC), iY(yC), iX(xA), iY(yA));
            
// move to left by 0.1 * sideHalf
            xA1 = p * xA + q * xB;
            yA1 
= p * yA + q * yB;
            xB1 
= p * xB + q * xC;
            yB1 
= p * yB + q * yC;
            xC1 
= p * xC + q * xA;
            yC1 
= p * yC + q * yA;
            xA 
= xA1;    yA = yA1;
            xB 
= xB1;    yB = yB1;
            xC 
= xC1;    yC = yC1;
        }

    }

    
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值