python - 检查线段是否在相机视野中
问题描述
输入数据:
字段大小
H
从 10^3 到 10^6;线段数
N
从 1 到 100;以弧度为单位的摄像机角度
α
从 0.01 到 0.05;摄像机方向起始角度
D
(0/90/180/270度);相机坐标
Xs, Ys
;从 -2pi 到 2pi的角度
β
,相机应旋转的角度。场上所有分段的位置及其颜色;
该程序应按顺序显示相机看到的所有颜色。
为方便起见,可以通过以下方式可视化数据:
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots()
fig.set_figwidth(10)
fig.set_figheight(10)
ax = fig.gca()
ax.set_xticks(np.arange(0, H+250, 250))
ax.set_yticks(np.arange(0, H+250, 250))
plt.plot([0,H], [0,0], 'k')
plt.plot([0,0], [0,H], 'k')
plt.plot([0,H], [H,H], 'k')
plt.plot([H,H], [0,H], 'k')
for line in lines:
plt.plot([line[0],line[2]], [line[1],line[3]], '#'+line[4], linewidth=5)
ax.add_artist(plt.Circle((Xs, Ys), 100, color='r'))
plt.grid()
plt.show()
例如:
Input:
2000 5 0.01 (H, N, α)
0 875 625 1.22 (D, Xs, Ys, β)
1000 750 1000 1000 0000FF (X1,Y1,X2,Y2, Color)
750 1250 1250 1250 FFFF00 (X1,Y1,X2,Y2, Color)
1250 1000 1500 1000 FF0000 (X1,Y1,X2,Y2, Color)
1500 750 1250 750 00FF00 (X1,Y1,X2,Y2, Color)
1750 250 1750 750 0000FF (X1,Y1,X2,Y2, Color)
Output:
0000FF 00FF00 FF0000 0000FF
Input:
4000 12 0.01
270 1625 1125 6.28
1000 1750 1500 1750 00FF00
2250 1750 2000 1750 00FF00
1750 500 2250 500 00FF00
2250 1500 2250 2000 0000FF
1250 1500 1250 1250 0000FF
2750 2250 2750 2500 FFFF00
2750 1750 2750 750 FFFF00
2500 500 2500 1000 FF0000
2500 1750 2750 1750 FF0000
1000 750 1500 750 FF0000
750 1000 750 1500 FF0000
1000 750 1000 1250 FF0000
Output:
00FF00 FF0000 FFFF00 FF0000 0000FF 00FF00 0000FF FF0000
我尝试了两种方法。在第一种方法中,我忽略了相机的视角,并遍历所有度数,检查与所有线的交点。在第二种方法中,我比较了所有点相对于地平线的角度。
但是第一种方法和第二种方法都不能正常工作。
请告诉我,我可以用什么算法来解决这个问题
解决方案
推荐阅读
- c# - 如何将一个列表复制到另一个具有 C# 中具有附加属性的对象的列表?(没有foreach)
- python - sys.getrefcount 打印差异结果,任何人都可以帮助我理解这个结果
- java - 索引 0 超出长度 0 的范围
- react-native - 如何在模型内部使用 BottomSheet
- python-3.x - 如果我没有确切的字符串但包含它的变量,如何使用 Python3 替换字符串的一部分
- sed - sed 删除包含一对 () 括号的行
- php - 使用 Imagick 在 Cpanel 上获取错误消息
- flutter - 颤振全局变量
- reactjs - React,如果多个效果 setState 单个值会发生什么?
- reactjs - 与打字稿反应:onmouseup 和 onmousedown 无法识别左键单击