用java判断点是否在三角形内

public class Sanjiao{
    public static void main(String[]args){
        Triangle p = newTriangle();
                          if(p.Sanjiaoxing() == true){
                                     System.out.println("这个传说中的点在三角形内部");
                          }else {
                                     System.out.println("孩子,在三角形外面了哦!");
                          }     
           }
}


class Triangle{
    Point p = new Point(2,2);
    Point p1 = new Point(4,1);
           Pointp2 = new Point(1,1);
           Pointp3 = new Point(3,3);
           publicboolean Sanjiaoxing(){
              if(p.f1() * p1.f1()>0 && p.f2() * p2.f2()>0&& p.f3() * p3.f3()>0){
                          return true;
              }
           returnfalse;
           }
}


class Point{
         private double a;
         private double b;
         public Point(doublea,double b){
            this.a = a;
            this.b = b;
         }
         public double f1(){
            return a-b;
         }
         public double f2(){
            return b + 2*a - 9;
         }
         public double f3(){
                     returnb=1;
         }

}       

 

其实在写这个程序的时候,我遇到了蛮多问题的,其中在那些方法f1,f2,f3中首先我是把这些放在了publicstatic的测试函数内,后来我错了,在cadn中问贴,有人告诉我某个类的方法要放在某个类里面定义,所以我把那些方法放在了Point里面定义,不过呢,又遇到了问题,那就是在构造方法时每一个方法名后面的括号应该为空,因为如果你的方法括号内有参数的话将无法使得在point类的方法应用到测试函数中。

整个判断点是否在三角形之内的算法是将三角形放在平面直角坐标系中,然后构造三个表示三角形三条边的方程的方法,算法证明如下:

因为:在直角坐标系中,如果要判断点Da,b)是否在三角内的话,那么这个点必须与三角形一边f1对顶点A(a1,b1)点相同一侧,那么就是:

    这个点DA点带入方程的乘积必须大于零,也就是他们在方程中必须同号才能是同一侧,这么求出的只是点在三角形的哪一侧而已,要确定在不在三角形之内的话,就是D点分别和三个顶点在所对应的边方程中乘积的符号判定,三者都大于0,就在三角形之内,否则不是。此题这么证明。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值