绘制等边三角形C#

时间:2016-12-23 02:09:46

标签: c# graphics geometry

我试图调整我遇到的一些代码来绘制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);
    }

不幸的是,这甚至没有接近。我绘制了等边三角形,但这些点总是基于全等圆的中心。我试图找到一种更简单的方法。我确信这段代码一定存在明显的问题,但我正在努力学习所需的数学,所以我不知道它是什么。谢谢你的时间。

1 个答案:

答案 0 :(得分:1)

尝试这种方法。我假设对于零角度,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));