첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170
using System;
using System.Windows.Media;

#region 회전 매트릭스 구하기 - GetRotateMatrix(angle, centerX, centerY)

/// <summary>
/// 회전 매트릭스 구하기
/// </summary>
/// <param name="angle">각도</param>
/// <param name="centerX">중심 X</param>
/// <param name="centerY">중심 Y</param>
/// <returns>회전 매트릭스</returns>
public Matrix GetRotateMatrix(double angle, double centerX, double centerY)
{
    Matrix matrix1 = GetTranslateMatrix(-centerX, -centerY);

    Matrix matrix2 = GetRotateMatrix(angle);

    Matrix matrix3 = GetTranslateMatrix(centerX, centerY);

    return matrix1 * matrix2 * matrix3;
}

#endregion
#region 이동 매트릭스 구하기 - GetTranslateMatrix(translateX, translateY)

/// <summary>
/// 이동 매트릭스 구하기
/// </summary>
/// <param name="translateX">이동 X</param>
/// <param name="translateY">이동 Y</param>
/// <returns>이동 매트릭스</returns>
private Matrix GetTranslateMatrix(double translateX, double translateY)
{
    Matrix matrix = new Matrix(1, 0, 0, 1, translateX, translateY);

    return matrix;            
}

#endregion
#region 회전 매트릭스 구하기 - GetRotateMatrix(angle)

/// <summary>
/// 회전 매트릭스 구하기
/// </summary>
/// <param name="angle">각도</param>
/// <returns>회전 매트릭스</returns>
private Matrix GetRotateMatrix(double angle)
{
    double radian = angle * (Math.PI / 180d);

    Matrix matrix = new Matrix(Math.Cos(radian), Math.Sin(radian), -Math.Sin(radian), Math.Cos(radian), 0, 0) ;

    return matrix;
}

#endregion
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요