精华内容
下载资源
问答
  • // 打印当前 public void Print_Point() { System.out.print("Point0:("+p0.x+","+p0.y+")"+" "); System.out.print("Point1:("+p1.x+","+p1.y+")"+"\r\n"); } // 打印计算结果 public void Print() ...

    最近在自学JAVA,学到类与对象章节,分享一个自我感觉还可以的例题答案,自己编写的,发出来希望大神们知道一二。

    源程序如下:

    package Line_Test;
    
    public class Line_Test {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    
    		// 线段测试
    		Line line = new Line(new Line.Point(2,3),new Line.Point(4,5));
    		line.Print_Point();	
    		line.Print();		
    		
    		System.out.println();		
    
    		Line line1 = new Line(new Line.Point(2,3),new Line.Point(2,5));
    		line1.Print_Point();	
    		line1.Print();		
    		
    		System.out.println();
    
    		Line line2 = new Line(new Line.Point(2,3),new Line.Point(4,3));
    		line2.Print_Point();	
    		line2.Print();		
    		
    		System.out.println();
    	}
    
    }
    
    //线段类
    class Line{	
    	public static class Point{
    		private float x,y;
    		
    		public Point()
    		{
    			x = 2;
    			y = 3;
    		}
    		
    		public Point(float x,float y)
    		{
    			this.x = x;
    			this.y = y;
    		}
    	}
    	
    	private Point p0;
    	private Point p1;
    	
    	// 重载构成函数
    	public Line()
    	{
    		this.p0 = new Point(2,3);
    		this.p1 = new Point(4,5);
    	}	
    	// 重载构成函数
    	public Line(Point p0,Point p1)
    	{
    		this.p0 = new Point(p0.x,p0.y);
    		this.p1 = new Point(p1.x,p1.y);
    	}
    	
    	// 线段长度
    	public float Line_Length()
    	{
    		if(this.isLineH())
    		{
    			return Math.abs(p1.y-p0.y);			
    		}
    		else if(this.isLineV())
    		{
    			return Math.abs(p1.x-p0.x);
    			
    		}
    		else
    		{
    			return (float)Math.sqrt((Math.pow((p1.x-p0.x),(p1.x-p0.x))+Math.pow((p1.y-p0.y),(p1.y-p0.y))));
    		}
    	}
    	
    	// 线段水平  true:Yes  false:No
    	public boolean isLineH()
    	{
    		return (p0.x==p1.x);
    	}
    
    	// 线段垂直  true:Yes  false:No
    	public boolean isLineV()
    	{
    		return (p0.y==p1.y);
    	}
    	
    	// 线段斜率 
    	public float LineSlope()
    	{
    		return (p1.y-p0.y)/(p1.x-p0.x);
    	}
    	
    	// 求线段中点
    	public Point LineMid()
    	{
    		Point p = new Point();
    		p.x = (p1.x+p0.x)/2.0f;
    		p.y = (p1.y+p0.y)/2.0f;
    		return p;
    	}
    	
    	// 打印当前点
    	public void Print_Point()
    	{
    		System.out.print("Point0:("+p0.x+","+p0.y+")"+" ");
    		System.out.print("Point1:("+p1.x+","+p1.y+")"+"\r\n");
    	}
    	
    	// 打印计算结果
    	public void Print()
    	{
    		System.out.println("Line length:"+this.Line_Length());
    		System.out.println("Line horizontal?"+this.isLineH());
    		System.out.println("Line vertical?"+this.isLineV());
    		System.out.println("Line slope:"+this.LineSlope());
    		System.out.println("Line mid:("+this.LineMid().x+","+this.LineMid().y+")");
    	}
    	
    }

    运行结果如下:

    感觉JAVA用起来是比较方便,第一次写JAVA程序,还望大神指导一下不足之处。

    展开全文
  • 声明一个类Point,然后利用它声明一个组合类Line,实现由用户输入两点确定直线的长度和斜率,编写程序实现测试
  • 1.先获取两点的坐标 2.计算弦长及旋转角度 3.绘制线 <div class="quality-analysis"> <div class="cnt-box"> <span class="selected-start"> <svg class="icon fs1...
    页面上有两颗星星图标,画一条线连接两颗星星。

    1.先获取两点的坐标   2.计算弦长及旋转角度   3.绘制线

    <div class="quality-analysis">
      <div class="cnt-box">
         <span  class="selected-start">
            <svg class="icon fs16 warn-text icon-orange " aria-hidden="true">
               <use xlink:href="#h-delete-collect"></use>
             </svg>
          </span>
          <span  class="selected-start">
            <svg class="icon fs16 gray-text" aria-hidden="true">
              <use xlink:href="#h-collect"></use>
             </svg>
            </span> 
      </div>
    </div>
    <script>
      export default {
        data() {
          return {
            positionList: [], // 获取坐标
          }
        },
        mounted() {
          this.getStartPosition()
          this.drawLine(this.positionList)
        },
        methods: {
          // 获取星星坐标
          getStartPosition() {
            let nodeList = document.querySelectorAll('.selected-start')
            let parentNode = document.querySelector('.cnt-box').offsetParent
            let actualLeft = 0
            let current = 0
            let actualTop = 0
            if(nodeList.length>0){
              for(let i=0;i<nodeList.length;i++){
                actualLeft = nodeList[i].offsetLeft  // 累加计算星星相对于顶级父元素的距离
                actualTop = nodeList[i].offsetTop
                current = nodeList[i].offsetParent
                while(current!== parentNode){
                  actualLeft += current.offsetLeft
                  actualTop += current.offsetTop
                  current = current.offsetParent
                }
                let obj = {
                  x:actualLeft,
                  y:actualTop,
                }
                this.positionList.push(obj)
              }
            }
           
          },
    
          // 画星星连线
          drawLine(positionList) {
            if(positionList.length>0){
              for(let i=1;i<positionList.length;i++){
                // 计算长宽
                let rectWidth = Math.abs(positionList[i].x - positionList[i-1].x)
                let rectHeight = Math.abs(positionList[i].y - positionList[i-1].y)
                // 在页面确定div左上角的具体位置
                let rectX = positionList[i].x < positionList[i-1].x ? positionList[i].x : positionList[i-1].x
                let rectY = positionList[i].y < positionList[i-1].y  ? positionList[i].y : positionList[i-1].y
              
                // 弦长
                let stringWidth = Math.ceil(Math.sqrt((rectWidth * rectWidth)+ (rectHeight*rectHeight)))
                let xPad = (rectWidth - stringWidth)/2
                let yPad = (rectHeight - 2)/2
                // 从x轴到(x,y)的旋转角度
                let radNum = Math.atan2((positionList[i].y - positionList[i-1].y),(positionList[i].x - positionList[i-1].x))
                let  traX  = rectX +  xPad - 8 // 8为星星图标大小的1/2
                let  traY  = rectY +  yPad + 8
                // 创建div
                let div = document.createElement('div')
                div.innerHTML = '<div ' +
                  ' style = "width:' + stringWidth + 'px;height:2px;transform:translate(' + traX+ 'px,' + traY +'px) rotate('+ radNum+ 'rad) " class="draw-line-style"></div>'
                let doc = document.querySelector('.quality-analysis')
                doc.appendChild(div)
              }
            }
          }
        }
      }
    </script>

    说明:

    <style lang="scss">
      .quality-analysis {
        position: relative;
      .draw-line-style{
        top: 0;
        position: absolute;
        border-top: 1px solid $bgOrange;
      }
    </style>

    1.每个元素都有offsetTop和offsetLeft属性,表示该元素的左上角与父容器(offsetParent对象)左上角的距离。所以,只需要将这两个值进行累加,就可以得到该元素的绝对坐标。

    2.atan2(y,x) :返回从 x 轴到点 (x,y) 的角度(介于 -PI/2 与 PI/2 弧度之间)。

    展开全文
  • 两点确定直线方程

    千次阅读 2012-05-21 10:45:42
    void get_line(CvPoint2D32f pt_a,CvPoint2D32f pt_b,float &A,float &B,float &C) { if(pt_a.x!=pt_b.x) { A=(pt_b.y-pt_a.y)/(pt_b.x-pt_a.x); B=-1; C=pt_a.y-k*pt_a.x; } ...
    void get_line(CvPoint2D32f pt_a,CvPoint2D32f pt_b,float &A,float &B,float &C)
    {
    	if(pt_a.x!=pt_b.x)
    	{
    		A=(pt_b.y-pt_a.y)/(pt_b.x-pt_a.x);
    		B=-1;
    		C=pt_a.y-k*pt_a.x;		
    	}
    	else
    	{
    		A=1;
    		B=0;
    		C=-pt_a.x;
    	}
    }

    展开全文
  • MATLAB 已知两点坐标,求解直线方程代码 x1=input(‘请输入x1=’); y1=input(‘请输入y1=’); x2=input(‘请输入x2=’); y2=input(‘请输入y2=’); if (x1x2)&amp;&amp;(y1y2) disp(‘请输入两个不同的点’)...

    MATLAB 已知两点坐标,求解直线方程代码

    x1=input(‘请输入x1=’);
    y1=input(‘请输入y1=’);
    x2=input(‘请输入x2=’);
    y2=input(‘请输入y2=’);
    if (x1x2)&&(y1y2)
    disp(‘请输入两个不同的点’);
    return;
    end
    if x1==x2
    disp(‘直线斜率不存在\n\n’);
    fprintf(‘求得的直线方程为x=%d\n\n’,x1);
    else
    k=(y1-y2)/(x1-x2);
    b=y1;
    fprintf('求得的直线方程为y=%d (x-x1)+%d\n\n’,k,b);
    x=input(‘请输入所要计算的点x=’);
    y=k
    (x-x1)+b;
    fprintf(‘x= %d处,y= %d\n\n’,x,y);
    end

    展开全文
  • 两点的叉乘为过两点直线的系数

    千次阅读 多人点赞 2018-01-12 10:37:45
    已知:二维平面的两点X(x1,y1),Y(x2,y2),证明X,Y两点的齐次式叉乘为过XY的直线的系数. 证明: 叉乘的定义为已知向量a = (a1,a2,a3), b=(b1,b2,b3), a叉乘b=(a2b3-a3b2, a3b1-a1b3, a1b2-a2b1)  因为XY的...
  • 检测两点确定直线上的像素坐标

    千次阅读 2015-07-07 15:10:29
    图像上个像素可以确定一条直线,可如何通过直线方程把这些像素位置找出来呢?大家都会想到用直线方程来算,可是图像上像素位置的坐标都是整数值,通过y = k*x+b计算出来的y很可能是小数,即使将y做取整运算,也...
  • 已经两点直线方程(多维空间)

    千次阅读 2017-11-21 10:33:00
    已知两点 p1(a1, b1, c1), p2 (a2, b2, c2) 求直线方程。 要求直线方程首先要理解直线是什么? 直线是一系列满足一定条件的点的集合。 多维空间下直线通用公式: 其中 p 为直线上任意一点(从原点指向...
  • 平面几何:两点确定一条直线

    千次阅读 2018-11-08 23:02:00
    个不同A,B确定一条直线,AB相同返回的值全0 直线方程:Ax+By+c=0 A = y2 - y1; B = x1 - x2; C = -Ax1 - By1 = x2y1 - x1y2; 证明之后补上; Line LineMake(Point A, Point B) { Line l; l.A = B.y - A.y; l.B...
  • python根据计算直线方程

    千次阅读 2021-06-09 18:17:02
    # 根据已知两点坐标,求过这两点直线解析方程: a*x+b*y+c = 0 (a >= 0) def getLinearEquation(p1x, p1y, p2x, p2y): sign = 1 a = p2y - p1y if a < 0: sign = -1 a = sign * a b = sign * (p1x - ...
  • C语言平面几何5-两点确定一条直线

    千次阅读 2013-12-17 17:17:26
    /* 个不同A,B确定一条直线,AB相同返回的值全0 * 直线方程:Ax+By+c=0 * A = y2 - y1; * B = x1 - x2; * C = -A*x1 - B*y1 = x2*y1 - x1*y2; */ Line LineMake(Point A, Point B) { Line l; l.A = B.y - ...
  • 常用的直线方程有一般式 点斜式 截距式 斜截式 两点式等等。除了一般式方程,它们要么不能支持所有情况下的直线(比如跟坐标轴垂直或者平行),要么不能支持所有情况下的点(比如x坐标相等,或者y坐标相等)。...
  • C++语言实现一些基本算法(两点距离、点是否在直线上、点与直线的关系、两直线的夹角、两直线的交点、两个举行的重合面积等等)
  • 已知直线(四坐标),计算直线的夹角,管道工程上使用
  • vtk 两点确定一条直线的可视化

    千次阅读 2017-06-09 09:20:18
    已知的坐标StartPoint,EndPoint,用vtk可视化其确定直线。 vtkSmartPointer&lt;vtkPoints&gt; Points = vtkSmartPointer&lt;vtkPoints&gt;::New(); Points-&gt;InsertNextPoint...
  • 最近在做叶面重建的工作,构建叶面TIN的算法中会用到3维中点到直线的距离方程,一开始以为像二维一样有公式之类的,后来找了一下没有找到,就写了一个函数,分享一下double dis_3D(Point a,Point b,Point s){ ...
  • 利用Matlab编写的两点确定一条直线的程序,可计算其斜率等,利用了disp()函数,是我们更容易掌握!
  • 如何由两点坐标确定一条直线的ax+by+c=0表达式 比如已知两坐标: (x1,y1),(x2,y2); 对于表达式ax+by+c=0; a=?,b=?,c=?; y=kx+m, y1=kx1+m y2=kx2+m, k=(y2-y1)/(x2-x1) m=y1-(y2-y1)x1/(x2-x1) y=(y2-y1)/(x2-x1)x+...
  • 已知直线两点求其一般式

    千次阅读 2016-05-24 10:20:42
    已知直线两点P1 P2,求直线的一般式方程。已知直线上的两点P1(X1,Y1) P2(X2,Y2), P1 P2两点不重合。求该直线的一般式方程AX+BY+C=0 解当x1=x2时,直线方程为x-x1=0当y1=y2时,直线方程为y-y1=0当x1≠x2,y1≠y2...
  • /// /// 根据两点经纬度求直线与正北方向的夹角 /// /// /// /// AB连线与正北方向的角度(顺时针0~360) public static double getAngle(MyLatLng A,MyLatLng B) { doub
  • 如上图,已知四个(x0,y0)、(x1,y1)、(x2,y2)、(x3,y3),其中(x0,y0)、(x1,y1)确定直线1,(x2,y2)、(x3,y3)确定直线2,求直线1、直线2的交点(x,y),公式如下: y = ( (y0-y1)*(y3-y2)*x0 + (y3-y2)*(x1-x0)*y0 + ...
  • 知道两点坐标画直线有很多种方法,这里主要介绍使用DDA算法: DDA算法是计算机图形学中最简单的绘制直线算法。其主要思想是由直线公式y = kx + b推导出来的。 我们已知直线段两个端点P0(x0,y0)和P1(x1,y1),就能求...
  • 如何用C语言已知两点坐标求直线方程? 如题 求大神解答 谢谢!!!
  • 编程求直线两点式方程

    千次阅读 2020-03-12 17:55:15
    编程求直线两点式方程 已知直线上的两点A1(X1,Y1) A2(X2,Y2), A1、A2两点不重合。 则直线的一般式方程AX+BY+C=0中: A = Y2 - Y1 B = X1 - X2 C = X2*Y1 - X1*Y2 即(Y2 - Y1)X + (X1 - X2)Y + ( X2*Y1 - X1*Y2) =...
  • 判断直线的哪一侧

    千次阅读 2018-07-03 22:27:23
    转自:...方法1:http://zhidao.baidu.com/question/47341112.html已知P(0,0),Q(3,2)两点,试判断P,Q是否在直线2x+3y=4的同一侧。解:直线2x+3y=4即直线2x+3y-4=0把P、Q代入2x...
  • ...如图已知:a、b两点的坐标, c到a的距离d 。求c点的坐标。 求 cy 可以根据d / a到b距离 = a到c垂直距离 / a 到 b的垂直距离。 首先求a到b的距离 r = sqrt((x1- x2)*(x1 - x2) +...
  • 前言 Opencv4图像分割和识别实战6的视频课程...1)通过前面所学的投影分割法来分别获得这2条直线上的离散采样,然后将它们通过直线拟合求得各自的直线方程,如k1x+b和k2x+b2。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 65,026
精华内容 26,010
关键字:

两点确定直线