我试图适应一些我在C#中绘制等边三角形的代码

 public void drawTriangle(PaintEventArgs e, int x, int y, int distance)
    {
        float angle = 0;

        SolidBrush brs = new SolidBrush(Color.Green);

        PointF[] p = new PointF[3];

        p[0].X = x;

        p[0].Y = y;

        p[1].Y = (float)( x + distance * Math.Cos(angle + Math.PI / 3));

        p[1].X = (float)( y + distance * Math.Sin(angle + Math.PI / 3));

        p[2].Y = (float)( x + distance * Math.Cos(angle - Math.PI / 3));

        p[2].X = (float)( y + distance * Math.Sin(angle - Math.PI / 3));

        e.Graphics.FillPolygon(brs, p);
    }


不幸的是,这还差得远。我已经绘制了等边三角形,但是这些点始终基于全等圆的中心。我正在尝试找到一种更简单的方法。我确定这段代码肯定存在一个明显的问题,但是我正在尝试学习所需的数学知识,所以我不知道它是什么。谢谢你的时间。

最佳答案

试试这种方法。我假设对于零角p [0]是左下顶点,p [1]是右下(相同水平)。

(顺便说一句,您对Y / X感到很奇怪)

    p[0].X = x;

    p[0].Y = y;

    p[1].X = (float)( x + distance * Math.Cos(angle));

    p[1].Y = (float)( y + distance * Math.Sin(angle));

    p[2].X = (float)( x + distance * Math.Cos(angle + Math.PI / 3));

    p[2].Y = (float)( y + distance * Math.Sin(angle + Math.PI / 3));

关于c# - 绘制等边三角形C#,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41294315/

10-11 10:39