⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 arrow.java

📁 绘制箭头算法:使用向量来绘制箭头
💻 JAVA
字号:

class Arrow // 箭头类
{
    void draw(Graphics2D g2d)
    {
        g2d.setPaint(new Color(R, G, B));
        g2d.setStroke(new BasicStroke(stroke, BasicStroke.CAP_ROUND,
                BasicStroke.JOIN_BEVEL));
        // 利用向量来进行计算
        int len = 10; // 箭头的边长
        int x0 = 0, y0 = 0;      
        double dx = x2 - x0, dy = y2 - y0;
        
        //共线 模长为len
        //0 = (x2 -x1)*dy  - dx*(y2 -y1); dx*dx + dy*dy = len*len
        double mAB = (x2 - x1)*(x2 - x1) + (y2 - y1)*(y2 - y1);
        dx = (x2 -x1)*len / java.lang.Math.sqrt(mAB) ;
        dy = (y2 -y1)*len / java.lang.Math.sqrt(mAB) ;
        x0 = (int) (x2 - dx);
        y0 = (int) (y2 - dy);
        
        int x3 = 0, y3 = 0, x4, y4; 
        dx = x3 - x0;
        dy = y3 - y0;
        double mCB = (x2 - x0)*(x2 - x0) + (y2 - y0)*(y2 - y0);
        dx = -(y2 -y0)*len / java.lang.Math.sqrt(mCB) ;
        dy = (x2 -x0)*len / java.lang.Math.sqrt(mCB) ;
        x3 = (int) (dx + x0);
        y3 = (int) (dy + y0);
        x4 = 2*x0 - x3;
        y4 = 2*y0 - y3;
        
        g2d.drawLine(x1, y1, x0, y0);
        g2d.setPaint(new Color(255, 0, 0));
        Polygon p = new Polygon();
        p.addPoint(x2, y2);
        p.addPoint(x3, y3);
        p.addPoint(x4, y4);
        g2d.drawPolygon(p);
        g2d.fillPolygon(p);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -