c# - c#变换直线方程以改变参考原点和角度
问题描述
假设我有以下情况。我有一个y=mx+q形式的直线方程,指的是xOy平原。我需要将线方程转换为x'O'y'平原。您将如何以有效的方式进行?
解决方案
考虑到激光是我对这条线的参考点,我做了如下:
private Model RotoTranslate(Model line, LaserContainer laser)
{
Model transformModel = new Model();
float cosA = (float)Math.Cos((laser.Rotation * Math.PI) / 180.0f);
float sinA = (float)Math.Sin((laser.Rotation * Math.PI) / 180.0f);
if (line.XModel)
{
transformModel.XModel = true;
transformModel.M = ((line.M * cosA) - sinA) / ((line.M * sinA) + cosA);
transformModel.Q = (line.Q + (laser.PositionGraph.Y * ((line.M * sinA) + cosA)) -
(laser.PositionGraph.X * ((line.M * cosA) - sinA))) / ((line.M * sinA) + cosA);
}
else
{
transformModel.XModel = false;
transformModel.M = ((line.M * cosA) + sinA) / (-(line.M * sinA) + cosA);
transformModel.Q = (line.Q + (laser.PositionGraph.X * (-(line.M * sinA) + cosA)) -
(laser.PositionGraph.Y * ((line.M * cosA) + sinA))) / (-(line.M * sinA) + cosA);
}
return transformModel;
}
我现在必须测试一下,看看是否有我没有考虑到的异常...... XModel的定义本质上是指线方程的表达方式。如果模型有:
XModel = true;
那么方程的形式是y=mx+q,否则它的形式是x=my+q;
推荐阅读
- javascript - Rails 6 - 在某些控制器操作中需要 JS 文件
- android - 你能帮我创建这个浮动操作按钮吗?
- python - 我正在尝试通过电子邮件将图像作为附件发送而不保存图像。我想直接发送变量
- python-3.x - .encode("utf-8") 似乎不支持我的表情符号?
- sql-server - 我想知道 SQL Server 上的分片方式
- python-3.x - 为什么将列表转换为字符串时会出错?
- c++ - WSAPoll 更改 FDSET 中的数据并由于 WSAENOTSOCK 而返回错误。我正确使用 WSAPoll() 吗?
- javascript - $.extend 中的 AJAX 函数在 jQuery 3 中不起作用
- excel - 如何在 excel vba 上生成回归?
- python - 如何在 pytest 测试套件中跨类使用作为会话范围固定装置的对象?