java写triangle_Java - 制作Triangle类
我需要创建一个名为“TriangleShape”的类来实现java.awt.Shape。
现在另一个类“TriangleComponent”应该有一个TriangleShape类的对象,它应该绘制一个三角形,并且具有给定的边长。
我设法创建它,但我读过三角形应该按照以下方式绘制:
TriangleShape t = new TriangleShape(30,40,50);
g2.draw(t); //This is the Graphics2D object that I use in paintComponent以下是我创建的代码,但它使用Line2D创建三角形。
它是TriangleShape类,假设我已经实现了Shape类的所有方法。
public class TriangleShape implements java.awt.Shape{
private double a, b, c;
private int x,y;
private Point2D loc;
public TriangleShape() {
this.a=0;
this.b=0;
this.c=0;
}
public TriangleShape(double a, double b, double c) {
//if supplied dimensions form a valid Triangle
if ( this.isValid(a,b,c) ) {
this.a = a;
this.b = b;
this.c = c;
}
//Otherwise make it zero sized triangle
else{
this.a=0;
this.b=0;
this.c=0;
}
}
public void resize(double a, double b, double c) {
if ( this.isValid(a,b,c) ) {
this.a = a;
this.b = b;
this.c = c;
}
//else let size remain unchanged
}
public TriangleShape getRandomTriangle() {
TriangleShape t = new TriangleShape(5,8,9);
return t;
}
public double area(){
double area, s;
s = (a+b+c)/2;
area = Math.sqrt(s *(s-a) * (s-b) * (s-c));
return area;
}
private boolean isValid(double a, double b, double c) {
double s = (a+b+c)/2;
if ( ((s-a) * (s-b) * (s-c)) <= 0 )
return false;
else
return true;
}
public double perimeter() {
double p;
p = a+b+c;
return p;
}
public double getA(){
return a;
}
public double getB(){
return b;
}
public double getC(){
return c;
}
public void setLocation(Point2D location){
loc = location;
}
public Point2D getLocation(){
return loc;
}
public double getX(){
return loc.getX();
}
public double getY(){
return loc.getY();
}和TriangleComponent类:
public class TriangleComponent extends JComponent{
TriangleShape t;
double alpha, beta, gamma;
double a,b,c;
double X,Y;
@Override
protected void paintComponent(Graphics g) {
//super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
t = new TriangleShape(100,100,190);
t.setLocation(new Point2D.Double(100,500));
a = t.getA();
b = t.getB();
c = t.getC();
X = t.getX();
Y = t.getY();
///Drawing Base line.....
g2.draw(new Line2D.Double(X,Y,(X+c),Y)); //line c...
g2.draw(new Line2D.Double((X+c), Y, ((X+c)+a*Math.cos(Math.PI+getBeta())), (Y+a*Math.sin(Math.PI+getBeta())))); //line a...
//JOIning the last end points
g2.draw(new Line2D.Double(X, Y, ((X+c)+a*Math.cos(Math.PI+getBeta())), (Y+a*Math.sin(Math.PI+getBeta()))));
System.out.println("X1 = "+X+" Y1 = "+Y);
System.out.println("X2 = "+(X+c)+" Y2 = "+Y);
System.out.println("X3 = "+((X+c)+a*Math.cos(Math.PI+getBeta()))+" Y3 = "+ (Y+a*Math.sin(Math.PI+getBeta())));
//System.out.println("Alpha = "+getAlpha());
System.out.println("Gamma = "+(getGamma()*180)/Math.PI);
}
public double getAlpha(){
double temp = Math.acos(((Math.pow(c, 2)+Math.pow(b, 2))-Math.pow(a, 2))/(2*b*c));
System.out.println("Alpha = "+temp+" Degrees");
return temp;
}
public double getBeta(){
double temp = Math.acos(((Math.pow(c, 2)+Math.pow(a, 2))-Math.pow(b, 2))/(2*a*c));
System.out.println("Beta = "+temp+" Degrees");
return (temp);// * Math.PI)/180;
}
public double getGamma(){
double temp = Math.acos(((Math.pow(a, 2)+Math.pow(b, 2))-Math.pow(c, 2))/(2*b*a));
System.out.println("Gamma = "+temp+" Degrees");
return (temp);// * Math.PI)/180;
}
}这是有效的,但我需要一种绘制三角形的方式,而不依赖Graphics2D或直接使用paintComponent方法绘制它。有没有办法做到这一点?
java写triangle_Java - 制作Triangle类相关推荐
- 用Java写LRC制作器,实现音乐播放和滑块条进度同步
最近两天,我第一次尝试用Java写一个GUI程序,写了个LRC文件编辑器.简单地说,就是先导入歌,然后导入歌词(顺序可以颠倒,导入歌词可以用复制粘贴代替),然后一边播放歌曲,一边添加时间标签.然后根据 ...
- java ubb_月光软件站 - 编程文档 - Java - JAVA写的简单UBB类
最近做论坛碰到了UBB的问题,这个很大众化的东西,怎么没有JAVA写的解释器呢,实在是该写一个.下面的这个不全,但是可以应付一下. import java.util.*; public class H ...
- java 计时 timeclock_用 java 写一个clock的类,100毫秒的时钟 求代码。。越简单越好。。最好有注释...
展开全部 这里有一个时钟的类,你看一下吧,不明白你的 100毫秒的时钟 是什么意思. import java.awt.BasicStroke; import java.awt.BorderLayout ...
- java 写 xml 文件 工具类_XML读写工具类
摘要:①读取XML文件,生成pojo对象:②将对象信息保存到xml中. 步骤: ①新建一个普通的java类BasePage: packagecom.test.selenium.pages;import ...
- Java写一个excel工具类_Java中Excel写操作工具类--Java免费学习网
核心提示:package com.common.excel;import com.common.excel.exception.WriteExcelException;import jxl.Workb ...
- 用java写一个单例类_Java 写一个单例模式(Singleton)出来
第一种:饱汉模式 public class SingleTon{ private SingleTon(){ } //实例化放在静态代码块里可提高程序的执行效率,但也可能更占用空间 privat ...
- java 程序写出三个类,triangle,lader,circle(简单易懂)
编写一个Java应用程序,该程序中有三个类:Triangle.Trapezoid和Circle,分别用来刻画"三角形"."梯形"和"圆形". ...
- Java黑皮书课后题第11章:11.1(Triangle类)设计一个名为Triangle的类来继承GeometricObject类。该类包括:
画出Triangle类和GeometricObject类的UML图,并实现这些类.编写一个测试程序,提示用户输入三角形的三条边.颜色以及一个boolean值表明该三角形是否填充.程序需要根据输入创建一 ...
- Java制作的类祖码游戏-数字祖码
古老的传说--祖玛 20世纪初,传说在秘鲁安第斯山脉的崇山峻岭中有座神秘古城.西班牙人在长达300多年的殖民统治期间对它一无所知,秘鲁独立后100年里也无人涉足.在400年的时光中,只有翱翔的 ...
最新文章
- 都在建议,不要直接使用 @Async 注解,为什么?
- Linux : SUID SGID
- python在当前目录创建txt文件-python-在目录中创建多个文本文件的字数字...
- 初学者怎样看懂python代码_入门编程(初学者怎样看懂代码)
- 采用光线跟踪绘制场景 c++_光线追踪的相干性聚集:硬件光线追踪的优势
- [java] Unsupported major.minor version 51.0 错误解决方案
- 比较各种SpA分类标准
- FckEditor 2.6.4升级手记
- ueditor 禁止编辑_织梦ueditor百度编辑器div style被过滤解决办法
- 明解C语言第七章习题
- 关于使用tess4j-OCR识别图片中文教程,亲测可用,不报错
- 使用 Python 做音频处理·总章(持续更新)
- 2022保研经验帖——吉大、华师、浙大、中大、南航/理、东南、南开等
- 人工智能--自然演绎推理
- 接着奏乐接着舞 Matlab制作圣诞树和圣诞快乐歌
- ios appstore 审核 Guideline 5.2.2 资讯类APP解决方案
- python高阶学习之一:c++调用python
- 扫雷html5简单初级,纯原生JS用面向对象class方法实现简易扫雷小游戏
- SQL Server AlwaysON从入门到进阶(6)——分析和部署AlwaysOn Availability Group
- Dobbo问题及解决方案:forbid-consumer