使用4个点和指定的倾斜角编写一款人工地平仪

图片

我需要使用LUA实现一个在圆形中正确翻译人工地平线的算法,其指定半径。我需要每个线段的方程(x1,y1,x2,y2)。

有什么想法吗?我甚至无法理解这个概念。

谢谢您的帮助!

点赞
用户1847592
用户1847592

我假设您的 X 轴向右,Y 轴向上。

local max_pitch = 50  -- 在俯仰角为 50° 时,水平线超出圆圈
local radius = 100                   -- 圆圈半径
local center_x, center_y = 200, 150  -- 圆圈中心

function draw_horizon(banking_angle, pitch_angle)
   local alpha = math.acos(-pitch_angle/max_pitch)
   if alpha == alpha then
      local beta = math.rad(90 - banking_angle)
      local x1 = center_x + radius * math.cos(beta + alpha)
      local y1 = center_y + radius * math.sin(beta + alpha)
      local x2 = center_x + radius * math.cos(beta - alpha)
      local y2 = center_y + radius * math.sin(beta - alpha)
      drawline(x1, y1, x2, y2)
   else
      -- 水平线超出了圆圈
   end
end

-- 当前角度
local banking_angle = -40 -- 40°(向右为正,向左为负)
local pitch_angle   = 10  -- 10°(向上为正,向下为负)
draw_horizon(banking_angle, pitch_angle)
2020-03-24 05:49:53