delphi - 在直线上绘制一个点
问题描述
一条直线的方程是 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);
这里是完整功能的粘贴箱:
谢谢。
解决方案
为了使事情更简单,用参数方程定义你的线:
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
推荐阅读
- python - 需要帮助删除/删除 kivy 小部件
- javascript - 计时器到期时 document.forms["button1"].submit() 不起作用
- django - 如何在 django 中创建允许无限子模型的模型?
- alloy - 如何使用 CompUtil 解析插件
- python - Conda 命令(即:conda env list、sypder、jupyter lab)在“conda update conda”之后不再工作
- powershell - PowerShell FTPS csv文件
- android - 我的应用程序名称未显示在活动之上。显示“com.example.(appname).(file name)
- java - 无法调整 JInternalFrame 的大小
- django - 在 Django 的同一页面上显示项目列表,包括项目详细信息
- android - Gradle 同步失败:无法创建父目录 - Android Studio