已知一条直线 y = kx + n 。上有一点 (x1,y1) 求与这个点相距 w 的在直线上的点的坐标

时间:2022-11-02 03:48:24
已知一条直线 y = kx + n 。上有一点 (x1,y1) 求与这个点相距 w 的在直线上的点的坐标

9 个解决方案

#1


老大们,我算是服了你们了!!!

#2


这个题很难吗?

#3


你...是中学生?作业题?这也拿来问?哎,算了,有分给不管那么多。
首先保证点p(x1,y1)到线的距离〉=w(此时才有解);
然后,(x-x1)^2 + (y-y1)^2 = w 和 y = k*x + n 联立解方程就出来了.......

#4


上面圆的方程应该是(x-x1)^2 + (y-y1)^2 = w^2,不好意思疏忽了。

#5


// 要求 Pt3到 pt1 与 pt2 组成的直线的距离小于一个特定的值。
function PtOnLine(pt1,pt2,pt3:TGuPoint):Boolean;
const
  MIN_DELTA = 5;
var
  pt4:TGuPoint;
  k,n,n1:Single;
begin
  Result := false;
  if Pt2.X = pt1.X then
  begin
    n := abs(pt3.X - pt1.X);
  end
  else begin
    k := (pt2.Y - pt1.Y )/(pt2.X - pt1.X);
    if k <> 0 then
    begin
      n := pt1.Y - k* pt1.X;

      n1 := pt3.Y + k * pt3.X;

      pt4.Y := Round((n + n1)/2);
      pt4.X := Round((pt4.Y -n) /k);

      n := Round(sqrt((pt4.Y - pt3.Y )*(pt4.Y - pt3.Y ) +
                 (pt4.X - pt3.X )*(pt4.X - pt3.X )));
    end
    else begin
      n := abs(pt3.Y - pt1.Y);
    end;
  end;

  if n < MIN_DELTA then
     Result := true;
end;


我做出来了。

#6


做出来了,值得庆贺!

#7


我都被弄糊涂了,这个问题到底要求什么?
==
已知一条直线 y = kx + n 。上有一点 (x1,y1) 求与这个点相距 w 的在直线上的点的坐标
==
已知一条直线 y = kx + n 。上有一点 (x1,y1) =》(x1,y1)是直线上的一个点。
与这个点相距 w 的在直线上的点 =》 要求的点也在直线上。
就是说直线上有两个点,相距w,已知一个,求另一个。


再看看你们的解答,我都不知道是我的理解有问题,还是你们的理解有问题,还是问题本身有问题。

#8




        /
       * Q(x,y)
      / 
     /w
    /
   * P(x1,y1)
  /
 /
L

是不是上图那样:已知直线 L: y = kx + n 上有一点 P(x1,y1),

求与这个点P 相距为 w 的、在(同一)直线 L 上的点Q(x,y)的坐标x,y

#9


k=tan(a)
cos(a)=1/√(1+k*k)
sin(a)=k*cos(a)
x2=x1+w*cos(a),y2=y1+w*sin(a)
x3=x1-w*cos(a),y3=y1-w*sin(a)

#1


老大们,我算是服了你们了!!!

#2


这个题很难吗?

#3


你...是中学生?作业题?这也拿来问?哎,算了,有分给不管那么多。
首先保证点p(x1,y1)到线的距离〉=w(此时才有解);
然后,(x-x1)^2 + (y-y1)^2 = w 和 y = k*x + n 联立解方程就出来了.......

#4


上面圆的方程应该是(x-x1)^2 + (y-y1)^2 = w^2,不好意思疏忽了。

#5


// 要求 Pt3到 pt1 与 pt2 组成的直线的距离小于一个特定的值。
function PtOnLine(pt1,pt2,pt3:TGuPoint):Boolean;
const
  MIN_DELTA = 5;
var
  pt4:TGuPoint;
  k,n,n1:Single;
begin
  Result := false;
  if Pt2.X = pt1.X then
  begin
    n := abs(pt3.X - pt1.X);
  end
  else begin
    k := (pt2.Y - pt1.Y )/(pt2.X - pt1.X);
    if k <> 0 then
    begin
      n := pt1.Y - k* pt1.X;

      n1 := pt3.Y + k * pt3.X;

      pt4.Y := Round((n + n1)/2);
      pt4.X := Round((pt4.Y -n) /k);

      n := Round(sqrt((pt4.Y - pt3.Y )*(pt4.Y - pt3.Y ) +
                 (pt4.X - pt3.X )*(pt4.X - pt3.X )));
    end
    else begin
      n := abs(pt3.Y - pt1.Y);
    end;
  end;

  if n < MIN_DELTA then
     Result := true;
end;


我做出来了。

#6


做出来了,值得庆贺!

#7


我都被弄糊涂了,这个问题到底要求什么?
==
已知一条直线 y = kx + n 。上有一点 (x1,y1) 求与这个点相距 w 的在直线上的点的坐标
==
已知一条直线 y = kx + n 。上有一点 (x1,y1) =》(x1,y1)是直线上的一个点。
与这个点相距 w 的在直线上的点 =》 要求的点也在直线上。
就是说直线上有两个点,相距w,已知一个,求另一个。


再看看你们的解答,我都不知道是我的理解有问题,还是你们的理解有问题,还是问题本身有问题。

#8




        /
       * Q(x,y)
      / 
     /w
    /
   * P(x1,y1)
  /
 /
L

是不是上图那样:已知直线 L: y = kx + n 上有一点 P(x1,y1),

求与这个点P 相距为 w 的、在(同一)直线 L 上的点Q(x,y)的坐标x,y

#9


k=tan(a)
cos(a)=1/√(1+k*k)
sin(a)=k*cos(a)
x2=x1+w*cos(a),y2=y1+w*sin(a)
x3=x1-w*cos(a),y3=y1-w*sin(a)