
正文
java代码证明两线平行 证明两条平行线
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
java编程判断这两条直线是否相交?,若相交,求出交点。
您好,下面是我写的代码,麻烦看一下是否符合要求。
Point类:
public class Point {
private int x;
private int y;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
Line类:
public class Line {
private Point a;
private Point b;
public Point getA() {
return a;
}
public Point getB() {
return b;
}
public Line(Point a, Point b) {
this.a = a;
this.b = b;
}
}
LineIntersect类:
public class LineIntersect {
private Line ab;
private Line cd;
public LineIntersect(Line ab, Line cd) {
this.ab = ab;
this.cd = cd;
}
public void JudgeLineIntersect() {
Point A = this.ab.getA();
Point B = this.ab.getB();
Point C = this.cd.getA();
Point D = this.cd.getB();
int d1 = (B.getY() - A.getY()) * (D.getX() - C.getX());
int d2 = (B.getX() - A.getX()) * (D.getY() - C.getY());
int d3 = (C.getY() - A.getY()) * (B.getX() - A.getX());
int d4 = (C.getX() - A.getX()) * (B.getY() - A.getY());
if (d1 == d2) {
System.out.println("两条直线平行。");
} else if (d3 == d4) {
System.out.println("两条直线重合。");
} else {
System.out.println("两条直线相交。");
int d5 = C.getY() * D.getX() - C.getX() * D.getY();
int d6 = A.getY() * B.getX() - A.getX() * B.getY();
float intersect_x = ((C.getX() - D.getX()) * d6 - (A.getX() - B.getX()) * d5)
/ ((B.getY() - A.getY()) * (D.getX() - C.getX()) - (B.getX() - A.getX()) * (D.getY() - C.getY()));
float intersect_y = ((C.getY() - D.getY()) * d6 - (A.getY() - B.getY()) * d5)
/ ((B.getY() - A.getY()) * (D.getX() - C.getX()) - (B.getX() - A.getX()) * (D.getY() - C.getY()));
System.out.println("交点的X坐标为:" + intersect_x);
System.out.println("交点的Y坐标为:" + intersect_y);
}
}
}
下面是主类(测试类):
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.print("请输入A点的X坐标:");
Scanner inAX = new Scanner(System.in);
int ax = inAX.nextInt();
System.out.print("请输入A点的Y坐标:");
Scanner inAY = new Scanner(System.in);
int ay = inAY.nextInt();
System.out.print("请输入B点的X坐标:");
Scanner inBX = new Scanner(System.in);
int bx = inBX.nextInt();
System.out.print("请输入B点的Y坐标:");
Scanner inBY = new Scanner(System.in);
int by = inBY.nextInt();
System.out.print("请输入C点的X坐标:");
Scanner inCX = new Scanner(System.in);
int cx = inCX.nextInt();
System.out.print("请输入C点的Y坐标:");
Scanner inCY = new Scanner(System.in);
int cy = inCY.nextInt();
System.out.print("请输入D点的X坐标:");
Scanner inDX = new Scanner(System.in);
int dx = inDX.nextInt();
System.out.print("请输入D点的Y坐标:");
Scanner inDY = new Scanner(System.in);
int dy = inDY.nextInt();
Point A = new Point();
A.setX(ax);
A.setY(ay);
Point B = new Point();
B.setX(bx);
B.setY(by);
Point C = new Point();
C.setX(cx);
C.setY(cy);
Point D = new Point();
D.setX(dx);
D.setY(dy);
Line AB = new Line(A, B);
Line CD = new Line(C, D);
LineIntersect lineIntersect = new LineIntersect(AB, CD);
lineIntersect.JudgeLineIntersect();
inAX.close();
inAY.close();
inBX.close();
inBY.close();
inCX.close();
inCY.close();
inDX.close();
inDY.close();
}
}
下面是我刚才做的测试结果:
相关问答
Q1: java 判断一个平面两条直线是否平行
两点成一线,两线成一面
如果在坐标系里面,可以根据坐标判断啊
Q2: java 如何在jpanel上画垂直线、水平线、平行线?
定义一个类继承JPanel类,重写 JPanel 的 paint 方法,使用 Graphics 绘制线段,如下代码:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
class MyPanel extends JPanel {
@Override
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.RED);
for (int i = 0; i 10; i++) {
g.drawLine(10, 10 + i * 20, this.getWidth() - 10, 10 + i * 20);
}
for (int i = 0; i 10; i++) {
g.drawLine(10 + i * 20, 10, 10 + i * 20, this.getHeight() - 10);
}
}
}
public class App extends JFrame {
public App() {
this.setSize(400, 400);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MyPanel panel = new MyPanel();
this.add(panel, BorderLayout.CENTER);
}
public static void main(String[] args) {
new App().setVisible(true);
}
}
运行结果:
java代码证明两线平行的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于证明两条平行线、java代码证明两线平行的信息别忘了在本站进行查找喔。








