C# 画凸轮轨迹

private void button4_Click(object sender, EventArgs e)
{
	Graphics g = pictureBox1.CreateGraphics(); // 创建Graphics对象
	g.PageUnit = GraphicsUnit.Pixel; // 以像素为单位
	g.PageScale = 0.5f; // 像素与坐标单位的比例,即1个单位为0.5个像素。
	g.TranslateTransform(0, 700); // y轴下移 700 ,方向 仍朝下
	g.Clear(Color.White); // 画布清零
	Pen GreenPen = new Pen(Color.Green, 5);
	// 计算P1、P2、P3、P4的坐标
	int x1 = (int)(300 - 200 * Math.Cos(30.0 * 3.14159 / 180.0));
	int y1 = (int)(300 + 200 * Math.Sin(30.0 * 3.14159 / 180.0));
	int x2 = (int)(300 - 120 * Math.Cos(30.0 * 3.14159 / 180.0));
	int y2 = (int)(500 + 120 * Math.Sin(30.0 * 3.14159 / 180.0));
	int x3 = (int)(300 + 120 * Math.Cos(30.0 * 3.14159 / 180.0));
	int y3 = (int)(500 + 120 * Math.Sin(30.0 * 3.14159 / 180.0));
	int x4 = (int)(300 + 200 * Math.Cos(30.0 * 3.14159 / 180.0));
	int y4 = (int)(300 + 200 * Math.Sin(30.0 * 3.14159 / 180.0));
	// 画直线P1P2和P3P4
	g.DrawLine(GreenPen, x1, -1 * y1, x2, -1 * y2);
	g.DrawLine(GreenPen, x3, -1 * y3, x4, -1 * y4);
	// 画圆弧P2P3
	int x0 = (int)(300 + 120 * Math.Cos(30 * 3.14159 / 180.0));
	int y0 = -1 * (int)(500 + 120 * Math.Sin(30 * 3.14159 / 180.0));
	for (int i = 31; i < 150; i++)
	{
		int x = (int)(300 + 120 * Math.Cos(i * 3.14159 / 180.0));
		int y = -1 * (int)(500 + 120 * Math.Sin(i * 3.14159 / 180.0));
		g.DrawLine(GreenPen, x0, y0, x, y);
		x0 = x;
		y0 = y;
	}

	// 画圆弧P4P1
	x0 = (int)(300 + 200 * Math.Cos(150 * 3.14159 / 180.0));
	y0 = -1 * (int)(300 + 200 * Math.Sin(150 * 3.14159 / 180.0));
	for (int i = 151; i < 390; i++)
	{
		int x = (int)(300 + 200 * Math.Cos(i * 3.14159 / 180.0));
		int y = -1 * (int)(300 + 200 * Math.Sin(i * 3.14159 / 180.0));
		g.DrawLine(GreenPen, x0, y0, x, y);
		x0 = x;
		y0 = y;
	}
}

posted on 2022-11-19 19:58  manber  阅读(308)  评论(0)    收藏  举报

导航