//form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ClassLibrary1;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
// Create points that define curve.
var origin = new Point(400, 400);
Point[] curvePoints = new Point[14];
for (int i = 0; i < curvePoints.Length; i++)
{
curvePoints[i] = my_function.point_position(i + 1, 90 * i, origin);
}
Pen[] pens = new Pen[]
{
new Pen(Color.Red,2),
new Pen(Color.Green,2),
new Pen(Color.Blue,2),
new Pen(Color.Gold,2)
};
GraphicsPath gp = new GraphicsPath();
gp.AddCurve(curvePoints);
for(int i=0;i<4;i++)
{
e.Graphics.DrawPath(pens[i], gp);
gp = rotate_graphic(90, gp, origin);
}
}
private GraphicsPath rotate_graphic(float angle, GraphicsPath g, Point center)
{
Matrix rmatrix = new Matrix(1, 0, 0, 1, 0, 0);
rmatrix.RotateAt(angle, center);
g.Transform(rmatrix);
return g;
}
}
}
---------------------------------------------------------
//class library
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ClassLibrary1
{
public class my_function
{
public static int fibonacci(int n)
{
switch(n)
{
case 1:
return 1;
case 2:
return 1;
default:
return fibonacci(n - 2) + fibonacci(n - 1);
}
}
public static Point point_position(int n, double angle, Point origin)
{
int radius = fibonacci(n);
Point position = origin;
position.X += Convert.ToInt32(radius * Math.Cos(Math.PI * angle / 180));
position.Y += Convert.ToInt32(radius * Math.Sin(Math.PI * angle / 180));
return position;
}
}
}
No comments:
Post a Comment