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:直線與圓不相交!