【问题标题】:How do I draw rotated Rhombus?如何绘制旋转的菱形?
【发布时间】:2016-01-19 09:31:53
【问题描述】:

我正在用 C# 编写一个程序,它将旋转由“+”组成的菱形,但我不知道如何绘制它们。我尝试自己输入绘图方法,但我被卡住了,我只是不知道如何绘制它了。我想保持代码尽可能简单,没有任何位图或图形。如果有人想出绘图方法,我会很高兴。 我试图通过在循环中找到点之间的中间点来绘制它,但效果不佳,所以有人可以帮我吗? 朋克 = 点

class romb
{
    private punkt p_up { get; set; } 
    private punkt p_left { get; set; } 
    private punkt p_right { get; set; } 
    private punkt p_down { get; set; } 

  private void MoveOneFrame()
  {
    punkt pivot = new punkt(((this.p_left.Get_x() + this.p_right.Get_x()) / 2), ((this.p_left.Get_y() + this.p_right.Get_y()) / 2));
    this.p_up = Rotate(p_up, pivot, 8);
    this.p_down = Rotate(p_down, pivot, 8);
    this.p_left = Rotate(p_left, pivot, 8);
    this.p_right = Rotate(p_right, pivot, 8);
  }

  private static punkt Rotate(punkt point, punkt pivot, double angleDegree)
  {            
    double angle = angleDegree * Math.PI / 180;
    double cos = Math.Cos(angle);
    double sin = Math.Sin(angle);
    int dx = point.Get_x() - pivot.Get_x();
    int dy = point.Get_y() - pivot.Get_y();
    double x = cos * dx - sin * dy + pivot.Get_x();
    double y = sin * dx + cos * dy + pivot.Get_y();

    punkt rotated = new punkt((int)Math.Round(x), (int)Math.Round(y));
    return rotated;
  }
}

输出: - 每个菱形都应该围绕枢轴(它们的中心)旋转

      +
     + +
    +   +
   +     +
  +       +
 +         +
+           +        +
 +         +        + +
  +       +        +   +
   +     +        +     +
    +   +        +       +
     + +        +         +
      +        +           +
      +         +         +
     + +         +       +
    +   +         +     +
   +     +         +   +
  +       +         + +
 +         +         +      
+           +   
 +         +
  +       +
   +     +
    +   +
     + +
      +       

【问题讨论】:

  • 您能告诉我们输出的样子吗?或者它应该是什么样子?
  • draw() 函数/方法在哪里?
  • 没有在此处添加它,因为它在旋转后无法正常工作。但是如果你需要我可以添加它
  • 有人可以帮我输入一个绘图函数吗?

标签: c# algorithm rotation


【解决方案1】:

也许您应该将中间结果(punkt.x 和 punkt.y 以及 dx 和 dy)保留为双精度,并且仅在最终显示它们时将它们四舍五入为整数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 2015-06-18
    相关资源
    最近更新 更多