A. 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();
}
}
下面是我刚才做的测试结果:
B. Java 线段和圆相交,求焦点坐标
通过线段的两个坐标可以求出线段的方程。再和圆的方程联立,求的解就是焦点的坐标。
C. java怎么判断线段与圆相交
先求线段到圆心的距离,来跟半径比较,如果大于半径,则不相交,else,判断线段是否包含垂心,若包含,则相交,否则,不相交。。。这是思路问题,java代码很好实现的。
D. 已知三个圆心 (a1,b1) (a2,b2) (a3,b3) ,半径 r1, r2 ,r3 ,求用 javascirpt 或是 php 或是 C 求出 交点
用C语言相银薯兄当复手银杂 以及javascript和Php 介意你用matlab 它的语法和C很锋袭像 稍微对照下酒明白了
E. 如何求两个圆的交点坐标,请举例
将两个圆的方程相减,就消掉了x²,y²项,剩下一个关于x, y的一次方程,可解得y=kx+b。
再用代入法,将y=kx+b代入其中一笑唤丛个圆的方程,就得到关于x的一元二次方程,解得x。
从而由y=kx+b得到y。
圆的一般方程为 x^2+y^2+Dx+Ey+F=0 (D^2+E^2-4F>0),或可以表示为(X+D/2)^2+(Y+E/2)^2=(D2+E2-4F)/4
圆半径的长度定出圆周的大小,圆心的位置确定圆在平面上的位置。如果已知:(1)圆半径长R;(2)中心A的坐标(a,b),则圆的大小及其在平面上关于坐标轴的位置就已确定碰樱。根据图形的几何尺寸与坐标的联系可以得出圆的标准方程。
(5)java圆的交点扩展阅读
关于圆的定理有:
1、切线定理
垂直于过切点的半径;经过半径的外端点,并且垂直于这条半径的直线,是这个圆的切线。
切线的判定方法:经过半径外端并且垂直于这条半径的直线是圆的切线。
2、切线长定理
从圆外一点到圆的两条切线的长相等,那点与圆心的连线平分切线的夹角。
3、切割线定链羡理
圆的一条切线与一条割线相交于p点,切线交圆于C点,割线交圆于A B两点 , 则有pC^2=pA·pB
设ABP是⊙O的一条割线,PT是⊙O的一条切线,切点为T,则PT²=PA·PB
4、割线定理
从圆外一点引圆的两条割线,这一点到每条割线与圆交点的距离的积相等。
一条直线与一条弧线有两个公共点,我们就说这条直线是这条曲线的割线。
5、垂弦定理
垂直于弦的直径平分这条弦,并且平分这条弦所对的两条弧。
6、弦切角定理
弦切角等于对应的圆周角。(弦切角就是切线与弦所夹的角)
F. java中如何计算两条线的交点
1.列方程解应用题
2.数形结合解题
G. java怎么画出一个五角星里边有一个五边形
画一条水平线,通过此线上的任意点做一个圆。 2.将圆规的一腿放在圆与直线的其一交点上,通过上述圆的圆心画半圆,并与之交两点。连接这两点做垂直线,与先前的水平线相交与(a)点. 3.张开圆规,以水平线与第一个圆的两个交点为圆心以相同半径在水平线上下第一个圆外分别做两个交点,这样可以得到一条通过第一个圆圆心的正交线,与第一个圆相交的位于水平线上方的点称之为(b).这是正五边形的第一个角。 4.将圆规的一脚放在(a)点上,(a)(b)间距为半径做另一个圆,交水平线于点(c)。 5.将圆拆迹帆规的一脚放在(b)点上,(b)(c)间距为半径做圆,交第一个圆州者于两点,这是正五边形的第二、三两点。 6.将圆规的一脚分别放在二、三两点上,旅雹同样是(b)(c)间距为半径交第一个圆于另外两点,这两点就是正五边形的最后两点。 连接相邻两点就构成了正五边形。 7.如果不是连接相邻两点(即对角线连接),就会得到一个五芒星。
H. 简单 JAVA编程题 判断两个圆是否相交 圆心1坐标X=1 Y=1 半径 1 圆心2 坐标为 X=2 Y=2 半径 2
public class Circle_J {
public static void main(String[] args){
System.out.println("请依次输入第一个圆的圆心坐标x和y以及半径,彼此以空格隔开");
Scanner read = new Scanner(System.in);
String string1 = String.valueOf(read.nextLine());
String[] data1 = string1.split(" ");
System.out.println("请依次输入第二个圆的圆心坐标x和y以及半径,彼此以空格隔开");
String string2 = String.valueOf(read.nextLine());
String[] data2 = string2.split(" ");
double xDistance = Math.abs(Integer.parseInt(data2[0])-Integer.parseInt(data1[0]));
double yDistance = Math.abs(Integer.parseInt(data2[1])-Integer.parseInt(data1[1]));
double rCount =Integer.parseInt(data2[2]) +Integer.parseInt(data1[2]);
if((Math.pow(xDistance,2)+Math.pow(xDistance,2))<=(Math.pow(rCount,2)))
{
System.out.println(Math.pow(rCount,2));
System.out.println("相交");
}else{
System.out.println("不相交");
}
read.close();
}
}
I. 用JAVA编写一个程序,要求如下:
可以看一下我写的这篇博客:java判断圆与直线的关系和求纳芹交点坐洞判毕冲困标
J. 用java写一个一条直线是否与圆相交的函数
【分析】:
//直线:y=a*x+b;
//圆:(x+c)^2+(y+d)^2=r^2;
//求交点方程:(a^2+1)x^2+(2c+2ab+2ad)x+[c^2+(b+d)^2]=0
//A=a^2+1; B=2c+2ab+2ad; C=c^2+(b+d)^2;
//D=B^2-4AC;
//只要判隐答模断D是否小于0就可以判断是否相交,小于0说明不相交,否则相交
【代码】:
public class Exam_line_circle {
public boolean line(double a,double b,double c,double d,double r){//判断直线与圆是否相交的函数
double A=Math.pow(a,2)+1;
double B=2*c+2*a*b+2*a*d;
double C=Math.pow(c,2)+(b+d)*2;
double D=Math.pow(B,2)-4*A*C;
if(D<0) return false;//不相交
return true;//相交
}
public static void main(String[] args){
Exam_line_circle lc=new Exam_line_circle();
double a=2, b=2, c=2, d=1,r=1;//自己输入对应的5个数据吧(b=1就不相交了)
boolean bo=lc.line(a, b, c, d, r);
if(bo==true) System.out.println("直线与圆相交");
else System.out.println("直线与圆不相交!");
}
}
【结果】:灶缓
b=2:直线与举友圆相交
b=1:直线与圆不相交!