给定两个点确定一条直线,两个直线所形成的交点,并且求出其三角形的面积

package 直线;

import java.util.*;

public class 交点及面积 {
static float k, b, k1, b1, k2, b2, jiaox, jiaoy, mianji;
static int flag1 = 0, flag2 = 0;

public static void main(String args[]) {
	float x1, y1, x2, y2 = 0;
	Scanner b = new Scanner(System.in);
	System.out.println("请输入形成第一条直线的两个点x1,y1,x2,y2");
	x1 = b.nextFloat();
	y1 = b.nextFloat();
	x2 = b.nextFloat();
	y2 = b.nextFloat();
	if (x2 - x1 == 0) {
		flag1 = 1;
		交点及面积.k1 = x1;
	} else {
		直线(x1, y1, x2, y2);
		交点及面积.k1 = 交点及面积.k;
		交点及面积.b1 = 交点及面积.b;
	}
	if (flag1 == 1)
		System.out.println("这条直线方程为:x=" + k1);
	else
		System.out.println("这条直线方程为y=" + k1 + "x" + "+" + b1);
	System.out.println("请输入形成第二条直线的两个点x1,y1,x2,y2");
	x1 = b.nextFloat();
	y1 = b.nextFloat();
	x2 = b.nextFloat();
	y2 = b.nextFloat();
	if (x2 - x1 == 0) {
		flag2 = 1;
		交点及面积.k2 = x1;
	} else {
		直线(x1, y1, x2, y2);
		交点及面积.k2 = 交点及面积.k;
		交点及面积.b2 = 交点及面积.b;
	}
	if (flag2 == 1)
		System.out.println("这条直线方程为:x=" + k2);
	else
		System.out.println("这条直线方程为y=" + k2 + "x" + "+" + b2);
	找两个直线的交点();
	System.out.println("两条直线的交点为" + "(" + jiaox + "," + jiaoy + ")");
	形成的三角形面积();
	System.out.println("形成的三角形面积为:" + mianji);
}

public static void 直线(float x1, float y1, float x2, float y2) {
	交点及面积.k = (y2 - y1) / (x2 - x1);
	交点及面积.b = y1 + (-(k * x1));
}

public static void 找两个直线的交点() {
	if (交点及面积.flag1 == 1)
		if (交点及面积.flag2 == 1) {
			System.out.println("这两条直线平行");
			System.exit(0);
		} else {
			jiaox = k1;
			jiaoy = k1 * k2 + b2;
			flag1 = 2;
			flag2 = 2;
		}
	else if (flag2 == 1) {
		jiaox = k2;
		jiaoy = k1 * k2 + b1;
		flag1 = 2;
		flag2 = 2;
	} else if (k1 == k2) {
		System.out.println("这两条直线平行");
		System.exit(0);
	} else {
		jiaox = -((b2 - b1) / (k2 - k1));
		jiaoy = k1 * jiaox + b1;
	}
}

public static void 形成的三角形面积() {
	float s = 0, p = 0, di = 0;
	if (flag1 == 0 && flag2 == 0)
		if (k1 == 0&&k2!=0) {
			di = Math.abs(b1 -b2);
			mianji = (di * Math.abs(jiaox)) / 2;
			return;
		} else if (k2 == 0) {
			di = Math.abs(b2 - b1);
			mianji = (di * Math.abs(jiaox)) / 2;
			return;
		}
	if (flag1 == 1)
		if (k2 == 0) {
			System.out.println("这两条直线形成的为四边形");
			System.exit(0);
		} else {
			s = (-b2) / k2;
			di = s - k1;
			di = Math.abs(di);
			mianji = (di * Math.abs(jiaoy)) / 2;
		}
	else if (flag2 == 1)
		if (k1 == 0) {
			System.out.println("这两条直线形成的四边形");
			System.exit(0);
		} else {
			s = (-b1) / k1;
			p = (-b2) / k2;
			di = s - p;
			di = Math.abs(di);
			mianji = (di * Math.abs(jiaoy)) / 2;
		}
	else {
		s = (-b1) / k1;
		di = s - k2;
		di = Math.abs(di);
		mianji = (di * Math.abs(jiaoy)) / 2;
	}
}

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值