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