matlab - 以用户在 MATLAB 中测量的指定角度一致地生成线
问题描述
考虑下面的简单代码,它在 MATLAB 中生成一条直线向下倾斜的线。
clear, clc, close all
t = 0:0.1:1;
y = -t+1;
plot(t,y)
ax = gca
这是一条斜率为 -1 的直线,因此水平轴与直线之间的(锐角)角度为 45 度。除非您在显示器上使用量角器进行测量。
在不更改 x 和 y 轴上显示的值范围或图形窗口的高度的情况下,如果我将量角器举到屏幕上,如何确保从水平轴到直线测量 45 度?
我目前的做法是改变图形窗口的宽度。在图形窗口无限细的极限中,线 x 是一条垂直线。相反,如果图形窗口被拉伸到监视器的边缘,它就会变平。在中间的某个地方,这条线有我想要的角度。我只是找不到一种在数学上找到这一点并在代码中实例化它的好方法。
编辑:任何锐角的更通用的解决方案。(我没有测试钝角。)
clear, clc, close all
ang_deg = 70;
slope = tand(ang_deg);
t = 0:0.1:1;
y = -slope*t+1;
f = figure;
f.Position(3) = f.Position(3)*1.5;
plot(t,y)
% For a given height, change the width
ax = gca;
ax.Units = 'pixels';
ax.Position(3) = ax.Position(4)/slope;
解决方案
推荐阅读
- c# - 应用依赖注入时如何使用子类
- kotlin - Kotlin 中两种初始 MutableLiveData 方式有什么不同?
- awk - awk if 0 除以 x 输出 0
- sql - 如何在 Power BI 中加入 2 个表,条件涉及第 3 个表
- linux - 使用 UNIX 命令行工具将 JSON 拆分为多行
- c# - 窗口大小更改时如何处理窗口内的 UserControl
- amazon-web-services - 在 AWS 中,是整个 VPC 获得一个 DNS 服务器还是 VPC 中的每个子网都获得一个 DNS 服务器?
- mysql - MySQL w/通过单个交叉引用表进行多个关联
- asp.net - 例外:无法创建 ActiveX 组件
- c# - .NET Core - 使用具有专用身份验证 API 的多个身份验证方案