0

一条直线的方程是 Y = MX + C,

我有一个点和点面对的角度,所以我可以计算出直线方程

Slop := Tan(Rot)  // We  are passing radians to convert to gradient
C := (-Slop*X) + Y // Substitute our point XY values 

这就是我用来获取 Y 截距和斜率或梯度的当前数学。

但是我想知道如何在我们的起点前面绘制一个点 X 距离。

目前,我正在尝试以下内容,其中 Y2 和 X2 是我们原始点的值加上 100 个单位。

 NewPoint.X :=  Round( (Y2 - C) / Slop );
 NewPoint.Y := Round((slop*X2) + C);

这里是完整功能的粘贴箱:

https://pastebin.com/8435NzYc

谢谢。

4

2 回答 2

2

为了使事情更简单,用参数方程定义你的线:

X = X0 + UX * t
Y = Y0 + UY * t

哪里X0, Y0是某个基点的坐标,UX, UY是单位方向矢量的分量。注意

UX = Cos(Phi)
UY = Sin(Phi)

其中Phi是线与 OX 轴之间的角度。

另一方面,Tan(Phi)等于你的slope.

如果线由两点定义,则

Len = Hypot(X1 - X0, Y1 - Y0)
UX = (X1 - X0) / Len
UY = (Y1 - Y0) / Len

并且距离基点所需距离Dist的点只是

X = X0 + UX * Dist
Y = Y0 + UY * Dist
于 2021-01-12T06:30:12.170 回答
-1

您定义的问题似乎是线圆截距问题。据我所知,你有一个点 X,Y,它位于一条你已经知道其斜率的线上。现在您需要做的就是使用一个原点 X,Y 和半径为 100 的圆(如果您想要在线上距离 X,Y 100 个单位的点)。找到线上圆的截距,你应该完成。有一个直截了当的公式。

注意:将有两点满足等式。你需要决定选择哪一个。

在此处输入图像描述

于 2021-01-12T06:02:59.300 回答