我试图适应一些我在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/