void draw_horizon(GLCD lcd) { //pitch = 4; //roll = -38; //lcd.DrawVParallel( lcd.DrawHParallel(28, 40, 2, 5, 9); lcd.DrawHParallel(27, 40, 3, 10, 5); lcd.DrawHParallel(129, 40, 2, 5, 9); lcd.DrawHParallel(129, 40, 3, 10, 5); lcd.DrawString(72, 30, string.Format("{0:f0}", roll)); lcd.DrawString(135, 58, string.Format("{0:f0}", pitch)); // lcd.DrawLine(33, 58, 125, 58); int right = 92; int top = 40; /*if (roll > 90) * roll -= 180; * else*/if (roll == 90) { roll = 89.99f; } else if (roll == -90) { roll = -89.99f; } /*else if (roll < -90) * roll += 180; */ roll *= (float)(Math.PI / 180); int x1 = 0; int y1 = (int)(20 - 46 * Math.Tan(roll) - pitch / 2); if (y1 < 0) { y1 = 0; x1 = (int)(-(20 - pitch / 2) / Math.Tan(roll) + 46); } else if (y1 > 40) { y1 = 40; x1 = (int)((20 + pitch / 2) / Math.Tan(roll) + 46); } int x2 = 92; int y2 = (int)(20 - pitch / 2 + 46 * Math.Tan(roll)); if (y2 < 0) { y2 = 0; x2 = (int)(-(20 - pitch / 2) / Math.Tan(roll) + 46); } else if (y2 > 40) { y2 = 40; x2 = (int)((20 + pitch / 2) / Math.Tan(roll) + 46); } lcd.FillRectange(33, 40, 96, 41, Color.Blue); lcd.DrawLine(x1 + 33, -y1 + 80, x2 + 33, -y2 + 80); }
void draw_horizon(GLCD lcd) { //pitch = 4; //roll = -38; //lcd.DrawVParallel( lcd.DrawHParallel(28, 40, 2, 5, 9); lcd.DrawHParallel(27, 40, 3, 10, 5); lcd.DrawHParallel(129, 40, 2, 5, 9); lcd.DrawHParallel(129, 40, 3, 10, 5); lcd.DrawString(72, 30, string.Format("{0:f0}", roll)); lcd.DrawString(135, 58, string.Format("{0:f0}", pitch)); // lcd.DrawLine(33, 58, 125, 58); int right = 92; int top = 40; /*if (roll > 90) roll -= 180; else*/ if (roll == 90) roll = 89.99f; else if (roll == -90) roll = -89.99f; /*else if (roll < -90) roll += 180; */ roll *= (float)(Math.PI / 180); int x1 = 0; int y1 = (int)(20 - 46 * Math.Tan(roll) - pitch / 2); if (y1 < 0) { y1 = 0; x1 = (int)(-(20 - pitch / 2) / Math.Tan(roll) + 46); } else if (y1 > 40) { y1 = 40; x1 = (int)((20 + pitch / 2) / Math.Tan(roll) + 46); } int x2 = 92; int y2 = (int)(20 - pitch / 2 + 46 * Math.Tan(roll)); if (y2 < 0) { y2 = 0; x2 = (int)(-(20 - pitch / 2) / Math.Tan(roll) + 46); } else if (y2 > 40) { y2 = 40; x2 = (int)((20 + pitch / 2) / Math.Tan(roll) + 46); } lcd.FillRectange(33, 40, 96, 41, Color.Blue); lcd.DrawLine(x1 + 33, -y1 + 80, x2 + 33, -y2 + 80); }