永发信息网

怎么用java画箭头

答案:1  悬赏:50  手机版
解决时间 2021-04-04 06:55
怎么用java画箭头
最佳答案

public void paintk(GC g, int x1, int y1, int x2, int y2) {

double H = 10 ; // 箭头高度
double L = 7 ; // 底边的一半
int x3 = 0 ;
int y3 = 0 ;
int x4 = 0 ;
int y4 = 0 ;
double awrad = Math.atan(L / H); // 箭头角度
double arraow_len = Math.sqrt(L * L + H * H); // 箭头的长度
double [] arrXY_1 = rotateVec(x2 - x1, y2 - y1, awrad, true , arraow_len);
double [] arrXY_2 = rotateVec(x2 - x1, y2 - y1, - awrad, true , arraow_len);
double x_3 = x2 - arrXY_1[ 0 ]; // (x3,y3)是第一端点
double y_3 = y2 - arrXY_1[ 1 ];
double x_4 = x2 - arrXY_2[ 0 ]; // (x4,y4)是第二端点
double y_4 = y2 - arrXY_2[ 1 ];

Double X3 = new Double(x_3);
x3 = X3.intValue();
Double Y3 = new Double(y_3);
y3 = Y3.intValue();
Double X4 = new Double(x_4);
x4 = X4.intValue();
Double Y4 = new Double(y_4);
y4 = Y4.intValue();
// g.setColor(SWT.COLOR_WHITE);
// 画线
g.drawLine(x1, y1, x2, y2);
// 画箭头的一半
g.drawLine(x2, y2, x3, y3);
// 画箭头的另一半
g.drawLine(x2, y2, x4, y4);

}



public double [] rotateVec( int px, int py, double ang, boolean isChLen,
double newLen) {

double mathstr[] = new double [ 2 ];
// 矢量旋转函数,参数含义分别是x分量、y分量、旋转角、是否改变长度、新长度
double vx = px * Math.cos(ang) - py * Math.sin(ang);
double vy = px * Math.sin(ang) + py * Math.cos(ang);
if (isChLen) {
double d = Math.sqrt(vx * vx + vy * vy);
vx = vx / d * newLen;
vy = vy / d * newLen;
mathstr[ 0 ] = vx;
mathstr[ 1 ] = vy;
}
return mathstr;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
决定电路中感应电动势的大小的是穿过这一电路
关于小白兔的谜语,关于兔子的谜语有哪些?谁
这个翡翠吊坠上面有个像是小猴子长长的尾巴环
请问不锈铁1CR13材质的 旧国标叫什么?美标叫
使命召唤联合进攻第三关为什么总是打不完反坦
三星GT-i9220
电影《八英里》里面的阿姆穿的衣服是什么牌子
我想买婚房,在兴文求好点的楼盘
十岁男孩的毛裤织多长才分裤裆
鼓励自食其力的句子,以自食其力为话题的议论
下列各数据中,属于准确数的是A.小明的体重为
我86我男朋友90的,请问我们能在一起吗?能长
求十个超级生僻的汉字
电脑的电源不连接主板如何让他启动我想直接用
钱塘湖春行小散文改写的,50字
推荐资讯
我国的网民中人数最多的是哪些人?A.科技工作
单选题马克思说:“市场总是在扩大,需求总是
以留香为话题的作文800字
怎样教育孩子写字,如何教孩子写字
净宗拜佛与密宗五加行拜佛方式一样吗?
小米v6无线网热点怎么设连接人数
华硕笔记本电脑怎样检查是否是全新的
轩逸2012款 1.6XE 经典手动舒适版怎么样
车子电瓶打反了再接回来发动机怎么不发电了,
安徽省公务员考试报考安徽省安全厅,怎么查成
二十多岁的青年是创业好还是打工好?创业没有
烫伤的程度怎么分等级的,具体情况是什么?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?